From patchwork Wed Dec 6 10:00:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 845099 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 3ysF2l531jz9s84 for ; Wed, 6 Dec 2017 21:19:10 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 138B0C21CB6; Wed, 6 Dec 2017 10:19:04 +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 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 86626C21C40; Wed, 6 Dec 2017 10:19:01 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EACB8C21C40; Wed, 6 Dec 2017 10:18:59 +0000 (UTC) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0066.outbound.protection.outlook.com [104.47.40.66]) by lists.denx.de (Postfix) with ESMTPS id EB1D2C21C39 for ; Wed, 6 Dec 2017 10:18:58 +0000 (UTC) Received: from MWHPR03CA0023.namprd03.prod.outlook.com (10.175.133.161) by CO2PR03MB2360.namprd03.prod.outlook.com (10.166.93.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Wed, 6 Dec 2017 10:18:56 +0000 Received: from BL2FFO11OLC004.protection.gbl (2a01:111:f400:7c09::149) by MWHPR03CA0023.outlook.office365.com (2603:10b6:300:117::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.282.5 via Frontend Transport; Wed, 6 Dec 2017 10:18:56 +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 BL2FFO11OLC004.mail.protection.outlook.com (10.173.161.188) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.239.4 via Frontend Transport; Wed, 6 Dec 2017 10:18:55 +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 vB6AIqmu010309; Wed, 6 Dec 2017 03:18:53 -0700 From: Yangbo Lu To: , York Sun Date: Wed, 6 Dec 2017 18:00:10 +0800 Message-ID: <20171206100010.13892-1-yangbo.lu@nxp.com> X-Mailer: git-send-email 2.14.1 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131570291361357928; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(336005)(346002)(376002)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189003)(199004)(48376002)(68736007)(50466002)(5660300001)(36756003)(97736004)(33646002)(81166006)(81156014)(8676002)(50226002)(8936002)(51416003)(110136005)(16586007)(316002)(53936002)(6666003)(77096006)(6636002)(2906002)(1076002)(575784001)(86362001)(47776003)(105606002)(104016004)(106466001)(356003)(305945005)(498600001)(4326008)(8656006)(85426001); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR03MB2360; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC004; 1:TtHJ8GNPeCUH8NTVWH7y4RiRVsfLEHCJxDIz6SBBlTQGsu8/ZIik3ZInCrhUqEWJjO9ScswZW5zcRxBINJ1Ad0l3MK2Dv5mU0PxP41LvOkiMECOn4+HZPiEocXpHxvJ3 MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48fcbde1-2e7d-4a7f-a068-08d53c92c20d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603286); SRVR:CO2PR03MB2360; X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2360; 3:Ns0+kBYxcxnOfICkWjvUcQq6RFrr4yNRLzmp5XqW1jYiD/kLljGYhU+17ay+lEYPgtQ6DrwCa11GfkXLokAky1vSWLe84HKV9YMvqd8FG/XakKqu92CUerpgqLctTiKBy+doa7jItaVSHtg/EZBxdFIoXkPtCwirYvsGD1eM5RauCIHnTe2fkQ0kxioRawq0ma1Q3GCCre9WYMTFe47xKXdBCsXt0+i21UXCN9aWSNuhLQXCeRmcvkDSAh4PNrondXgzXDvjWMwlUI5qbtaNSWE9pddKL4YQDjEdmPl7Ru2dgfpHGL/xk5hdUH6OthrkTmioORcZ1LHHSCV6hfwU73xcfIy6OuXTMJdbAaY+20U=; 25:kzHEM52FWCQ8RTy4Gn3iWTyAGx3Uj7HQI67EnV0mKLwbGH7I4gEMkmFFNiOMk5zqd8YDjpZIs4xUfcLzCnNhVv0hOiQpR7NSNm48TJD2as6akTmPSQ+OH/gwkCiHTV7qcXSYSHsXvH0TG5OjPf67QtbdBpeuVjg0Y9gdKLN217vroiY+yLyrZWHxwBiB7sdJJIF4dTTY/iJWYbF3J77d9fIoAgwF3w1DEz6BHiyvS7VbpLkleH4uAOvMQBvcbVnOPO1XX1lDYJFvOgu/m7bQ2TYeLdzVRrnROrWrDc1JO1ZTbKQDXTX8AjSXJnfICjjFZfwHN9xTp0b79V6eIl4yHA== X-MS-TrafficTypeDiagnostic: CO2PR03MB2360: X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2360; 31:rsfBGNHjYZU6foNRzX7xcROj4VZN29f9JpMaA/hpsniWDIsqvK1EPDqhCEdFcCPk3tC8OQ1+PWOH9yS+c+e0gLDoJdsoPRdIsDgtxzuyhCL2F01PLjmC+R1IXL7Ju9dVH8hOGkeX1PRjbCnvp9bG19BmXZ32zYrf5FIqmgw7/QJz6JzZaRJldxPj6TSlzpHOo4Ik9bdoQ6omhUlUtS1QGg4qT2MluWlTSsBFHMRwxpE=; 4:9WKBypV9rfC/mk00qq7p+Swqh9Sxxq50Ww2Ak89U4xKyxPku5VIxONEKHjn95c1MtbA4qQjBayFVo9HhPUSih25iUZ3y6/pmey6TJkfwe9BdDy9rHfAk+xupQHyVOF1PNs88LAIFyy/s9R20GgN6BBtASgn+2sX5JIxa9nAfcGRhY52ZCxrhwVfwwLCtmASCJhD2ewDUWqGnd2BFmrYE6tKdUt7+0BPSWGpnV/0bzCPXMvu/aB0qrj4YBDoWQ8vHGGmmfUAFWS5LzNtX6w03Nh2tjcaGjjqWFBZNRbdve69IX5ZRox2XVd32fmNXzpsE X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(3231022)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123561025)(20161123556025)(20161123563025)(20161123565025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(201708071742011); SRVR:CO2PR03MB2360; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:CO2PR03MB2360; X-Forefront-PRVS: 05134F8B4F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO2PR03MB2360; 23:7coQh6Y49uxbN6e9s8+5d16HwySFBxIun4TuRhpk/?= Dz4eDEIRftXAfy13maOs+DIsptZTPHLlCa5pOhpGfpQRJ04DeZlX3Hd5TtozyYETUbmaN2679nmWpM5zSzLXLOS6UcO9l/lrWfncSyR6qEFFTahVW3TOJC8b2J98qRU9XX+F/B6lItSQdcY9+4HEwOALR0ZYsjvJfpFzGlxMarv54/skLjFcR5BuvHyoDqDROHRfB3ZX7FhiBxG72te/HLvcz0VZ4A3m3L4QnjoGkkqukHF4QcrJEyhYHGBKb6t1pO8OiglmgpGbFzrhyUydWtrZGo+AzJU3QIf/T25r+X9+3adxkkdGnNna5/nuMd0g985Nn4ccZoVjXyF9OSGQA6k3ZqgdPsYDyvJABcOoNsLfos/AXFXYnL8v5imrHHSFIe2pKRiB2PGDyoFC+hy6zandgBckFs0CtfLv2axwZAuykPpbgPN7elicPeR6CyYIEuYo9+9jf+ts5wUm+M902TpI2G6BW1mWcyR5vwmy32RJUzudKxb514x6VcryT8mMy0OpinbLFHEADjjLfsiRyU3w4VEHooc8qZ2fgmpQxruNOdyhvezfT6r/WJX3xFojKwA/xHxIA0aPR5cI9w3qeDa/0mYRz9vAV0S3bE9nkeHDnnnyrs8UmrQoZiz26H3DEYuz60gLYvbX9kHtrnaOe3FHq2HZeeS0GSm+jGpn6eCgm/S8FNbfUZDK/XtOyDgXphJXzV6dHVvZypG/iT/9Vj2PBzeHJf+eCoxXftMqdDlQsDTxJjK5lsZYg0Sr2tYmCd3iatRvOECuQzSWSiFL8/VRSL4vRDUT656ilEoFit1hNQb5xFZx3UmGOgRRNTpuSYMA0FxE18obnd/pSVMigixzVu7jQ11enFRXISiR9T76750u9FjNmeFL+zA5LgGQriOZaYv/3kf8D3EG7D8hGfnQ7CU8E7ZLhLC+a2j6IoNRgbTW2Ce8kiZCtorCY5HN1KjqEHzow9SPrhokgC8fmqqVADcy5u6QNb4XTD5Wk/wrbfB/xk66Houvq0I7EBM40NIX6eP2ubhmU0DG12yVoJj X-Microsoft-Exchange-Diagnostics: 1; CO2PR03MB2360; 6:G5h3M6d5+sHsH8FhSktgWjxPybdoJnVgymVqg8HiucJgDXyfxqGYhNB23WfIgsyuH2dRDVGsC0u5ZzAlZqOWqYhz6Z2BOL1vlYtPiZIGeyz9EHUE3fj0NWej4K0hHnA0YXzfT07OZSiuzO7SR/DR+kfSXRTp3rFMaY6ABWwgO0FwyS6+kleDZRAFTGtrgd9+XA6Wl9dIz0S3ddEiiwJ7QU3SVYo9hPyDy09Az5jxjCVN5nOuyOVXwFmkd7g+t66lp6OqnDj7FsvafnP+QA4Y80om/5D6V4vVwtsbPmvtWc9I7t8ao009L83jz5fRRhMPOkzL4jOQT3dyg+mIxke6lyyjZ8zTp7Hd7CwayJz2ccU=; 5:S37g0AOB3kQrpexumABej/ggzNOUTtoBVNZtVMGQSm2dL+iNC1a2pWLwirC1QcNqI7Or5bFz/RgLcZRzO2Fm48hkeD50zHrXNe0HnsdVK+Wc0lfafdNr5Cu0dRcACJ0BqJXoFN+peIqR+tLNkxGMBmJVxumC81rg112p+Q1Yct8=; 24:OwOTyTvnyxN6QOgo1PHfs7hjC/TcIU33EgJAnnvl637urWe8ywtW/hPK7FqozuX8UmzRX9FPbCdcCgqHAovuqC/zRve/UfgEvTZSRZgA1Ww=; 7:m8zHXHpLfnxgFs6614wCuuCIpOCvr4qNjTANYn0U6qQSiEE8TGSy0uMOy25i76/xJCM4t3fNyYhpZKCbQ0prwVNniSPEcnv1g8Qrnm0Px6IUBXh2Q9W0B0+QJEy7kE2kbdve7r+JYA4K9nEuWSxA6LdKujCiUJBUJ5CAakuvUQttdLccmzkgpW7P+MRcubYOHRt/Jb7/BogS4/zszFkrkgKXa26AaBguYFyfSSkof6O19WqE3TAZ900kXEz7HWdr SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2017 10:18:55.9641 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48fcbde1-2e7d-4a7f-a068-08d53c92c20d 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: CO2PR03MB2360 Subject: [U-Boot] [v3] armv8: ls1012a: enable/disable eSDHC1 through hwconfig for new RDB 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 LS1012ARDB RevD and later versions, the I2C reading for DIP switch setting had been no longer reliable since the board was reworked. This patch is to add hwconfig support to enable/disable eSDHC1 manually for these boards. Also let kernel decide status of esdhc0. 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. --- board/freescale/ls1012ardb/ls1012ardb.c | 51 +++++++++++++++++++++------------ include/configs/ls1012ardb.h | 4 +++ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/board/freescale/ls1012ardb/ls1012ardb.c b/board/freescale/ls1012ardb/ls1012ardb.c index c6c1c71202..b73c7d6639 100644 --- a/board/freescale/ls1012ardb/ls1012ardb.c +++ b/board/freescale/ls1012ardb/ls1012ardb.c @@ -132,39 +132,52 @@ 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 in1; u8 io = 0; u8 mux_sdhc2; - - do_fixup_by_path(blob, esdhc0_path, "status", "okay", - sizeof("okay"), 1); + bool sdhc2_en = false; 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_IO1_ADDR, 0, 1, &io, 1) < 0) { + if (i2c_read(I2C_MUX_IO1_ADDR, 1, 1, &in1, 1) < 0) { printf("Error reading i2c boot information!\n"); - return 0; /* Don't want to hang() on this error */ + return 0; + } + + if ((in1 & (~__SW_REV_MASK)) <= __SW_REV_D) { + if (hwconfig("esdhc1")) + sdhc2_en = true; + } else { + /* + * 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_IO1_ADDR, 0, 1, &io, 1) < 0) { + printf("Error reading i2c boot information!\n"); + return 0; /* Don't want to hang() on this error */ + } + + 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 do_fixup_by_path(blob, esdhc1_path, "status", "disabled", sizeof("disabled"), 1); + return 0; } diff --git a/include/configs/ls1012ardb.h b/include/configs/ls1012ardb.h index 794117062f..d5384e6027 100644 --- a/include/configs/ls1012ardb.h +++ b/include/configs/ls1012ardb.h @@ -32,6 +32,10 @@ #define __SW_REV_MASK 0x07 #define __SW_REV_A 0xF8 #define __SW_REV_B 0xF0 +#define __SW_REV_C 0xE8 +#define __SW_REV_C1 0xE0 +#define __SW_REV_C2 0xD8 +#define __SW_REV_D 0xD0 /* MMC */ #ifdef CONFIG_MMC