ddr: marvell: a38x: fix memory size calculation using 32bit bus width
authorMoti Buskila <motib@marvell.com>
Fri, 19 Feb 2021 16:11:15 +0000 (17:11 +0100)
committerStefan Roese <sr@denx.de>
Fri, 26 Feb 2021 09:22:29 +0000 (10:22 +0100)
commit ab9240402a70cc02496683971779e75eff410ab4 upstream.

- function mv_ddr_spd_die_capacity_user_get() has a bug,
  since it insert a user memory enum to it,
  instead of SPD memory enum (which are different)
- fix: remove mv_ddr_spd_die_capacity_user_get() function.
- memory size with 64 and 32 bit already calculated correctly
  at mv_ddr_mem_sz_per_cs_get() function

Signed-off-by: Moti Buskila <motib@marvell.com>
Reviewed-by: Stefan Chulski <Stefan.Chulski@cavium.com>
Reviewed-by: Alex Leibovich <alexl@marvell.com>
Reviewed-by: Kostya Porotchkin <Kostya.Porotchkin@cavium.com>
Signed-off-by: Marek BehĂșn <marek.behun@nic.cz>
Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
drivers/ddr/marvell/a38x/mv_ddr_spd.c
drivers/ddr/marvell/a38x/mv_ddr_spd.h
drivers/ddr/marvell/a38x/mv_ddr_topology.c

index cb90d30..04dbfe9 100644 (file)
@@ -217,11 +217,6 @@ enum mv_ddr_die_capacity mv_ddr_spd_die_capacity_get(union mv_ddr_spd_data *spd_
        return ret_val;
 }
 
-void mv_ddr_spd_die_capacity_user_get(union mv_ddr_spd_data *spd_data, enum mv_ddr_die_capacity capacity)
-{
-       spd_data->byte_fields.byte_4.bit_fields.die_capacity = capacity;
-}
-
 unsigned char mv_ddr_spd_mem_mirror_get(union mv_ddr_spd_data *spd_data)
 {
        unsigned char mem_mirror = spd_data->byte_fields.byte_131.bit_fields.rank_1_mapping;
index ee35377..b4bfef3 100644 (file)
@@ -277,7 +277,6 @@ union mv_ddr_spd_data {
 int mv_ddr_spd_timing_calc(union mv_ddr_spd_data *spd_data, unsigned int timing_data[]);
 enum mv_ddr_dev_width mv_ddr_spd_dev_width_get(union mv_ddr_spd_data *spd_data);
 enum mv_ddr_die_capacity mv_ddr_spd_die_capacity_get(union mv_ddr_spd_data *spd_data);
-void mv_ddr_spd_die_capacity_user_get(union mv_ddr_spd_data *spd_data, enum mv_ddr_die_capacity capacity);
 unsigned char mv_ddr_spd_mem_mirror_get(union mv_ddr_spd_data *spd_data);
 unsigned char mv_ddr_spd_cs_bit_mask_get(union mv_ddr_spd_data *spd_data);
 unsigned char mv_ddr_spd_dev_type_get(union mv_ddr_spd_data *spd_data);
index 3feb65e..31711fd 100644 (file)
@@ -74,10 +74,6 @@ int mv_ddr_topology_map_update(void)
                /* update device width in topology map */
                iface_params->bus_width = mv_ddr_spd_dev_width_get(&tm->spd_data);
 
-               /* overwrite SPD configuration, with what the user set */
-               if (tm->bus_act_mask == MV_DDR_32BIT_ECC_PUP8_BUS_MASK)
-                       mv_ddr_spd_die_capacity_user_get(&tm->spd_data, tm->interface_params[0].memory_size);
-
                /* update die capacity in topology map */
                iface_params->memory_size = mv_ddr_spd_die_capacity_get(&tm->spd_data);