{
        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);
 {
        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);
 }
                                     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);