iwlwifi: dbg_ini: add memory offset to the base address of a memory region
authorShahar S Matityahu <shahar.s.matityahu@intel.com>
Sun, 17 Feb 2019 15:37:27 +0000 (17:37 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 3 Apr 2019 08:19:57 +0000 (11:19 +0300)
Add the offset to the base address of a memory region to show the actual
addresses being read.

Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/dbg.c

index 4beec863197e447d93beb184d021ecb761fd4d8b..78bca27b7809fb6b3ab1a99b9e521581655164d3 100644 (file)
@@ -1049,14 +1049,14 @@ static int iwl_dump_ini_prph_iter(struct iwl_fw_runtime *fwrt,
 {
        struct iwl_fw_ini_error_dump_range *range = range_ptr;
        __le32 *val = range->data;
-       u32 addr, prph_val, offset = le32_to_cpu(reg->offset);
+       u32 prph_val;
+       u32 addr = le32_to_cpu(reg->start_addr[idx]) + le32_to_cpu(reg->offset);
        int i;
 
-       range->start_addr = reg->start_addr[idx];
+       range->start_addr = cpu_to_le32(addr);
        range->range_data_size = reg->internal.range_data_size;
        for (i = 0; i < le32_to_cpu(reg->internal.range_data_size); i += 4) {
-               addr = le32_to_cpu(range->start_addr) + i;
-               prph_val = iwl_read_prph(fwrt->trans, addr + offset);
+               prph_val = iwl_read_prph(fwrt->trans, addr + i);
                if (prph_val == 0x5a5a5a5a)
                        return -EBUSY;
                *val++ = cpu_to_le32(prph_val);
@@ -1071,16 +1071,13 @@ static int iwl_dump_ini_csr_iter(struct iwl_fw_runtime *fwrt,
 {
        struct iwl_fw_ini_error_dump_range *range = range_ptr;
        __le32 *val = range->data;
-       u32 addr, offset = le32_to_cpu(reg->offset);
+       u32 addr = le32_to_cpu(reg->start_addr[idx]) + le32_to_cpu(reg->offset);
        int i;
 
-       range->start_addr = reg->start_addr[idx];
+       range->start_addr = cpu_to_le32(addr);
        range->range_data_size = reg->internal.range_data_size;
-       for (i = 0; i < le32_to_cpu(reg->internal.range_data_size); i += 4) {
-               addr = le32_to_cpu(range->start_addr) + i;
-               *val++ = cpu_to_le32(iwl_trans_read32(fwrt->trans,
-                                                     addr + offset));
-       }
+       for (i = 0; i < le32_to_cpu(reg->internal.range_data_size); i += 4)
+               *val++ = cpu_to_le32(iwl_trans_read32(fwrt->trans, addr + i));
 
        return sizeof(*range) + le32_to_cpu(range->range_data_size);
 }
@@ -1090,12 +1087,11 @@ static int iwl_dump_ini_dev_mem_iter(struct iwl_fw_runtime *fwrt,
                                     void *range_ptr, int idx)
 {
        struct iwl_fw_ini_error_dump_range *range = range_ptr;
-       u32 addr, offset = le32_to_cpu(reg->offset);
+       u32 addr = le32_to_cpu(reg->start_addr[idx]) + le32_to_cpu(reg->offset);
 
-       range->start_addr = reg->start_addr[idx];
-       addr = le32_to_cpu(range->start_addr);
+       range->start_addr = cpu_to_le32(addr);
        range->range_data_size = reg->internal.range_data_size;
-       iwl_trans_read_mem_bytes(fwrt->trans, addr + offset, range->data,
+       iwl_trans_read_mem_bytes(fwrt->trans, addr, range->data,
                                 le32_to_cpu(reg->internal.range_data_size));
 
        return sizeof(*range) + le32_to_cpu(range->range_data_size);