From patchwork Wed Jan 24 19:04:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: York Sun X-Patchwork-Id: 865428 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="dROjL7Qv"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zRZNv40z4z9s9Y for ; Thu, 25 Jan 2018 06:05:03 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 3A101C21F67; Wed, 24 Jan 2018 19:05:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 7C4D3C21DDF; Wed, 24 Jan 2018 19:04:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 01359C21DDF; Wed, 24 Jan 2018 19:04:56 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00052.outbound.protection.outlook.com [40.107.0.52]) by lists.denx.de (Postfix) with ESMTPS id 9761FC21C62 for ; Wed, 24 Jan 2018 19:04:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=yBdjWMmzegKUF32g9lMFaHWL0bTFxIW28G1KE2k7NNM=; b=dROjL7Qv/8vXFWyQpietFsDFpxpPZ3sBRbmw8OPaoHxHMgMbgI5GTPEwzwqVev1ZAAsbN2JJ3M+UD5YcqrVvjJr4lzv5QF4jHRWXprMUilYa9XYW5xArs0bURshyTEUUaMn9FKhLSPUCXUiyXLtQIX/LEB17llPPl1vt9Sy+dSI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=york.sun@nxp.com; Received: from localhost.localdomain (66.235.19.164) by HE1PR04MB2075.eurprd04.prod.outlook.com (2a01:111:e400:7be9::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Wed, 24 Jan 2018 19:04:52 +0000 From: York Sun To: u-boot@lists.denx.de Date: Wed, 24 Jan 2018 11:04:28 -0800 Message-Id: <1516820670-14505-1-git-send-email-york.sun@nxp.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [66.235.19.164] X-ClientProxiedBy: MWHPR2201CA0060.namprd22.prod.outlook.com (2603:10b6:301:16::34) To HE1PR04MB2075.eurprd04.prod.outlook.com (2a01:111:e400:7be9::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c82f0f46-8c9b-4b77-3076-08d5635d5a58 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR04MB2075; X-Microsoft-Exchange-Diagnostics: 1; HE1PR04MB2075; 3:knT+EPzGl1kML989z0o4hgMwMI4CL9Udwvs4RNhX+RH4v4szFVi47tDqp/Fm7sGWkkBA7drP2OqHj2f4JTpXeLvCbCbkv76oXtKe/iIWHg0dXZqEaVnxopssTlX+hhhQzxg4iky78buN3COvApE0cxGCW5mFSIzkbdX0/bEKuwQh5orO+/NE/70ecpwBX0+Kus2o+EV/W8ZCiN1dZUuLtq9AiDPMfxQgKUPDGwrApi90kmSBMHlz1Xzg29CW1nf5; 25:MSII0WRjlpXsmtbwFoAa2duFLzvpjNjMneW8sscME/M0gPWOwMqpKvaz2l+30OkBVhqbh2/HbE8KQg+KvtBggum92DglUzFRuGDkBUYcidEP2Gu7FTDEWGFca4kAGANNlrEynIY44GhMiikMHHto3yqrkN7u1OM4kOsf9ZLKpFg3Uq9snr4ys+aH5ArUCdywIBdyfrDCGfFMaD2SPCa/Sjqeq+3xzJAr/0jH4t8t1EZyImcXzRp2vKEAZNMs9QYY6D740dYWnFvyexFUb2kR9W0BqegmdjEVyIkD5vsINhFf4vjrz3NIJ4Hf6SbkYHOm59h0Ti+M92IgUJEdufL60Q==; 31:M2pPyIZk2R67wnOXuyelng6TxHwczAbFu0SK2tk0pUwtZAmEfQ1sWDDJfodxeLWZdwXY8sUK75USUohnwkpFVBLtTcsGoYZuuLtw+eEu4dyMUmh6L3Wj8avIi7ZxxxnKdvOx399q0afjQy9TSy5CmePDqxdnTdz+BDS3bJMqDYY8n4R5yOxt2TSjfqT+VP1kSrcyXUweym4DAhJs+NqQJygL31LaA+BXsDLR6vFoqGQ= X-MS-TrafficTypeDiagnostic: HE1PR04MB2075: X-Microsoft-Exchange-Diagnostics: 1; HE1PR04MB2075; 20:NRMf2ehNIwsnIooLA5BKYx4a7Eovxz4ZV/lgJOTGv1nJ3NzYbuWR/BzDgTzK/aZ/S5cAZ/sHt+/uZm/rS3xj2QmdAHJz4kqty9gROwZkp46EknmfZcO+GVRDgZ+XB9N5CRbz62MjRCKqHUyfDgpy9wcvreXc+NqyvF8PV9uAWxtR8Qa/dYz19UPo3V8n6vW0B8nMCHBIcEAdiU2jh5JF8pYMYlJmz+m2WPuj/B+5DojKPzfzJ+N5VUxzUtBMsMUscji+fCo025+FJHdU9j6un2ZJuckf4G2YfrEHB4akTamXstEwBmH3vn1ylTFFS9uXKedpcjyuPjFavsTUQxxKoUJfiF6KeORB45ds4SOKsT+1FEJKcm25P75r9VNi9uxzajYdiS8inofSQu4FlPZd3LicEFui12k05ffiKuUuCkyF7fb4qSNHZil/gYZdq++kQOkYMzEegBKVkt9wn5Faye8N7DYjZSPHJpqlJfrHK8rohClF/kub//rUwDRoSNZV; 4:I4GUyOWpaC/Niv8mQwc+mJfYxIqTOn+0iHfywuJns2pzkO5QiJid3D1VGKUKgzSfXFDeYmrqAosWIIC4CR/VGB1MeaEz2jggf8/4GYVlwC1rYDX3loutsvfm04eKQXPVJuwuZ4xlnbHSgo51b7vrlHYVzTKeKMOe4LnfycIv+qBD5tGSmST9XNjpnSYQt6n4LOgaUJMRofhkzpBhTSqj6qk2k7vqPiraOt3fixcwjwmaghKVuOoufW20G785qqrlxHxm8KqG+rVhO4fe8nhPfQeCmd0TpGMR0obcQ1rxMBe1BAtf89P+8Ki86tWf7qAq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(3231023)(2400081)(944501161)(93006095)(93001095)(10201501046)(6055026)(6041288)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(6072148)(201708071742011); SRVR:HE1PR04MB2075; BCL:0; PCL:0; RULEID:; SRVR:HE1PR04MB2075; X-Forefront-PRVS: 056297E276 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(39380400002)(396003)(366004)(346002)(39860400002)(189003)(199004)(575784001)(86362001)(66066001)(47776003)(50466002)(8936002)(5660300001)(48376002)(81156014)(81166006)(50226002)(68736007)(8676002)(6486002)(52116002)(51416003)(4326008)(6512007)(53936002)(386003)(6506007)(26005)(25786009)(106356001)(105586002)(16586007)(6116002)(3846002)(54906003)(478600001)(16526018)(97736004)(6916009)(6666003)(7736002)(36756003)(316002)(2351001)(2361001)(2906002)(305945005)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR04MB2075; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR04MB2075; 23:N5oahXtGX+vWSTrcHyAQykL8MjgSV3mERB3TusrRc?= v29bpGymcEwBK4WHGmn8/S+Xg0+orhuTW1E+x6SHwStzw2ktqGV2kZ9I5uVWMfFdU4UDFotkEIhkYk1bXDJwW7rjjFyul12zXwkjhpXk6s8JeIoG4cUELu4DOgF/DT9YsTI8OUgykR98HrmRRbWJhrJYwyw7LVTXA8gvPMRAjd6DKi8/OJMfW1wRjK6eiVdXNbGZ1g7hNBqZzedBVXb9J9GOztSpkapQXK7TH0PcfkJvh90r6U7RaZPT5yJy2Ab7aQtXppfPYYe/txEmGsljteAMlltG/9wEaG0EWOHqL4HizolWY3n6jZQ6DlFvkbjipYqOXG1WFV5EYTcZwQ+qO2Bf/M3JKMceaelj/Km0Q9+ofGpMh/iMfsXfDlL4bhEGj+xS6vGxyw6+WRL2BZU0EcrMqzzHOWUq4J7wobovmDYN4nWhPNgpi/36efU6VKvcllo7nOXi5497IgCxo0Dzeec+c+pwqs3CR3OS+aSe/blCbzTMfgNC6g1OhXFCrk2l/87oSaNe/rTcdvCYiC/8pKKNkTyrF0nbRdWafyNrLFl8ZR7jDBedPkHh2AIJRO0BCifOvC+ZbxBdlivDL5b/zUGHO2VX81kxtFiKQODruzCsKKpZ0RkqdXswL7VUz6ymL+kawKvN4416LaOtjdpeYsR/Ky7zTp3FCHK3DGqwPPyRT7edQLAAirgEz9KpCvYSWiIHyT4FrmJ+3uzf6pfAnWSZ4hsxXcm4eYteBEdF7J0lugCNGvlwwcwpDaWsDOWwW5hfJMxbpnQ3TvfwvLtVKAlhqgsDOKo7gE7NDNU5ZRdVfEddbiYYdIK0XdjVeNKmOQNaX+PamxpPcaSxIlM7ceinH0av/9ggLQK9gIsOctEZG46HbHjSy2Qg0CSInEgYAEOoYqzZyDSKm7yRh5G9mujmrXana3yJzWaCRnJHT9IDDho1oBKXHHZDPVW+IgkHytye6++aNmitFjbq533sN79y9TvvZeeYGSj6Ncx7ySacKxjk+16/MZt5/0JRAncW5MYaIrfTAPpul7VUdGxgsotyyzfEGi5/vtOJcFXbBS9q/OOYqNxNv7sz7xwqXNAKNm6JVQwa0XKWzdKmy9ulUjpZHbxbiER+g/Rc+zE1Z7N5A== X-Microsoft-Exchange-Diagnostics: 1; HE1PR04MB2075; 6:HmJg/RFxBKhNXm0MFZfTALuKp+0/wkKczK/G26nrPbDCxWh08EYhEsCNb36X1wDT7iugctTQ0v4bLEadehhR0Ks7+PpAHHOzLksc+m9OzhZzQDHdlC68X0y0H0AXYsXZyyYZloL5DYJapMZI+j4RJm0wZIYpcsIcr7M0lTqiS7xM8B8XBmLs2aDkTpkjMc9zSa944MDS5NL3XhjInZPGDUgkNrc+supIj+CG2zb/5p5umlADcI/8IjG2mbGo5lCOkeObDq3Mu+79PfdOORDq4YCFSODNBoURAquqLbALoCxGRGWX/Qx9nU05Z2tK3SJj9GDctbf9WbZGpn2G4xc7p4kPFjHPQGyTWrg8Bfj5DwE=; 5:c8WudFn/BuBIELVGEcND6mf51gAU4JJm3jQSh8laJthv1MZa+ZX7eFz3nBBl0rz09eo/YD/ZnqzhJ2J9iGK/QN8A0jEAjAth492AwUFiZzRGrVP7w/45luH0yRu4mB4ShE0npOHjdYgNF8CPltZeacoJTJOW7kktEAwwHIdSu+Q=; 24:hOAPySpz6UkUc0OYbf2uKkujeiB9sxpQnPcbch3n+lRfQz6B5Xom8gaucF6czvg9+jxTvCYrCJkIxbJNZJl41rV/JYUKK36QeHkNJcHDFRQ=; 7:bbcg51wZ5WRC08liw9UsWV4RzRRO1YGAZ+QBF6AQ04S1ITMkkKJhvmDBIPMh3bWEo8+e/BoEcf3Mytx1KS8NR8spgfNYK9f9tGTMXUMTqBKQ123faZsb7zqzDe7dQKkx9dwoaKgSUXKFmBl80rMRC5Bja003qkUKO3LFwi7kAQFMcXQ46+xbhPmXqvo+FxtXC3moUZMue2bonjN89VW1TjaHCp0wwXqIFn/Sz4ZIxmtGxQvRst6erHJ+7b8j5pwx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2018 19:04:52.9599 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c82f0f46-8c9b-4b77-3076-08d5635d5a58 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB2075 Subject: [U-Boot] [PATCH v3 1/3] drivers/ddr/fsl: Fix DDR4 RDIMM support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" For DDR4, command/address delay in mode registers and parity latency in timing config register are only needed for UDIMMs, but not RDIMMs. Add additional register rcw_3 for DDR4 RDIMM. Fix mirrored bit for dual rank RDIMMs. Set sdram_cfg_3[DIS_MRS_PAR] for RDIMMs. Use hexadecimal format for printing RCW (register control word) registers. Signed-off-by: York Sun --- Changes in v3: None Changes in v2: None drivers/ddr/fsl/ctrl_regs.c | 32 +++++++++++++++++++++++++------- drivers/ddr/fsl/ddr4_dimm_params.c | 2 ++ drivers/ddr/fsl/interactive.c | 9 +++++++-- include/fsl_ddr_sdram.h | 1 + 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/drivers/ddr/fsl/ctrl_regs.c b/drivers/ddr/fsl/ctrl_regs.c index c0ee858..4a1f397 100644 --- a/drivers/ddr/fsl/ctrl_regs.c +++ b/drivers/ddr/fsl/ctrl_regs.c @@ -732,6 +732,7 @@ static void set_ddr_sdram_rcw(fsl_ddr_cfg_regs_t *ddr, if (popts->rcw_override) { ddr->ddr_sdram_rcw_1 = popts->rcw_1; ddr->ddr_sdram_rcw_2 = popts->rcw_2; + ddr->ddr_sdram_rcw_3 = popts->rcw_3; } else { ddr->ddr_sdram_rcw_1 = common_dimm->rcw[0] << 28 | \ @@ -752,8 +753,12 @@ static void set_ddr_sdram_rcw(fsl_ddr_cfg_regs_t *ddr, common_dimm->rcw[14] << 4 | \ common_dimm->rcw[15]; } - debug("FSLDDR: ddr_sdram_rcw_1 = 0x%08x\n", ddr->ddr_sdram_rcw_1); - debug("FSLDDR: ddr_sdram_rcw_2 = 0x%08x\n", ddr->ddr_sdram_rcw_2); + debug("FSLDDR: ddr_sdram_rcw_1 = 0x%08x\n", + ddr->ddr_sdram_rcw_1); + debug("FSLDDR: ddr_sdram_rcw_2 = 0x%08x\n", + ddr->ddr_sdram_rcw_2); + debug("FSLDDR: ddr_sdram_rcw_3 = 0x%08x\n", + ddr->ddr_sdram_rcw_3); } } @@ -1159,8 +1164,14 @@ static void set_ddr_sdram_mode_9(fsl_ddr_cfg_regs_t *ddr, esdmode5 = 0x00000400; /* Data mask enabled */ } - /* set command/address parity latency */ - if (ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) { + /* + * For DDR3, set C/A latency if address parity is enabled. + * For DDR4, set C/A latency for UDIMM only. For RDIMM the delay is + * handled by register chip and RCW settings. + */ + if ((ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) && + ((CONFIG_FSL_SDRAM_TYPE != SDRAM_TYPE_DDR4) || + !popts->registered_dimm_en)) { if (mclk_ps >= 935) { /* for DDR4-1600/1866/2133 */ esdmode5 |= DDR_MR5_CA_PARITY_LAT_4_CLK; @@ -1193,7 +1204,9 @@ static void set_ddr_sdram_mode_9(fsl_ddr_cfg_regs_t *ddr, esdmode5 = 0x00000400; } - if (ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) { + if ((ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) && + ((CONFIG_FSL_SDRAM_TYPE != SDRAM_TYPE_DDR4) || + !popts->registered_dimm_en)) { if (mclk_ps >= 935) { /* for DDR4-1600/1866/2133 */ esdmode5 |= DDR_MR5_CA_PARITY_LAT_4_CLK; @@ -1965,6 +1978,7 @@ static void set_timing_cfg_6(fsl_ddr_cfg_regs_t *ddr) static void set_timing_cfg_7(const unsigned int ctrl_num, fsl_ddr_cfg_regs_t *ddr, + const memctl_options_t *popts, const common_timing_params_t *common_dimm) { unsigned int txpr, tcksre, tcksrx; @@ -1975,7 +1989,9 @@ static void set_timing_cfg_7(const unsigned int ctrl_num, tcksre = max(5U, picos_to_mclk(ctrl_num, 10000)); tcksrx = max(5U, picos_to_mclk(ctrl_num, 10000)); - if (ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) { + if ((ddr->ddr_sdram_cfg_2 & SDRAM_CFG2_AP_EN) && + ((CONFIG_FSL_SDRAM_TYPE != SDRAM_TYPE_DDR4) || + !popts->registered_dimm_en)) { if (mclk_ps >= 935) { /* parity latency 4 clocks in case of 1600/1866/2133 */ par_lat = 4; @@ -2130,6 +2146,8 @@ static void set_ddr_sdram_cfg_3(fsl_ddr_cfg_regs_t *ddr, rd_pre = popts->quad_rank_present ? 1 : 0; ddr->ddr_sdram_cfg_3 = (rd_pre & 0x1) << 16; + /* Disable MRS on parity error for RDIMMs */ + ddr->ddr_sdram_cfg_3 |= popts->registered_dimm_en ? 1 : 0; debug("FSLDDR: ddr_sdram_cfg_3 = 0x%08x\n", ddr->ddr_sdram_cfg_3); } @@ -2535,7 +2553,7 @@ compute_fsl_memctl_config_regs(const unsigned int ctrl_num, #ifdef CONFIG_SYS_FSL_DDR4 set_ddr_sdram_cfg_3(ddr, popts); set_timing_cfg_6(ddr); - set_timing_cfg_7(ctrl_num, ddr, common_dimm); + set_timing_cfg_7(ctrl_num, ddr, popts, common_dimm); set_timing_cfg_8(ctrl_num, ddr, popts, common_dimm, cas_latency); set_timing_cfg_9(ddr); set_ddr_dq_mapping(ddr, dimm_params); diff --git a/drivers/ddr/fsl/ddr4_dimm_params.c b/drivers/ddr/fsl/ddr4_dimm_params.c index 42834ca..6e26ba8 100644 --- a/drivers/ddr/fsl/ddr4_dimm_params.c +++ b/drivers/ddr/fsl/ddr4_dimm_params.c @@ -179,6 +179,8 @@ unsigned int ddr_compute_dimm_parameters(const unsigned int ctrl_num, case DDR4_SPD_MODULETYPE_RDIMM: /* Registered/buffered DIMMs */ pdimm->registered_dimm = 1; + if (spd->mod_section.registered.reg_map & 0x1) + pdimm->mirrored_dimm = 1; break; case DDR4_SPD_MODULETYPE_UDIMM: diff --git a/drivers/ddr/fsl/interactive.c b/drivers/ddr/fsl/interactive.c index c99bd2f..660060d 100644 --- a/drivers/ddr/fsl/interactive.c +++ b/drivers/ddr/fsl/interactive.c @@ -558,6 +558,7 @@ static void fsl_ddr_options_edit(fsl_ddr_info_t *pinfo, */ CTRL_OPTIONS(twot_en), CTRL_OPTIONS(threet_en), + CTRL_OPTIONS(mirrored_dimm), CTRL_OPTIONS(ap_en), CTRL_OPTIONS(x4_en), CTRL_OPTIONS(bstopre), @@ -568,6 +569,7 @@ static void fsl_ddr_options_edit(fsl_ddr_info_t *pinfo, CTRL_OPTIONS(rcw_override), CTRL_OPTIONS(rcw_1), CTRL_OPTIONS(rcw_2), + CTRL_OPTIONS(rcw_3), CTRL_OPTIONS(ddr_cdr1), CTRL_OPTIONS(ddr_cdr2), CTRL_OPTIONS(tfaw_window_four_activates_ps), @@ -660,6 +662,7 @@ static void print_fsl_memctl_config_regs(const fsl_ddr_cfg_regs_t *ddr) CFG_REGS(ddr_sr_cntr), CFG_REGS(ddr_sdram_rcw_1), CFG_REGS(ddr_sdram_rcw_2), + CFG_REGS(ddr_sdram_rcw_3), CFG_REGS(ddr_cdr1), CFG_REGS(ddr_cdr2), CFG_REGS(dq_map_0), @@ -750,6 +753,7 @@ static void fsl_ddr_regs_edit(fsl_ddr_info_t *pinfo, CFG_REGS(ddr_sr_cntr), CFG_REGS(ddr_sdram_rcw_1), CFG_REGS(ddr_sdram_rcw_2), + CFG_REGS(ddr_sdram_rcw_3), CFG_REGS(ddr_cdr1), CFG_REGS(ddr_cdr2), CFG_REGS(dq_map_0), @@ -857,8 +861,9 @@ static void print_memctl_options(const memctl_options_t *popts) CTRL_OPTIONS(wrlvl_start), CTRL_OPTIONS_HEX(cswl_override), CTRL_OPTIONS(rcw_override), - CTRL_OPTIONS(rcw_1), - CTRL_OPTIONS(rcw_2), + CTRL_OPTIONS_HEX(rcw_1), + CTRL_OPTIONS_HEX(rcw_2), + CTRL_OPTIONS_HEX(rcw_3), CTRL_OPTIONS_HEX(ddr_cdr1), CTRL_OPTIONS_HEX(ddr_cdr2), CTRL_OPTIONS(tfaw_window_four_activates_ps), diff --git a/include/fsl_ddr_sdram.h b/include/fsl_ddr_sdram.h index 6a1f04b..de7ef9b 100644 --- a/include/fsl_ddr_sdram.h +++ b/include/fsl_ddr_sdram.h @@ -408,6 +408,7 @@ typedef struct memctl_options_s { unsigned int rcw_override; unsigned int rcw_1; unsigned int rcw_2; + unsigned int rcw_3; /* control register 1 */ unsigned int ddr_cdr1; unsigned int ddr_cdr2;