ath10k: refactor ath10k_pci_dump_memory() in preparation for QCA9984 support
PATCH 1/2 ath10k: refactor ath10k_pci_dump_memory() in preparation for QCA9984 support
As QCA9984 needs two region types refactor the code to make it easier add the new types. No functional changes.
--- drivers/net/wireless/ath/ath10k/pci.c | 55 +++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 19 deletions(-)
drivers/net/wireless/ath/ath10k/pci.c +36 -19
@@ -1584,6 +1584,36 @@ static int ath10k_pci_set_ram_config(struct ath10k *ar, u32 config)return 0 ; } +/* if an error happened returns < 0, otherwise the length */ +static int ath10k_pci_dump_memory_generic (struct ath10k *ar, +const struct ath10k_mem_region *current_region, +u8 *buf) +{ +int ret; + +if (current_region->section_table.size >0 ) +/* Copy each section individually. */ +return ath10k_pci_dump_memory_section (ar, + current_region, + buf, + current_region->len); + +/* No individiual memory sections defined so we can +* copy the entire memory region. +*/ + ret =ath10k_pci_diag_read_mem (ar, + current_region->start, + buf, + current_region->len); +if (ret) { +ath10k_warn (ar,"failed to copy ramdump region %s: %d\n" , + current_region->name, ret); +return ret; + } + +return current_region->len; +} +static void ath10k_pci_dump_memory (struct ath10k *ar,struct ath10k_fw_crash_data *crash_data) {
@@ -1642,27 +1672,14 @@ static void ath10k_pci_dump_memory(struct ath10k *ar, buf +=sizeof (*hdr); buf_len -=sizeof (*hdr); -if (current_region->section_table.size >0 ) { -/* Copy each section individually. */ - count =ath10k_pci_dump_memory_section (ar, - current_region, - buf, - current_region->len); - }else { -/* No individiual memory sections defined so we can -* copy the entire memory region. -*/ - ret =ath10k_pci_diag_read_mem (ar, - current_region->start, - buf, - current_region->len); -if (ret) { -ath10k_warn (ar,"failed to copy ramdump region %s: %d\n" , - current_region->name, ret); +switch (current_region->type) { +default : + ret =ath10k_pci_dump_memory_generic (ar, current_region, buf); +if (ret <0 )break ; - } - count = current_region->len; + count = ret; +break ; } hdr->region_type =cpu_to_le32 (current_region->type);
Signature · 1 line
2.7.4
PATCH 2/2 ath10k: add memory dump support QCA9984
From: Anilkumar Kolli <[email protected]>
QCA9984/QCA99X0/QCA4019 chipsets have 8 memory regions, dump all of them to the firmware coredump file. Some of the regions need to be read using ioread() so add new region types for them.
--- drivers/net/wireless/ath/ath10k/coredump.c | 90 ++++++++++++++++++++++++++++++ drivers/net/wireless/ath/ath10k/coredump.h | 2 + drivers/net/wireless/ath/ath10k/pci.c | 43 ++++++++++++++ 3 files changed, 135 insertions(+)
drivers/net/wireless/ath/ath10k/coredump.c +90 -0
@@ -701,6 +701,89 @@ static const struct ath10k_mem_region qca988x_hw20_mem_regions[] = { }, }; +static const struct ath10k_mem_region qca9984_hw10_mem_regions[] = { + { + .type =ATH10K_MEM_REGION_TYPE_DRAM , + .start =0x400000 , + .len =0x80000 , + .name ="DRAM" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_REG , + .start =0x98000 , + .len =0x50000 , + .name ="IRAM" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOSRAM , + .start =0xC0000 , + .len =0x40000 , + .name ="SRAM" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOREG , + .start =0x30000 , + .len =0x7000 , + .name ="APB REG 1" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOREG , + .start =0x3f000 , + .len =0x3000 , + .name ="APB REG 2" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOREG , + .start =0x43000 , + .len =0x3000 , + .name ="WIFI REG" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOREG , + .start =0x4A000 , + .len =0x5000 , + .name ="CE REG" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, + { + .type =ATH10K_MEM_REGION_TYPE_IOREG , + .start =0x80000 , + .len =0x6000 , + .name ="SOC REG" , + .section_table = { + .sections =NULL , + .size =0 , + }, + }, +}; +static const struct ath10k_hw_mem_layout hw_mem_layouts[] = { { .hw_id =QCA6174_HW_1_0_VERSION ,
@@ -758,6 +841,13 @@ static const struct ath10k_hw_mem_layout hw_mem_layouts[] = { .size = ARRAY_SIZE(qca988x_hw20_mem_regions), }, }, + { + .hw_id = QCA9984_HW_1_0_DEV_VERSION, + .region_table = { + .regions = qca9984_hw10_mem_regions, + .size = ARRAY_SIZE(qca9984_hw10_mem_regions), + }, + }, };static u32 ath10k_coredump_get_ramdump_size (struct ath10k *ar)
drivers/net/wireless/ath/ath10k/coredump.h +2 -0
@@ -124,6 +124,8 @@ enum ath10k_mem_region_type {ATH10K_MEM_REGION_TYPE_AXI =3 ,ATH10K_MEM_REGION_TYPE_IRAM1 =4 ,ATH10K_MEM_REGION_TYPE_IRAM2 =5 , +ATH10K_MEM_REGION_TYPE_IOSRAM =6 , + ATH10K_MEM_REGION_TYPE_IOREG = 7, };/* Define a section of the region which should be copied. As not all parts
drivers/net/wireless/ath/ath10k/pci.c +43 -0
61 lines not on this page · raw message
Signature · 1 line
2.7.4
Quoted 4 lines · Kalle Valo
As QCA9984 needs two region types refactor the code to make it easier add the new types. No functional changes.
Signed-off-by Kalle Valo <[email protected]>
2 patches applied to ath-next branch of ath.git, thanks.
10c228843081 ath10k: refactor ath10k_pci_dump_memory() in preparation for QCA9984 support 219cc084c670 ath10k: add memory dump support QCA9984
Signature · 3 lines
https://patchwork.kernel.org/patch/10307431/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Quoted 4 lines · Kalle Valo
As QCA9984 needs two region types refactor the code to make it easier add the new types. No functional changes.
Signed-off-by Kalle Valo <[email protected]>
2 patches applied to ath-next branch of ath.git, thanks.
10c228843081 ath10k: refactor ath10k_pci_dump_memory() in preparation for QCA9984 support 219cc084c670 ath10k: add memory dump support QCA9984
Signature · 9 lines
https://patchwork.kernel.org/patch/10307431/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches _______________________________________________ ath10k mailing list [email protected] http://lists.infradead.org/mailman/listinfo/ath10k