From patchwork Wed Sep 21 22:51:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: York Sun X-Patchwork-Id: 673093 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3sfbLQ5dWXz9sCp for ; Thu, 22 Sep 2016 09:24:29 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id A1014A7622; Thu, 22 Sep 2016 01:24:25 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lvW0RGa3Ky2y; Thu, 22 Sep 2016 01:24:25 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 32E66A760C; Thu, 22 Sep 2016 01:24:25 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 02BC9A760C for ; Thu, 22 Sep 2016 01:24:21 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P3NYhHvDJdOu for ; Thu, 22 Sep 2016 01:24:20 +0200 (CEST) X-Greylist: delayed 1973 seconds by postgrey-1.34 at theia; Thu, 22 Sep 2016 01:24:17 CEST X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0077.outbound.protection.outlook.com [104.47.37.77]) by theia.denx.de (Postfix) with ESMTPS id 1E988A760A for ; Thu, 22 Sep 2016 01:24:17 +0200 (CEST) Received: from BN3PR0301CA0063.namprd03.prod.outlook.com (10.160.152.159) by CO2PR03MB2230.namprd03.prod.outlook.com (10.166.92.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.639.5; Wed, 21 Sep 2016 22:51:25 +0000 Received: from BY2FFO11FD012.protection.gbl (2a01:111:f400:7c0c::105) by BN3PR0301CA0063.outlook.office365.com (2a01:111:e400:401e::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.639.5 via Frontend Transport; Wed, 21 Sep 2016 22:51:24 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD012.mail.protection.outlook.com (10.1.14.130) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.629.5 via Frontend Transport; Wed, 21 Sep 2016 22:51:24 +0000 Received: from oslab-l16.am.freescale.net ([10.213.174.186]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u8LMpL8Z007956; Wed, 21 Sep 2016 15:51:23 -0700 From: York Sun To: Date: Wed, 21 Sep 2016 15:51:15 -0700 Message-ID: <1474498278-1637-3-git-send-email-york.sun@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1474498278-1637-1-git-send-email-york.sun@nxp.com> References: <1474498278-1637-1-git-send-email-york.sun@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131189718845641623; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(76176999)(189998001)(50986999)(68736007)(87936001)(48376002)(97736004)(81156014)(50466002)(2906002)(81166006)(19580395003)(19580405001)(5003940100001)(4326007)(77096005)(2950100001)(8676002)(626004)(47776003)(11100500001)(5660300001)(106466001)(33646002)(92566002)(229853001)(110136003)(85426001)(36756003)(2351001)(7846002)(305945005)(50226002)(8936002)(86362001)(575784001)(8666005)(586003)(105606002)(356003)(104016004)(7059030); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR03MB2230; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD012; 1:jSJ65pLVXF4xoFoNMOKT9h2p1/mPgRKbELbfJBqS2/8z8GL34MmaAnTnszhFajdicRvchmgNUWm+FgsjgBIfotoyD7jeqnuDBiNzfQkcC5XsDmIga2Vn9KNaoZTrJI4jNjHQ1TDX1ZMovrIUR/sVJhcRpTiqeFYA0Ml2zmESNamstN8ZfDmuiHJcKxylP7Gy+k0V80ePftK8qFWDLqJ+au2HOXJo+zxEJCCX3vP4ZCFNI6CXw9Akmc34tLLmzZZAS17UBT/Md6qJUovScUP9gAcA/mnj/PnrCrAXdGH9WTLLHebWE30QwB+rD6vHkg0OWPAXkOJxzb0Gxek/MB+9GCeTa1gc8n9lNyjMluHVLk1SKqRIGOmT+PSEt1qZGUXX2AksyHaw76/c0/oyJHKGdr8EZygV/VLaZopx4MZxat+Thv+eColfDgtuKXkgSU/udf92BX6tRmiYWRwxEL9BbtYGoKLTcXHh1V3asmyQIvU/a23jfe4QRxUx2wR72TAiKQUQmQimeKEf5WubkK+CaI17XUfo3BcF2leWOjiaUPsWiGzZIbFV0I/NHeoifEKa50wjnAAzjdHEI5J4gqoqOG6KIz2ckOT/wfUn1XZDphx4bW2kKEME9vRG5c0adsUJeH0I5hlkwjr7Xar8nDImD47f5evgY34z50HqNv8K4CCN8C1pFYrChrup80e0mzCIfgCuv9rG/BeYc2xb6dlfsUTwbYJ9EjRNQ3LtC+tEbJ8= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 9b2eddb6-c843-443a-e72e-08d3e271d05b X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2230; 2:JIVL8o49lcKb6ZNs8EBs9Ldl/AOEZnP3zy2vMHij+wkv5rLgRA18+fdNrv595YwImDOovCapiRFXWbfhFJbxCt1wZdtXnK9Zc4Mv7bBCd815dY3w6SLAU/M+a6FO7yX5wBEijKfHPrObFB+GzGip73naJRkh3cuCtMPCa8B06/QXCk9aDc4MqdStovBangXV; 3:0hjHNMwZTW8/mLgLlUkQhYXcbHO4hE80edtemaxfj+k1Ckgke2/ympiNPe+H+4RAVH0pqHsBVtgcNjST2P6kIVLPCtrfIgNue8C0WyjqQ3ffxNswHP5XH8ymHf4Hk+gZ/m/90ABjmJFLANdN+tBEL/OE3AQ1jitK1nfTc6mvCriaLeoFY8xkOdHB7nFE7INI/FBgPYhKlumUull52R3PJgtLVxcxvVAdEdPHrkiGuLo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CO2PR03MB2230; X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2230; 25:77aeiWpidiR4hiV3W4idswSfNsU8MT5u8XZ7ZcubpkYSiYPmGWHIqCmw0t/lP0+t3YhtraAbduFYtY6bb4f1+6VV7NEfQCLemrgunEVo/Bnj3o099MREtcJeed+GZ9d/35b+Ajp4zc4QBoaXHSOre25PvvU8gHHH7IiCYwwfLXQzBIVSO1uEexImzlXBoheyE7wnVdoT+QbmzhPHX2bAvR6wuXa90uVt0L38efyYymf8+MJ/V/1u0cMQlBHPrPwq1o0UNqDre7GHer/IlRYPVDzmsAE+ZLgAyAx5T7sAP4WFUUdB2ThEkdbnWEyBk07PnXuDxGEj3FPX/RWPfvk7QWMGPHmgEsAB1MgAO6bMb0QMPF7/NfXI+F7tAuOSpR/qz6Rn3J3QPz16Je66l60OGeKJwO27XxFQ+WOXDlerKtsgD0qZl6cxp26Ehthq5op7bJ2ptUZWNIv7Adw1iDyHzSGM0UXkbb1YmqquNXPX2TPZK7DQy3F1aadMVc8EO2MCYYki2p+frQcqTwSCnsAXQ/qH/tUgjrSsq5Hw7uwkvypwn2e9P0cgGfsek8989aKsv1GkO7Av93OUwZdvMZ0rwGa7js2JBRsURLHyZG8JbhHwp3cZZgvbsJHGTD/tzB2ar8Ulzi01qz87UYMjqN193M46jWbvfJeMSSJkmAXFHjKiToxKEML+GKKb523oAStrKJtpf+lkaSi11YUb6VB+M577WLN0viWbJJKRRf2xZd7XNvuFF0G6fiZjr81YRAmAle2Q35vXLU8wVRjd2z+o2Q== X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2230; 31:HxixxaQUrE3IR61Tazk09ujtP1ez6BBqDFGWEiC7ga1h5X9l1WwntjlPdg9tfTmKCplYBE1LiVZRMycENxJ50Ay6j6cLpy7rpc6KUrQcAJpCBiWq2+WQKEjoWGtB5WPWPh2Z/54pJCYqllXUy8zcYoMwnRJoQo8IS00C68XJCD/iS99Uj+5AkHY8dfuTPb3t2cG2cvtc+rRLnmCVACn3ZfE1zCZWZhRZmmQZT3QnNvY=; 4:8nxX1tIKR7ZSjjojWRiCLjiWFkp+9hgEVLKHjJF0v2tydaBRbJ5gNp/LL3WxxwhroUOlgxi/pF6oVdq5TcQBD5vt9XuGKNBs8A4LLDB29KlYlf7D5nNCluC6cEmgfAbeh2Jbx9YpXKjmuNcP/Ca+0v3/uHlTk92OEHOkaQs7xCjze42ACUmxXIUIVWqNRM2XXnMiRiLgoA2yutS9D68Mp673tU52ugmYrdjfTSicTIXvnGnPjygOuqCXHA0QCEPsEoHUYc1M95BFJQqlzNsl1x+ITlxiBTxW78ARVgy0+AdbeqQbmTfmtjb6ZQraZ6b3wXaHPQOXjYqSA1yuIKl4CQihqwLAFExxVSMKELyrhJCPaIijfn40RvklU1XIevuRRfywqYkz0oYa/iLCVJfQUhonnwMz9h1MBdM8AMcJ2dwVcHmY00eMLs7yBngoLJGC6BwbQsdq/5aD2SNMaREGtujb/x0ereLLDy/z1ppBEzhVd/TR+Ubuyn+XkkCSTIt81viOcqFdZz9N+aLX0MzwEQ6y9ZsK8F0iS+Hol2KLxFc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(13015025)(13017025)(13023025)(13024025)(13018025)(3002001)(10201501046)(6055026); SRVR:CO2PR03MB2230; BCL:0; PCL:0; RULEID:(400006); SRVR:CO2PR03MB2230; X-Forefront-PRVS: 007271867D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR03MB2230; 23:bzpjfPv2FPsXM9n54Xl/10p+45V/vbE74u2MrDbgH?= =?us-ascii?Q?gqcrZNzQ7JMKyAJelxhJakfJfY/zkOWqEOWspIRHLCB68+TIztszPisp86LJ?= =?us-ascii?Q?gKLhJ0XEloEQ7OgzFhKDeCmliTiNw/Ukyj6qR0tVNG4Nvd79Nb0dsP7jw2Li?= =?us-ascii?Q?lnOasBrUU9SuvF47XNsP6djYb6uO3NANkCsZCgLIxLdG2dLH14R+c0WBIJa/?= =?us-ascii?Q?vQZGzPA6PsBuH0hXQVYvf42zrkDIyJJoOuWxN5fUCdLL7LTE8WsvjuU0SnE1?= =?us-ascii?Q?vRb4nK8lZ2YVL/GE3oB8rFYvtc32LL4Id3zYWXJIHNMAchf/jnX7CVXmvjNX?= =?us-ascii?Q?aTmBfjj+3rh0F7vM7TC2m/5zSfHomi7qRVEjxZE7E0V+GQ8jlGa3lM2Zt1/5?= =?us-ascii?Q?8mv8Bv8CEgUjdcpoU5qirAmtpNjRcIVuAKPCTIv5uk3SLk8b/MKtXqfQ2hSu?= =?us-ascii?Q?q/yMVzTtiQWYOCv0LszX18C14GQWom8pGKTqlz8O0VB5J2SCIbZuFfU0fqWN?= =?us-ascii?Q?ID5bUANyrzH/ID+2/UqT6yrZPE2qj0/UsOhihXPuaApiTzPBWna9khOyudwK?= =?us-ascii?Q?oRqXOOj2cxyvSb2eytbpVCWT18jj5tQTBmiKfBlfVXaLmq1RV5akW3tzXTXq?= =?us-ascii?Q?JpC5iUa8k/hR7rMxv+HOoaGl71RWXxr+kFL4MlqnIRKwtSQb0j6uCPQAWsu2?= =?us-ascii?Q?CxOrTM1ftq8rkQE8O5BReCJg3b5nlLqxywvy36wzWdFtlddYnuJ5cnfwFOin?= =?us-ascii?Q?A3+4FDZrCrG1mmcf0nwQh2s5ZdChOApAi1B7cBJNTn1oB/9bXFBSoeb8PTed?= =?us-ascii?Q?/SPQ81AZQkLqinhTlOqBpGXAx/Xrcns1Mc2gvSFHnNibv7N98xGNYRmr7M4z?= =?us-ascii?Q?AoHX3IpTvNLPC5HRBaVJtRMJrQvlyaFKCNsTNbdtPT2InWJc3chaZ+tapNEb?= =?us-ascii?Q?kT+m1ahWFMuICVceEpicKXpx/A+U3p9WN7EIK2t/rJOnwVvldO8qGjsVS6RE?= =?us-ascii?Q?dhCcyeMLD21Z24cO2jPQeZZrq/H6dh3ne3lJwJAs2rORvQlUmABLKtM6cu74?= =?us-ascii?Q?I9U6XdWwhvqAuuZ6fzxspyjG2sgaB2gtwDxPiYTkj526DYkHdZzvda67lzF9?= =?us-ascii?Q?HtzFYFWeE0jvdG7Zgu4K2DMrABbgYQr8RMCnr7ugeDNL1dAzALrMJ68R94la?= =?us-ascii?Q?GHR5OCfpyx6+yL5hBjspcIWRn3eiNaMRqb2?= X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2230; 6:DYIw31II5HbcYh8ODWpcGkG2WbHg0LoSBmMEp7ZowxEM8dCA7xYI/5SYWm3Kh2caS4Ra0X6GvVPWgTz1fjFixC0KoCTzEXIiWjDWsgHjuCzdOE7cv/KSk3nAb8LeoVQpzo/2VhpjWDygoTSPjir+kozXicYUilBusKyhb8HV44FEG77LcDasOVnEJLcSLfNsy4KwR6nr/gaWMmXyAAAvlV4rs4laSZzjg/pEI4YOUvgIAnBJWDLIo9vVfyG4RJMGg9nxYe5Q2HzemWZ7TA4lEAKna75/kQ4Pu41gMQk0P6A=; 5:5EEoL2DeUe5YR3fRh1EaAI8otoHfw3RiRZT2G5hNtkVCorZd1NPHrmEXVQPwBXvXBd87cpTn4hqP3rHlEBUI0jekVZGOzjhIRv+XprP2XAfYWxlqkgixVjo1CORPygJnDKn2cN/x6g2c2QwtY5+jx4YGIC0BTe5i+Pl4V7gvork=; 24:Y4O4Q8W0yYcFiDAPGB7Sx3PAVCKGIlpsMn8K06cMGf+Gj3hQAUC7BXiq9DvY3/BSm+imPEU6kziK2L/QQzNk+bbOW1yb+MD5ftMuM0RTRm8=; 7:Eq2m/uxsepHxdP9a/QkOlgReQtH+fVK5VmnpHHU71r06nEQfu6C3L1PN7MI6u1j9OLvgfD5N9YFKWaHAU1RnRZ4BEZYgcAZNn2DKgAwXmEeGWadl2GpDUwdVXgOIWltZOtecaxCUDfJ0dqrTlk28tMrQeFoy0GKDtfdLGbprdBl/HzLdKnSvlU9eJQn3QH+t6YkajYKHmttauWJ0VLNj44MVVUG9rGn8DLkaes7iP5Ggu66HBeo8JsFJSmQIhZByrcoc9L9/PyB8yYetKJ8ifpb1E0X/QMLq+bpFxiT3/oQsBzxpLiCSsOtSlbXY+1Bi SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2016 22:51:24.2365 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR03MB2230 Cc: u-boot@lists.denx.de Subject: [U-Boot] [RFC Patch 2/5] driver: ddr: fsl_mmdc: Pass board parameters through data structure X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" Instead of using multiple macros, a data structure is used to pass board-specific parameters to MMDC DDR driver. Signed-off-by: York Sun CC: Shengzhou Liu --- board/freescale/ls1012afrdm/ls1012afrdm.c | 18 ++++++++++++++- board/freescale/ls1012aqds/ls1012aqds.c | 18 ++++++++++++++- board/freescale/ls1012ardb/ls1012ardb.c | 18 ++++++++++++++- drivers/ddr/fsl/fsl_mmdc.c | 38 +++++++++++++++---------------- include/configs/ls1012afrdm.h | 16 ------------- include/configs/ls1012aqds.h | 16 ------------- include/configs/ls1012ardb.h | 15 ------------ include/fsl_mmdc.h | 21 +++++++++++++---- 8 files changed, 87 insertions(+), 73 deletions(-) diff --git a/board/freescale/ls1012afrdm/ls1012afrdm.c b/board/freescale/ls1012afrdm/ls1012afrdm.c index d644e94..b03bdb8 100644 --- a/board/freescale/ls1012afrdm/ls1012afrdm.c +++ b/board/freescale/ls1012afrdm/ls1012afrdm.c @@ -26,7 +26,23 @@ int checkboard(void) int dram_init(void) { - mmdc_init(); + static const struct fsl_mmdc_info mparam = { + 0x04180000, /* mdctl */ + 0x00030035, /* mdpdc */ + 0x12554000, /* mdotc */ + 0xbabf7954, /* mdcfg0 */ + 0xdb328f64, /* mdcfg1 */ + 0x01ff00db, /* mdcfg2 */ + 0x00001680, /* mdmisc */ + 0x0f3c8000, /* mdref */ + 0x00002000, /* mdrwd */ + 0x00bf1023, /* mdor */ + 0x0000003f, /* mdasp */ + 0x0000022a, /* mpodtctrl */ + 0xa1390003, /* mpzqhwctrl */ + }; + + mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; diff --git a/board/freescale/ls1012aqds/ls1012aqds.c b/board/freescale/ls1012aqds/ls1012aqds.c index 188b6bc..94440b3 100644 --- a/board/freescale/ls1012aqds/ls1012aqds.c +++ b/board/freescale/ls1012aqds/ls1012aqds.c @@ -54,7 +54,23 @@ int checkboard(void) int dram_init(void) { - mmdc_init(); + static const struct fsl_mmdc_info mparam = { + 0x05180000, /* mdctl */ + 0x00030035, /* mdpdc */ + 0x12554000, /* mdotc */ + 0xbabf7954, /* mdcfg0 */ + 0xdb328f64, /* mdcfg1 */ + 0x01ff00db, /* mdcfg2 */ + 0x00001680, /* mdmisc */ + 0x0f3c8000, /* mdref */ + 0x00002000, /* mdrwd */ + 0x00bf1023, /* mdor */ + 0x0000003f, /* mdasp */ + 0x0000022a, /* mpodtctrl */ + 0xa1390003, /* mpzqhwctrl */ + }; + + mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c index 50f9187..778434d 100644 --- a/board/freescale/ls1012ardb/ls1012ardb.c +++ b/board/freescale/ls1012ardb/ls1012ardb.c @@ -58,7 +58,23 @@ int checkboard(void) int dram_init(void) { - mmdc_init(); + static const struct fsl_mmdc_info mparam = { + 0x05180000, /* mdctl */ + 0x00030035, /* mdpdc */ + 0x12554000, /* mdotc */ + 0xbabf7954, /* mdcfg0 */ + 0xdb328f64, /* mdcfg1 */ + 0x01ff00db, /* mdcfg2 */ + 0x00001680, /* mdmisc */ + 0x0f3c8000, /* mdref */ + 0x00002000, /* mdrwd */ + 0x00bf1023, /* mdor */ + 0x0000003f, /* mdasp */ + 0x0000022a, /* mpodtctrl */ + 0xa1390003, /* mpzqhwctrl */ + }; + + mmdc_init(&mparam); gd->ram_size = CONFIG_SYS_SDRAM_SIZE; diff --git a/drivers/ddr/fsl/fsl_mmdc.c b/drivers/ddr/fsl/fsl_mmdc.c index 1e35967..52eec0f 100644 --- a/drivers/ddr/fsl/fsl_mmdc.c +++ b/drivers/ddr/fsl/fsl_mmdc.c @@ -26,7 +26,7 @@ static void set_wait_for_bits_clear(void *ptr, u32 value, u32 bits) printf("Error: %p wait for clear timeout.\n", ptr); } -void mmdc_init(void) +void mmdc_init(const struct fsl_mmdc_info *priv) { struct mmdc_regs *mmdc = (struct mmdc_regs *)CONFIG_SYS_FSL_DDR_ADDR; unsigned int tmp; @@ -35,26 +35,26 @@ void mmdc_init(void) out_be32(&mmdc->mdscr, MDSCR_ENABLE_CON_REQ); /* 2. configure the desired timing parameters */ - out_be32(&mmdc->mdotc, CONFIG_MMDC_MDOTC); - out_be32(&mmdc->mdcfg0, CONFIG_MMDC_MDCFG0); - out_be32(&mmdc->mdcfg1, CONFIG_MMDC_MDCFG1); - out_be32(&mmdc->mdcfg2, CONFIG_MMDC_MDCFG2); + out_be32(&mmdc->mdotc, priv->mdotc); + out_be32(&mmdc->mdcfg0, priv->mdcfg0); + out_be32(&mmdc->mdcfg1, priv->mdcfg1); + out_be32(&mmdc->mdcfg2, priv->mdcfg2); /* 3. configure DDR type and other miscellaneous parameters */ - out_be32(&mmdc->mdmisc, CONFIG_MMDC_MDMISC); + out_be32(&mmdc->mdmisc, priv->mdmisc); out_be32(&mmdc->mpmur0, MMDC_MPMUR0_FRC_MSR); - out_be32(&mmdc->mdrwd, CONFIG_MMDC_MDRWD); - out_be32(&mmdc->mpodtctrl, CONFIG_MMDC_MPODTCTRL); + out_be32(&mmdc->mdrwd, priv->mdrwd); + out_be32(&mmdc->mpodtctrl, priv->mpodtctrl); /* 4. configure the required delay while leaving reset */ - out_be32(&mmdc->mdor, CONFIG_MMDC_MDOR); + out_be32(&mmdc->mdor, priv->mdor); /* 5. configure DDR physical parameters */ /* set row/column address width, burst length, data bus width */ - tmp = CONFIG_MMDC_MDCTL & ~(MDCTL_SDE0 | MDCTL_SDE1); + tmp = priv->mdctl & ~(MDCTL_SDE0 | MDCTL_SDE1); out_be32(&mmdc->mdctl, tmp); /* configure address space partition */ - out_be32(&mmdc->mdasp, CONFIG_MMDC_MDASP); + out_be32(&mmdc->mdasp, priv->mdasp); /* 6. perform a ZQ calibration - not needed here, doing in #8b */ @@ -84,7 +84,7 @@ void mmdc_init(void) out_be32(&mmdc->mdscr, CMD_ADDR_MSB_MR_OP(0x4) | MDSCR_ENABLE_CON_REQ | CMD_ZQ_CALIBRATION | CMD_BANK_ADDR_0); - set_wait_for_bits_clear(&mmdc->mpzqhwctrl, CONFIG_MMDC_MPZQHWCTRL, + set_wait_for_bits_clear(&mmdc->mpzqhwctrl, priv->mpzqhwctrl, MPZQHWCTRL_ZQ_HW_FORCE); /* 9a. calibrations now, wr lvl */ @@ -116,11 +116,11 @@ void mmdc_init(void) out_be32(&mmdc->mppdcmpr2, MPPDCMPR2_MPR_COMPARE_EN); /* set absolute read delay offset */ -#if defined(CONFIG_MMDC_MPRDDLCTL) - out_be32(&mmdc->mprddlctl, CONFIG_MMDC_MPRDDLCTL); -#else - out_be32(&mmdc->mprddlctl, MMDC_MPRDDLCTL_DEFAULT_DELAY); -#endif + if (priv->mprddlctl) + out_be32(&mmdc->mprddlctl, priv->mprddlctl); + else + out_be32(&mmdc->mprddlctl, MMDC_MPRDDLCTL_DEFAULT_DELAY); + set_wait_for_bits_clear(&mmdc->mpdgctrl0, AUTO_RD_DQS_GATING_CALIBRATION_EN, AUTO_RD_DQS_GATING_CALIBRATION_EN); @@ -142,13 +142,13 @@ void mmdc_init(void) CMD_BANK_ADDR_3); /* 10. configure power-down, self-refresh entry, exit parameters */ - out_be32(&mmdc->mdpdc, CONFIG_MMDC_MDPDC); + out_be32(&mmdc->mdpdc, priv->mdpdc); out_be32(&mmdc->mapsr, MMDC_MAPSR_PWR_SAV_CTRL_STAT); /* 11. ZQ config again? do nothing here */ /* 12. refresh scheme */ - set_wait_for_bits_clear(&mmdc->mdref, CONFIG_MMDC_MDREF, + set_wait_for_bits_clear(&mmdc->mdref, priv->mdref, MDREF_START_REFRESH); /* 13. disable CON_REQ */ diff --git a/include/configs/ls1012afrdm.h b/include/configs/ls1012afrdm.h index 136d648..612f243 100644 --- a/include/configs/ls1012afrdm.h +++ b/include/configs/ls1012afrdm.h @@ -20,22 +20,6 @@ #define CONFIG_SYS_MEMTEST_START 0x80000000 #define CONFIG_SYS_MEMTEST_END 0x9fffffff -/* DDR board-specific timing parameters */ -#define CONFIG_MMDC_MDCTL 0x04180000 -#define CONFIG_MMDC_MDPDC 0x00030035 -#define CONFIG_MMDC_MDOTC 0x12554000 -#define CONFIG_MMDC_MDCFG0 0xbabf7954 -#define CONFIG_MMDC_MDCFG1 0xdb328f64 -#define CONFIG_MMDC_MDCFG2 0x01ff00db -#define CONFIG_MMDC_MDMISC 0x00001680 -#define CONFIG_MMDC_MDREF 0x0f3c8000 -#define CONFIG_MMDC_MDRWD 0x00002000 -#define CONFIG_MMDC_MDOR 0x00bf1023 -#define CONFIG_MMDC_MDASP 0x0000003f -#define CONFIG_MMDC_MPODTCTRL 0x0000022a -#define CONFIG_MMDC_MPZQHWCTRL 0xa1390003 - - /* * USB */ diff --git a/include/configs/ls1012aqds.h b/include/configs/ls1012aqds.h index b6d12dd..54abf30 100644 --- a/include/configs/ls1012aqds.h +++ b/include/configs/ls1012aqds.h @@ -19,22 +19,6 @@ #define CONFIG_SYS_MEMTEST_START 0x80000000 #define CONFIG_SYS_MEMTEST_END 0x9fffffff -/* DDR board-specific timing parameters */ -#define CONFIG_MMDC_MDCTL 0x05180000 -#define CONFIG_MMDC_MDPDC 0x00030035 -#define CONFIG_MMDC_MDOTC 0x12554000 -#define CONFIG_MMDC_MDCFG0 0xbabf7954 -#define CONFIG_MMDC_MDCFG1 0xdb328f64 -#define CONFIG_MMDC_MDCFG2 0x01ff00db -#define CONFIG_MMDC_MDMISC 0x00001680 -#define CONFIG_MMDC_MDREF 0x0f3c8000 -#define CONFIG_MMDC_MDRWD 0x00002000 -#define CONFIG_MMDC_MDOR 0x00bf1023 -#define CONFIG_MMDC_MDASP 0x0000003f -#define CONFIG_MMDC_MPODTCTRL 0x0000022a -#define CONFIG_MMDC_MPZQHWCTRL 0xa1390003 - - /* * QIXIS Definitions */ diff --git a/include/configs/ls1012ardb.h b/include/configs/ls1012ardb.h index 2076ce5..0c13dde 100644 --- a/include/configs/ls1012ardb.h +++ b/include/configs/ls1012ardb.h @@ -19,21 +19,6 @@ #define CONFIG_SYS_MEMTEST_START 0x80000000 #define CONFIG_SYS_MEMTEST_END 0x9fffffff -/* DDR board-specific timing parameters */ -#define CONFIG_MMDC_MDCTL 0x05180000 -#define CONFIG_MMDC_MDPDC 0x00030035 -#define CONFIG_MMDC_MDOTC 0x12554000 -#define CONFIG_MMDC_MDCFG0 0xbabf7954 -#define CONFIG_MMDC_MDCFG1 0xdb328f64 -#define CONFIG_MMDC_MDCFG2 0x01ff00db -#define CONFIG_MMDC_MDMISC 0x00001680 -#define CONFIG_MMDC_MDREF 0x0f3c8000 -#define CONFIG_MMDC_MDRWD 0x00002000 -#define CONFIG_MMDC_MDOR 0x00bf1023 -#define CONFIG_MMDC_MDASP 0x0000003f -#define CONFIG_MMDC_MPODTCTRL 0x0000022a -#define CONFIG_MMDC_MPZQHWCTRL 0xa1390003 - /* * USB */ diff --git a/include/fsl_mmdc.h b/include/fsl_mmdc.h index 1d09ff4..d5c4f8d 100644 --- a/include/fsl_mmdc.h +++ b/include/fsl_mmdc.h @@ -150,10 +150,23 @@ struct mmdc_regs { u32 mpdccr; }; -void mmdc_init(void); +struct fsl_mmdc_info { + u32 mdctl; + u32 mdpdc; + u32 mdotc; + u32 mdcfg0; + u32 mdcfg1; + u32 mdcfg2; + u32 mdmisc; + u32 mdref; + u32 mdrwd; + u32 mdor; + u32 mdasp; + u32 mpodtctrl; + u32 mpzqhwctrl; + u32 mprddlctl; +}; -#if !defined(CONFIG_MMDC_MDCTL) -#error Must configure board-specific timing CONFIG_MMDC_* in .h for MMDC -#endif +void mmdc_init(const struct fsl_mmdc_info *); #endif /* FSL_MMDC_H */