Tingwei Zhang | 525f103 | 2018-03-05 19:28:08 +0800 | [diff] [blame] | 1 | /* Copyright (c) 2012, 2014-2018, The Linux Foundation. All rights reserved. |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 2 | * |
| 3 | * This program is free software; you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License version 2 and |
| 5 | * only version 2 as published by the Free Software Foundation. |
| 6 | * |
| 7 | * This program is distributed in the hope that it will be useful, |
| 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 10 | * GNU General Public License for more details. |
| 11 | */ |
| 12 | |
| 13 | #ifndef __MSM_MEMORY_DUMP_H |
| 14 | #define __MSM_MEMORY_DUMP_H |
| 15 | |
| 16 | #include <linux/types.h> |
| 17 | |
| 18 | enum dump_client_type { |
| 19 | MSM_CPU_CTXT = 0, |
| 20 | MSM_L1_CACHE, |
| 21 | MSM_L2_CACHE, |
| 22 | MSM_OCMEM, |
| 23 | MSM_TMC_ETFETB, |
| 24 | MSM_ETM0_REG, |
| 25 | MSM_ETM1_REG, |
| 26 | MSM_ETM2_REG, |
| 27 | MSM_ETM3_REG, |
| 28 | MSM_TMC0_REG, /* TMC_ETR */ |
| 29 | MSM_TMC1_REG, /* TMC_ETF */ |
| 30 | MSM_LOG_BUF, |
| 31 | MSM_LOG_BUF_FIRST_IDX, |
| 32 | MAX_NUM_CLIENTS, |
| 33 | }; |
| 34 | |
| 35 | struct msm_client_dump { |
| 36 | enum dump_client_type id; |
| 37 | unsigned long start_addr; |
| 38 | unsigned long end_addr; |
| 39 | }; |
| 40 | |
| 41 | #ifdef CONFIG_QCOM_MEMORY_DUMP |
| 42 | extern int msm_dump_tbl_register(struct msm_client_dump *client_entry); |
| 43 | #else |
| 44 | static inline int msm_dump_tbl_register(struct msm_client_dump *entry) |
| 45 | { |
| 46 | return -EIO; |
| 47 | } |
| 48 | #endif |
| 49 | |
| 50 | |
| 51 | #if defined(CONFIG_QCOM_MEMORY_DUMP) || defined(CONFIG_QCOM_MEMORY_DUMP_V2) |
| 52 | extern uint32_t msm_dump_table_version(void); |
| 53 | #else |
| 54 | static inline uint32_t msm_dump_table_version(void) |
| 55 | { |
| 56 | return 0; |
| 57 | } |
| 58 | #endif |
| 59 | |
| 60 | #define MSM_DUMP_MAKE_VERSION(ma, mi) ((ma << 20) | mi) |
| 61 | #define MSM_DUMP_MAJOR(val) (val >> 20) |
| 62 | #define MSM_DUMP_MINOR(val) (val & 0xFFFFF) |
| 63 | |
| 64 | |
Channagoud Kadabi | e5f8bcf | 2017-05-31 14:13:49 -0700 | [diff] [blame] | 65 | #define MAX_NUM_ENTRIES 0x150 |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 66 | |
| 67 | enum msm_dump_data_ids { |
| 68 | MSM_DUMP_DATA_CPU_CTX = 0x00, |
| 69 | MSM_DUMP_DATA_L1_INST_CACHE = 0x60, |
| 70 | MSM_DUMP_DATA_L1_DATA_CACHE = 0x80, |
| 71 | MSM_DUMP_DATA_ETM_REG = 0xA0, |
| 72 | MSM_DUMP_DATA_L2_CACHE = 0xC0, |
| 73 | MSM_DUMP_DATA_L3_CACHE = 0xD0, |
| 74 | MSM_DUMP_DATA_OCMEM = 0xE0, |
| 75 | MSM_DUMP_DATA_CNSS_WLAN = 0xE1, |
| 76 | MSM_DUMP_DATA_WIGIG = 0xE2, |
| 77 | MSM_DUMP_DATA_PMIC = 0xE4, |
| 78 | MSM_DUMP_DATA_DBGUI_REG = 0xE5, |
| 79 | MSM_DUMP_DATA_DCC_REG = 0xE6, |
| 80 | MSM_DUMP_DATA_DCC_SRAM = 0xE7, |
| 81 | MSM_DUMP_DATA_MISC = 0xE8, |
| 82 | MSM_DUMP_DATA_VSENSE = 0xE9, |
| 83 | MSM_DUMP_DATA_RPM = 0xEA, |
| 84 | MSM_DUMP_DATA_SCANDUMP = 0xEB, |
Satyajit Desai | a6cc273 | 2017-04-04 14:30:41 -0700 | [diff] [blame] | 85 | MSM_DUMP_DATA_RPMH = 0xEC, |
Channagoud Kadabi | 28efdd5 | 2017-11-06 11:37:08 -0800 | [diff] [blame] | 86 | MSM_DUMP_DATA_FCM = 0xEE, |
Lingutla Chandrasekhar | a38f139 | 2017-09-12 19:47:22 +0530 | [diff] [blame] | 87 | MSM_DUMP_DATA_POWER_REGS = 0xED, |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 88 | MSM_DUMP_DATA_TMC_ETF = 0xF0, |
Satyajit Desai | 267d857 | 2017-10-26 15:21:07 -0700 | [diff] [blame] | 89 | MSM_DUMP_DATA_TPDM_SWAO_MCMB = 0xF2, |
Tingwei Zhang | 525f103 | 2018-03-05 19:28:08 +0800 | [diff] [blame] | 90 | MSM_DUMP_DATA_TMC_ETR_REG = 0x100, |
| 91 | MSM_DUMP_DATA_TMC_ETF_REG = 0x101, |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 92 | MSM_DUMP_DATA_LOG_BUF = 0x110, |
| 93 | MSM_DUMP_DATA_LOG_BUF_FIRST_IDX = 0x111, |
Satyajit Desai | a6cc273 | 2017-04-04 14:30:41 -0700 | [diff] [blame] | 94 | MSM_DUMP_DATA_SCANDUMP_PER_CPU = 0x130, |
Channagoud Kadabi | e5f8bcf | 2017-05-31 14:13:49 -0700 | [diff] [blame] | 95 | MSM_DUMP_DATA_LLCC_PER_INSTANCE = 0x140, |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 96 | MSM_DUMP_DATA_MAX = MAX_NUM_ENTRIES, |
| 97 | }; |
| 98 | |
| 99 | enum msm_dump_table_ids { |
| 100 | MSM_DUMP_TABLE_APPS, |
| 101 | MSM_DUMP_TABLE_MAX = MAX_NUM_ENTRIES, |
| 102 | }; |
| 103 | |
| 104 | enum msm_dump_type { |
| 105 | MSM_DUMP_TYPE_DATA, |
| 106 | MSM_DUMP_TYPE_TABLE, |
| 107 | }; |
| 108 | |
| 109 | struct msm_dump_data { |
| 110 | uint32_t version; |
| 111 | uint32_t magic; |
| 112 | char name[32]; |
| 113 | uint64_t addr; |
| 114 | uint64_t len; |
| 115 | uint32_t reserved; |
| 116 | }; |
| 117 | |
| 118 | struct msm_dump_entry { |
| 119 | uint32_t id; |
| 120 | char name[32]; |
| 121 | uint32_t type; |
| 122 | uint64_t addr; |
| 123 | }; |
| 124 | |
Tingwei Zhang | 525f103 | 2018-03-05 19:28:08 +0800 | [diff] [blame] | 125 | struct dump_vaddr_entry { |
| 126 | uint32_t id; |
| 127 | void *dump_vaddr; |
| 128 | struct msm_dump_data *dump_data_vaddr; |
| 129 | }; |
| 130 | |
| 131 | struct msm_mem_dump_vaddr_tbl { |
| 132 | uint8_t num_node; |
| 133 | struct dump_vaddr_entry *entries; |
| 134 | }; |
| 135 | |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 136 | #ifdef CONFIG_QCOM_MEMORY_DUMP_V2 |
| 137 | extern int msm_dump_data_register(enum msm_dump_table_ids id, |
| 138 | struct msm_dump_entry *entry); |
Satyajit Desai | 9276f834 | 2017-10-26 15:01:55 -0700 | [diff] [blame] | 139 | |
Tingwei Zhang | 525f103 | 2018-03-05 19:28:08 +0800 | [diff] [blame] | 140 | extern struct dump_vaddr_entry *get_msm_dump_ptr(enum msm_dump_data_ids id); |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 141 | #else |
| 142 | static inline int msm_dump_data_register(enum msm_dump_table_ids id, |
| 143 | struct msm_dump_entry *entry) |
| 144 | { |
| 145 | return -EINVAL; |
| 146 | } |
Satyajit Desai | 9276f834 | 2017-10-26 15:01:55 -0700 | [diff] [blame] | 147 | |
| 148 | static inline void *get_msm_dump_ptr(enum msm_dump_data_ids id) |
| 149 | { |
| 150 | return NULL; |
| 151 | } |
Satyajit Desai | 92d6e0c | 2016-08-08 18:01:05 -0700 | [diff] [blame] | 152 | #endif |
| 153 | |
| 154 | #endif |