mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-19 05:31:31 +02:00
ram: k3-ddrss: Setup ECC region start and range
Setup the ECC region's start and range using the device private data, ddrss->ddr_bank_base[0] and ddrss->ddr_ram_size. Also, move start and range of ECC regions from 32 bits to 64 bits to accommodate for DDR greater than or equal to 4GB. Signed-off-by: Santhosh Kumar K <s-k6@ti.com>
This commit is contained in:
parent
22ce56a3eb
commit
39d66893ef
@ -121,8 +121,8 @@ struct k3_msmc {
|
||||
#define K3_DDRSS_MAX_ECC_REGIONS 3
|
||||
|
||||
struct k3_ddrss_ecc_region {
|
||||
u32 start;
|
||||
u32 range;
|
||||
u64 start;
|
||||
u64 range;
|
||||
};
|
||||
|
||||
struct k3_ddrss_desc {
|
||||
@ -546,7 +546,7 @@ void k3_lpddr4_start(struct k3_ddrss_desc *ddrss)
|
||||
}
|
||||
}
|
||||
|
||||
static void k3_ddrss_set_ecc_range_r0(u32 base, u32 start_address, u32 size)
|
||||
static void k3_ddrss_set_ecc_range_r0(u32 base, u64 start_address, u64 size)
|
||||
{
|
||||
writel((start_address) >> 16, base + DDRSS_ECC_R0_STR_ADDR_REG);
|
||||
writel((start_address + size - 1) >> 16, base + DDRSS_ECC_R0_END_ADDR_REG);
|
||||
@ -722,13 +722,13 @@ static void k3_ddrss_lpddr4_ecc_calc_reserved_mem(struct k3_ddrss_desc *ddrss)
|
||||
|
||||
static void k3_ddrss_lpddr4_ecc_init(struct k3_ddrss_desc *ddrss)
|
||||
{
|
||||
u32 ecc_region_start = ddrss->ecc_regions[0].start;
|
||||
u32 ecc_range = ddrss->ecc_regions[0].range;
|
||||
u64 ecc_region_start = ddrss->ecc_regions[0].start;
|
||||
u64 ecc_range = ddrss->ecc_regions[0].range;
|
||||
u32 base = (u32)ddrss->ddrss_ss_cfg;
|
||||
u32 val;
|
||||
|
||||
/* Only Program region 0 which covers full ddr space */
|
||||
k3_ddrss_set_ecc_range_r0(base, ecc_region_start - gd->ram_base, ecc_range);
|
||||
k3_ddrss_set_ecc_range_r0(base, ecc_region_start - ddrss->ddr_bank_base[0], ecc_range);
|
||||
|
||||
/* Enable ECC, RMW, WR_ALLOC */
|
||||
writel(DDRSS_ECC_CTRL_REG_ECC_EN | DDRSS_ECC_CTRL_REG_RMW_EN |
|
||||
@ -794,8 +794,8 @@ static int k3_ddrss_probe(struct udevice *dev)
|
||||
k3_ddrss_lpddr4_ecc_calc_reserved_mem(ddrss);
|
||||
|
||||
/* Always configure one region that covers full DDR space */
|
||||
ddrss->ecc_regions[0].start = gd->ram_base;
|
||||
ddrss->ecc_regions[0].range = gd->ram_size - ddrss->ecc_reserved_space;
|
||||
ddrss->ecc_regions[0].start = ddrss->ddr_bank_base[0];
|
||||
ddrss->ecc_regions[0].range = ddrss->ddr_ram_size - ddrss->ecc_reserved_space;
|
||||
k3_ddrss_lpddr4_ecc_init(ddrss);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user