From patchwork Fri Dec 8 07:35:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 846027 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=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3ytPn95FcWz9s71 for ; Fri, 8 Dec 2017 18:56:29 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 46ECDC21FCD; Fri, 8 Dec 2017 07:55:08 +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_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS 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 BFF74C21FED; Fri, 8 Dec 2017 07:54:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id F2767C21C4B; Fri, 8 Dec 2017 07:54:38 +0000 (UTC) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0064.outbound.protection.outlook.com [104.47.42.64]) by lists.denx.de (Postfix) with ESMTPS id 89FC1C21F88 for ; Fri, 8 Dec 2017 07:54:32 +0000 (UTC) Received: from CY4PR03CA0089.namprd03.prod.outlook.com (10.171.242.158) by BN3PR03MB2353.namprd03.prod.outlook.com (10.166.74.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Fri, 8 Dec 2017 07:54:30 +0000 Received: from BL2FFO11FD027.protection.gbl (2a01:111:f400:7c09::122) by CY4PR03CA0089.outlook.office365.com (2603:10b6:910:4d::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Fri, 8 Dec 2017 07:54:30 +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; 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 BL2FFO11FD027.mail.protection.outlook.com (10.173.161.106) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.239.4 via Frontend Transport; Fri, 8 Dec 2017 07:54:29 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vB87sNB8018515; Fri, 8 Dec 2017 00:54:27 -0700 From: Yangbo Lu To: , York Sun Date: Fri, 8 Dec 2017 15:35:37 +0800 Message-ID: <20171208073537.6777-3-yangbo.lu@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171208073537.6777-1-yangbo.lu@nxp.com> References: <20171208073537.6777-1-yangbo.lu@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131571932699209334; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(7966004)(336005)(39380400002)(39860400002)(346002)(376002)(2980300002)(1109001)(1110001)(339900001)(189003)(199004)(51416003)(76176011)(97736004)(356003)(16586007)(104016004)(6636002)(305945005)(110136005)(36756003)(8656006)(81156014)(81166006)(8676002)(47776003)(68736007)(5660300001)(50466002)(48376002)(2906002)(1076002)(50226002)(8936002)(2950100002)(33646002)(86362001)(575784001)(105606002)(106466001)(498600001)(85426001)(4326008)(77096006)(6666003)(316002)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB2353; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD027; 1:KxrKsJzdMQKQ78opwPXSG3RmMYVY6Ggc2UP58XXzv3qgHCYjb7PimObYKZBkchW/rSpIFRv2YrhAEjLlw5irwcXSG2Kmxyd5C3bQHqJX0N9H5ADzbOw4vb5oZEeRoepD MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 017cf756-8050-42aa-ae76-08d53e10e969 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4628075)(201703131517081)(2017052603307); SRVR:BN3PR03MB2353; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2353; 3:OklRvXSvOrMXb02bo3P2xVfpSTiVUTLlKXzd81XFHrhT7NyKqaOlVPmgMJVkrkbVj/4dYR7/FeBW5X2E8DSZK3LGkwafpSwivP6JEE2doQ+gGkCCEs+tL3erECN/c3XujyQdPC57Xqv1NwfAx9JpRLJEHJYITjL05vT1a59viEky70j43S6KGYZ2NSn02CNbbildWIE/dHb+b66TV+ZUojtuaienadwsAQNXyzadInhby4frCHze+b2IvI6in+aZ01qVamp9vkMJ/uBN2yApbvfAuZI8dhXLIrToXtlALS5v5lmeTn4jp8/4gN3h2IKRctI3w8PcHqNwjIPH0WqKACQ0MPoZHHZvFjMPIj+omMo=; 25:PzujV2REEAU2hmVp8bbbWEW/jvEPbmiDfhP4WMCbW/hr8Nd9QtyW7pRcTU/Fh84MaoG5+/auM0k8dNk/2RyYSKE02tks4gEr03URoCitRe9mCnhiVPV1jH8AZTUdxOlkdgUIL0WixcAZCMhw6kN02Qf+7rUT4YKH+k3+dw6JDm5DvX87RTqwl48awz28MkF1u3Xx2w8DA8C69ybNmmu2YyfQAFCD5HEZsFAVVf1moHdTQEh1qkiIr3H/QYbbiClPbYKlcINMbyS7tV2MU7p+PNmTHSPSMWKXbUMLZ6gcU/KCliJHifCrfiWwaph7LJwEmduq3xb8HrEdohqeE/DTJg== X-MS-TrafficTypeDiagnostic: BN3PR03MB2353: X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2353; 31:PAP3wKgYVVHCIAUhMMsAUn2+9PNMgm7oE4Kcf1YqCKcTMFWCyFX1hD4nI/BixbAWk/1ywfAcSI4gG9ujuocgfOsOOry6352M8HcbSuN7PqfbqhvICy2/8mQ/kxTP2SMXqxrOP2dia5qGAqQm55BFRok4jewwC1pS8k+ZSV3z4ZVNXewowZaVIFgSJtmj6+mjeio3eN/s3ZOmZSKAufhwkKacOOx6rFcZWIafJ7KRoL0=; 4:qkEDHEynmJ6GkhXJZTFdp3kGXDuO1wL76OzxGz+iNbL4rAIteDToZrjXW6SegvGujmq4sJOno+za+7OTXSv+0+TlIhJpF22C5Whv7/wp3ZIWNV5pt01V9lsBmHEIis4l0STjXjU0Eom+AIlkSDv5VT7jCtkaQolJRoT7Jp7t1eytJE6pK5seoD074ATjc7AIXLnjqzklhVt4jYq9uwgMTJsvJ0CdWq9SwQdhgUXa4Uf31jMh+kDZYcA5q05UWeMbDTD+sp9Q17hy5G7Bd0Pgv/ZYAEv8EzblVMMk8xy4yXG8o05zHv8kECh5Ik3hr2+9 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(3231022)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123559100)(20161123565025)(20161123556025)(20161123561025)(20161123563025)(201708071742011); SRVR:BN3PR03MB2353; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:BN3PR03MB2353; X-Forefront-PRVS: 0515208626 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR03MB2353; 23:Cfwsw4Shty9Ouupf1ummskL6G/NvxlQTBbGwGKcU2?= mJwIA68aJxhu6N658P25hpdSkVZ7TnKdqiiFYtAQZ9zKW6ZeuDPwMRNa0ISApSvnmE/fIhVhj8V6vh53QViu4wmsX7NZR6ZP2fGh3crpQH0215TO4QpSw2oJ2cgXGWM23dgcagbh91VhO2B92Yn5TFRZJOqGcpCloDX13MsoGrk+qWiMViBVN2Y60PtlPuKMhcNWklUqvc7hbhqtYY+GbPDZ4MkmGTF/nURmvDvnRKJtuZ20rHlde4RdeEJ7AVLF7tm1Ks624uxcD6Udps29T3y2kBEOGGfYsGEtpH/aDHdP9TrdeqQKUsx/XnHnysOzqehcOasCQB5z61eHPsa93wQyCmkUpr1nlYJbQDYkrGbsgAi3crrDUwxpPms5V2ldclg4SXBLTSM+AFmW+r8JxapfHz8/WMMngjBjIaNV/iZOWRR9UKuChAU7zFkXlVbTh7GVCR2DuFjF5SBikLH7jh09+M33jUOhlxsMmQABbOHyzC5JGmpa+domnNaKDKOEcZXCsEdoBfzlpHj8QKWkpwOFGilbWYCaxk3+vP9P3uxkcKawiFXAdVXKQqqgXa0Yz2xB6+KNecbQlFWFkGd7eaXYhty1pAlBFdW/fqa+/4eZVv8i/UFHntPSDpE2kHFJysv85rCLY6m3r6eLfqlsH3MRC2hXOk0rhApoMhE9dAR6Ac3ouaTOy9u4sWpMVtIaDsWcduuxA2aScrPwj2c6nxccOjCPfNLk+ZIacS/Yyqp04th+PVTVJtDQzupt9AQp4+U/6PYIy1ayFf8l4anW87GGDKhzwSXJnNEny0BT8Jz8y5eLaeIoFJNDaGR/8xAdE4r/5+k6tYGzJ95SBlkojPKvKL1gNvNmqk2hJbSNFrjBHjUvzfc/ukKyHBcvT5U2cvbBYvB5EAkuEze4uzG23gLV9kJsCroRhlRgsYcYhfTLnAX/gLFMrzRq55waPjuXFa3gkjGchWcrN/oPCLkCiNa80ZpIYqJ37qzrgJzhxQo9mbfGP1RjjCHaFvvt/gxJDAPGJR26cL1+NwAErQSLn+XwmqiSrEHOjSGVWJcVE+vJgv+Wbs6M4FfJyr41us3icMb2LjMvZ+BtTpXJI1tmqQq X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2353; 6:jflq4wH0MWQppXwJgHgabPlj9+egG8nYd6Tb3SyJ9NL/ID9tWLcAPzSAoqHnQPwozeLpz0WVIJMz2fB+IcjkO4vIdqzheRMRhge5jLmqFeTmREBOkVtfDSQY7jIE88h4WWDu+wHfLrSEr8rRRxOy60pSm33XWZyzD5icucT3Ez6Hced5Utf2VcYxrOXuVvG/aNrqIE2OSHc2YBqZrcnVrGAL/pEZTuA/QPkQufBVSe7RxFZlr/VBKR8q2SbyTAXBgpbl0ABdj/KHQmlLfkr5o8PSvOC3lgD2ViqTx1on3GfvHXB1a9M9fO+tff7COSgGnhR8D0dGNBL3ef9pJgZWlDiNXC/LeCyEc/PQgWjTB0c=; 5:hS6hi9uxkndLTYWpYGd7uN3YiMmAV6MY5sBf47Og64+azEgDIdhtQTOd+96/HXQqieZpNqiqSRNI+aWpdhIEW6hnV77aVaO9U98C+xEqpEqYCGjDEBsmLGCq79DD28EtcVz5ARBNCoolpuVJ33fzgzGz/aFtZ0+wzqGQVQzrcg8=; 24:VpHo97KClH+/xCNV2ueNxpCHYEQtQjK6ocTkvBG08Oinfy2JtqRJMxHpdu7e7cs4xpW/QtM4vUprtdoYA38YMygYbNc+HDU8SsngzMcICOM=; 7:giSv3rNc9Qy6HTM+dQYgvRpSdZh5/9P/QflaJB3BAV1IaRCPUw5+snqQpyTbxINcBpsjFjJFJ94HR6RXAzQZiIBBXHfQK+1TicvoNrkyHlGz8j8OxcRbin/Phj6SazrSTZHLdV0vry/uGtitVu8Sp0US5iCqN3O/Atzq58o4kS3ulIeEF0R/uRSlAZcW9W54uECBe/AstvxTTymBX+5gDPewXJrUs/TVgoOiL+cOp7yHVneALnsl9qCW/RhwwlIM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2017 07:54:29.7493 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 017cf756-8050-42aa-ae76-08d53e10e969 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: BN3PR03MB2353 Subject: [U-Boot] [v4 3/3] armv8: ls1012ardb: support hwconfig for eSDHC1 enabling 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" I2C reading for DIP switch setting is not reliable for LS1012ARDB RevD and later versions. This patch is to add hwconfig support to enable/disable eSDHC1 manually for these boards. Also drop 'status' fix-up for eSDHC0 and leave it as it is. It shouldn't always be fixed up with 'okay'. Signed-off-by: Yangbo Lu --- Changes for v2: - Just used hwconfig() instead of getenv() and hwconfig_f(). Changes for v3: - only applied hwconfig support for RevD and later versions. Changes for v4: - Modified commit message. - reused io variable. - checked CONFIG_HWCONFIG before use it. --- board/freescale/ls1012ardb/ls1012ardb.c | 55 +++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c index 421b0a7861..286f9d8199 100644 --- a/board/freescale/ls1012ardb/ls1012ardb.c +++ b/board/freescale/ls1012ardb/ls1012ardb.c @@ -152,34 +152,49 @@ int board_init(void) int esdhc_status_fixup(void *blob, const char *compat) { - char esdhc0_path[] = "/soc/esdhc@1560000"; char esdhc1_path[] = "/soc/esdhc@1580000"; - u8 io = 0; + bool sdhc2_en = false; u8 mux_sdhc2; - - do_fixup_by_path(blob, esdhc0_path, "status", "okay", - sizeof("okay"), 1); + u8 io = 0; i2c_set_bus_num(0); - /* - * The I2C IO-expander for mux select is used to control the muxing - * of various onboard interfaces. - * - * IO1[3:2] indicates SDHC2 interface demultiplexer select lines. - * 00 - SDIO wifi - * 01 - GPIO (to Arduino) - * 10 - eMMC Memory - * 11 - SPI - */ - if (i2c_read(I2C_MUX_IO_ADDR, I2C_MUX_IO_0, 1, &io, 1) < 0) { + /* IO1[7:3] is the field of board revision info. */ + if (i2c_read(I2C_MUX_IO_ADDR, I2C_MUX_IO_1, 1, &io, 1) < 0) { printf("Error reading i2c boot information!\n"); - return 0; /* Don't want to hang() on this error */ + return 0; + } + + /* hwconfig method is used for RevD and later versions. */ + if ((io & SW_REV_MASK) <= SW_REV_D) { +#ifdef CONFIG_HWCONFIG + if (hwconfig("esdhc1")) + sdhc2_en = true; +#endif + } else { + /* + * The I2C IO-expander for mux select is used to control + * the muxing of various onboard interfaces. + * + * IO0[3:2] indicates SDHC2 interface demultiplexer + * select lines. + * 00 - SDIO wifi + * 01 - GPIO (to Arduino) + * 10 - eMMC Memory + * 11 - SPI + */ + if (i2c_read(I2C_MUX_IO_ADDR, I2C_MUX_IO_0, 1, &io, 1) < 0) { + printf("Error reading i2c boot information!\n"); + return 0; + } + + mux_sdhc2 = (io & 0x0c) >> 2; + /* Enable SDHC2 only when use SDIO wifi and eMMC */ + if (mux_sdhc2 == 2 || mux_sdhc2 == 0) + sdhc2_en = true; } - mux_sdhc2 = (io & 0x0c) >> 2; - /* Enable SDHC2 only when use SDIO wifi and eMMC */ - if (mux_sdhc2 == 2 || mux_sdhc2 == 0) + if (sdhc2_en) do_fixup_by_path(blob, esdhc1_path, "status", "okay", sizeof("okay"), 1); else