From 291adf521a54a365e54964bff4dae53d51c65936 Mon Sep 17 00:00:00 2001 From: Pankit Garg Date: Tue, 13 Jul 2021 13:40:06 +0530 Subject: [PATCH] feat(nxp-ddr): add workaround for errata A050958 Set the receiver gain to max value to recover cold temp marginality issue for phy-gen2 Signed-off-by: Pankit Garg Signed-off-by: Jiafei Pan Change-Id: If639fa3ed404cf6e1b8abcc2b7137db1fdd0b2c2 --- drivers/nxp/ddr/nxp-ddr/ddr.mk | 6 +++++- drivers/nxp/ddr/phy-gen2/phy.c | 6 +++++- plat/nxp/common/soc_errata/errata.c | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/nxp/ddr/nxp-ddr/ddr.mk b/drivers/nxp/ddr/nxp-ddr/ddr.mk index 6bdd947c2..f827a1b8d 100644 --- a/drivers/nxp/ddr/nxp-ddr/ddr.mk +++ b/drivers/nxp/ddr/nxp-ddr/ddr.mk @@ -1,5 +1,5 @@ # -# Copyright 2021 NXP +# Copyright 2021-2022 NXP # # SPDX-License-Identifier: BSD-3-Clause # @@ -19,6 +19,10 @@ ifeq (${ERRATA_DDR_A050450}, 1) $(eval $(call add_define,ERRATA_DDR_A050450)) endif +ifeq (${ERRATA_DDR_A050958}, 1) +$(eval $(call add_define,ERRATA_DDR_A050958)) +endif + endif ifeq ($(PLAT_DDR_PHY), PHY_GEN1) diff --git a/drivers/nxp/ddr/phy-gen2/phy.c b/drivers/nxp/ddr/phy-gen2/phy.c index 9c84b00f7..7dbe3a394 100644 --- a/drivers/nxp/ddr/phy-gen2/phy.c +++ b/drivers/nxp/ddr/phy-gen2/phy.c @@ -1,5 +1,5 @@ /* - * Copyright 2021 NXP + * Copyright 2021-2022 NXP * SPDX-License-Identifier: BSD-3-Clause * */ @@ -1673,6 +1673,10 @@ static void prog_dq_dqs_rcv_cntrl(uint16_t *phy, int sel_analog_vref = 1; uint32_t addr; +#ifdef ERRATA_DDR_A050958 + gain_curr_adj_defval = 0x1f; +#endif + dq_dqs_rcv_cntrl = gain_curr_adj_defval << csr_gain_curr_adj_lsb | major_mode_dbyte << csr_major_mode_dbyte_lsb | dfe_ctrl_defval << csr_dfe_ctrl_lsb | diff --git a/plat/nxp/common/soc_errata/errata.c b/plat/nxp/common/soc_errata/errata.c index 59363e025..33e9604ca 100644 --- a/plat/nxp/common/soc_errata/errata.c +++ b/plat/nxp/common/soc_errata/errata.c @@ -38,4 +38,7 @@ void soc_errata(void) #if ERRATA_DDR_A050450 INFO("SoC workaround for DDR Errata A050450 was applied\n"); #endif +#if ERRATA_DDR_A050958 + INFO("SoC workaround for DDR Errata A050958 was applied\n"); +#endif }