From patchwork Thu Feb 14 08:21:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yangbo Lu X-Patchwork-Id: 1041899 X-Patchwork-Delegate: prabhakar@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; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="jXYVCZk5"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 440TsJ1qvJz9sMp for ; Thu, 14 Feb 2019 19:22:28 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id C2899C220AE; Thu, 14 Feb 2019 08:21:57 +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, 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 51511C220D4; Thu, 14 Feb 2019 08:21:26 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1F481C220BE; Thu, 14 Feb 2019 08:21:21 +0000 (UTC) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40080.outbound.protection.outlook.com [40.107.4.80]) by lists.denx.de (Postfix) with ESMTPS id 112FCC220BD for ; Thu, 14 Feb 2019 08:21:17 +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:X-MS-Exchange-SenderADCheck; bh=eMkn48yLG50K/dqoTCpyxY8hjM2iqtOPdXSc983cSkg=; b=jXYVCZk533ceP/g0DPj9ZFj9A827xeFy3ag9ngAoZBXoB4WM5dKYo56qDDd5psbYDMwL5qpwRPDDIkviAU89cq0VlqGqT4iRtB4ZTRnBI5sWkHN4mxffzjIj1upKUJmIqlaiAfUEfX1xPs1Kn0dnhr4GVvGhkqzSb07YQIqOqjI= Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com (10.169.133.18) by VI1PR0401MB1887.eurprd04.prod.outlook.com (10.166.140.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.16; Thu, 14 Feb 2019 08:21:15 +0000 Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::78f9:21ec:83e4:bc72]) by VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::78f9:21ec:83e4:bc72%3]) with mapi id 15.20.1601.023; Thu, 14 Feb 2019 08:21:15 +0000 From: "Y.b. Lu" To: "u-boot@lists.denx.de" Thread-Topic: [PATCH 3/3] mmc: fsl_esdhc: clarify i.MX eSDHC specific functions Thread-Index: AQHUxD5AXRvVDXAfYkimwtBHPxnloQ== Date: Thu, 14 Feb 2019 08:21:15 +0000 Message-ID: <20190214082207.12082-3-yangbo.lu@nxp.com> References: <20190214082207.12082-1-yangbo.lu@nxp.com> In-Reply-To: <20190214082207.12082-1-yangbo.lu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR02CA0185.apcprd02.prod.outlook.com (2603:1096:201:21::21) To VI1PR0401MB2237.eurprd04.prod.outlook.com (2603:10a6:800:28::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yangbo.lu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 867e5db9-297c-4d04-af81-08d69255633b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0401MB1887; x-ms-traffictypediagnostic: VI1PR0401MB1887: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1; VI1PR0401MB1887; 23:zB6hOO/mx5AfdgpBH2v6ygktEU7iU3jbAEwRR?= =?iso-8859-1?q?v4Aw2GtbaIyuLXXAV2HpBhAIp?= =?iso-8859-1?q?sI4EN5PRe+noEo0AiGzE1ISSSacNcBrUe1/NwtqpcOJrljZFfb3?= =?iso-8859-1?q?IB8AfirrPDgqxN5KeeOC/zFNkfT3TEMkp/2Q7Bg0BG9d2FanNk+?= =?iso-8859-1?q?ULQaitRfncRnU6nmwRpnMqucOb5nVdv+cG75czwF8sTALGnN5+n?= =?iso-8859-1?q?u3wOCiWKGljVj2VZ52iousMf4RxZxGBiPTuGWZPDwgeg5Mky3ru?= =?iso-8859-1?q?PVkguuQMQrddge6lz/e515zSO8PK7AXdisZdbW9VZpyZreXKnEo?= =?iso-8859-1?q?R56k3k/4EKOhimmMA4/sdUTc9/zIURXkPop89Tmo7G8kxKJZmxn?= =?iso-8859-1?q?00MRU6zuCGsN/wEbr8Px6eyfPdAuJAU8PlNEHxbGIldJwd+0TBp?= =?iso-8859-1?q?K4+qDtYOeLyU+wco35g2uOrO4+1GCj1Ts7M4TS14uhvsWTMouJz?= =?iso-8859-1?q?flSOA/s5md4AYffK3VqCvtbymXFOQAvlfR26l9TaAoZ8kC25DLH?= =?iso-8859-1?q?CAZpAhMjBhk/blBQSCf29ZVDOweJkm29c6v3GPx7w92BySi0h+d?= =?iso-8859-1?q?RT1h4i3q4YaPA/HSd09sDGwyef0QZ1EqP7iupeS1HRO3bxEBgtw?= =?iso-8859-1?q?fqb7c8tujkfBY+kU04Pj4xulEHqfFxEFvncWhkxZS4yUpp4KYUn?= =?iso-8859-1?q?kmukPBHcjIr54DOr5QKCDGN186BA4heiz5LWxTaZTsdd38mPlOD?= =?iso-8859-1?q?+ELtGgmg8p7Q7VGJUrBuuqJq04gQUehEZspmyrujMFRSgcTY+gu?= =?iso-8859-1?q?JYvr1BVe99NHJRicvJ+Vp+KVK+hwnzAsgOn/MValu198Ltc/Eon?= =?iso-8859-1?q?kEwOoEmYZDL0uepjB6gidRUPszbnFAfYH9Pmm2L5phFLbMOPglu?= =?iso-8859-1?q?1KCMbjLFYCPcAVWJSAi9qwbmZeQ2r9QzzxpQTN1ZZhXMe7A1DBK?= =?iso-8859-1?q?p7Ve5MTKoHfrCO8dfdnrD12FzQRz+weUBI9esBDYSwKbjjwoqoU?= =?iso-8859-1?q?vpYAWZ0G5EnNwGegblRgx1R+2ONK2EVjCSBC4WjQzJd/ssa04xa?= =?iso-8859-1?q?iS2WmvuTKr5Jlf6iw3SwgQ46sJ1MidxUuZYhbmDa3PZ4EpTv9ut?= =?iso-8859-1?q?yX9I1y26QQKzPWYx8KQ0QGF9c2bl+2pEkP5+bsbFu03+9U3qvVt?= =?iso-8859-1?q?K/TLLi+Sp3z+gkwzu2h5uwrMWU2BwTFXj0gDThJzxlzDlSEquO1?= =?iso-8859-1?q?HXWiOFP1TvobWqT0boshXZWEPHWU4NSooSsxBLAPIFfba4wDAPp?= =?iso-8859-1?q?hZc2k4zNElRPbdrS+0N03cOk=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09480768F8 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(376002)(346002)(396003)(189003)(199004)(446003)(97736004)(1076003)(106356001)(3846002)(6116002)(81156014)(81166006)(11346002)(68736007)(86362001)(186003)(5640700003)(105586002)(99286004)(2351001)(486006)(50226002)(102836004)(6506007)(76176011)(386003)(66066001)(14454004)(71200400001)(71190400001)(478600001)(476003)(6916009)(7736002)(4326008)(8936002)(26005)(36756003)(316002)(54906003)(25786009)(256004)(6486002)(2616005)(53936002)(8676002)(2501003)(6512007)(2906002)(305945005)(52116002)(6436002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0401MB1887; H:VI1PR0401MB2237.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: sN7Rz53iu5VANH7KBvKaItzA7B+Zx4YZYfaWdacChwx4MyyceLgrWcBe8vsNAAMKe81xMR/6Q0a9zQiEY2OFdRIBQylHd7GnJTPDpp4tPKpUtQpxyEK+xYMWNeFwfxSzgwVZ+9twYhWxLIWq9Dvs3YfN4np4mvlvaLZEZq2j/ih/R6kPja7Es3Zy1+oHULjCENVvNXTls4H2kUD6CMdUwA8jYkI+t51ECrZ3+B76VDybO6ghYId7N+UUekr0sNQhyy+dE3smQBLuZuHlsXjsoUx/xN3Ymk6t39wI9t0PyZPc8C6m8wWaOovTfJDzHg8jyQeFwhWGdv1be7EwLsz/LOpcXxSyuoLC2+3eXHQ3DMcgAbqe6HJ4aTx5DXAdmg7DYAlAYJaIQ8++MxafNzYNQbjPFboIm4k8/aOBmwQk10A= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 867e5db9-297c-4d04-af81-08d69255633b X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Feb 2019 08:21:13.1166 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB1887 Subject: [U-Boot] [PATCH 3/3] mmc: fsl_esdhc: clarify i.MX eSDHC specific functions 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" A previous patch had added SDR104/HS200 support for fsl_esdhc. However this was only for i.MX eSDHC, and QorIQ eSDHC used different registers and method. This patch is to clarify i.MX eSDHC specific functions defined in that patch, and to use them only for i.MX eSDHC. The QorIQ eSDHC SDR104/HS200 support will be added in the future. Fixes: 51313b49f2b8 (mmc: fsl_esdhc: support SDR104 and HS200) Signed-off-by: Yangbo Lu Reviewed-by: Peng Fan --- drivers/mmc/fsl_esdhc.c | 79 +++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 63f922382f..44c040eb8d 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -682,7 +682,7 @@ static void esdhc_clock_control(struct fsl_esdhc_priv *priv, bool enable) #endif #ifdef MMC_SUPPORTS_TUNING -static int esdhc_change_pinstate(struct udevice *dev) +static int esdhc_imx_change_pinstate(struct udevice *dev) { struct fsl_esdhc_priv *priv = dev_get_priv(dev); int ret; @@ -708,7 +708,7 @@ static int esdhc_change_pinstate(struct udevice *dev) return ret; } -static void esdhc_reset_tuning(struct mmc *mmc) +static void esdhc_imx_reset_tuning(struct mmc *mmc) { struct fsl_esdhc_priv *priv = dev_get_priv(mmc->dev); struct fsl_esdhc *regs = priv->esdhc_regs; @@ -722,7 +722,7 @@ static void esdhc_reset_tuning(struct mmc *mmc) } } -static void esdhc_set_strobe_dll(struct mmc *mmc) +static void esdhc_imx_set_strobe_dll(struct mmc *mmc) { struct fsl_esdhc_priv *priv = dev_get_priv(mmc->dev); struct fsl_esdhc *regs = priv->esdhc_regs; @@ -749,7 +749,7 @@ static void esdhc_set_strobe_dll(struct mmc *mmc) } } -static int esdhc_set_timing(struct mmc *mmc) +static int esdhc_imx_set_timing(struct mmc *mmc) { struct fsl_esdhc_priv *priv = dev_get_priv(mmc->dev); struct fsl_esdhc *regs = priv->esdhc_regs; @@ -761,13 +761,13 @@ static int esdhc_set_timing(struct mmc *mmc) switch (mmc->selected_mode) { case MMC_LEGACY: case SD_LEGACY: - esdhc_reset_tuning(mmc); + esdhc_imx_reset_tuning(mmc); writel(mixctrl, ®s->mixctrl); break; case MMC_HS_400: mixctrl |= MIX_CTRL_DDREN | MIX_CTRL_HS400_EN; writel(mixctrl, ®s->mixctrl); - esdhc_set_strobe_dll(mmc); + esdhc_imx_set_strobe_dll(mmc); break; case MMC_HS: case MMC_HS_52: @@ -791,14 +791,13 @@ static int esdhc_set_timing(struct mmc *mmc) priv->mode = mmc->selected_mode; - return esdhc_change_pinstate(mmc->dev); + return esdhc_imx_change_pinstate(mmc->dev); } -static int esdhc_set_voltage(struct mmc *mmc) +static int esdhc_imx_set_voltage(struct mmc *mmc) { struct fsl_esdhc_priv *priv = dev_get_priv(mmc->dev); struct fsl_esdhc *regs = priv->esdhc_regs; - int ret; priv->signal_voltage = mmc->signal_voltage; switch (mmc->signal_voltage) { @@ -975,18 +974,18 @@ static int esdhc_set_ios_common(struct fsl_esdhc_priv *priv, struct mmc *mmc) #endif } - if (priv->mode != mmc->selected_mode) { - ret = esdhc_set_timing(mmc); + if (priv->esdhc_imx && priv->mode != mmc->selected_mode) { + ret = esdhc_imx_set_timing(mmc); if (ret) { - printf("esdhc_set_timing error %d\n", ret); + printf("esdhc_imx_set_timing error %d\n", ret); return ret; } } - if (priv->signal_voltage != mmc->signal_voltage) { - ret = esdhc_set_voltage(mmc); + if (priv->esdhc_imx && priv->signal_voltage != mmc->signal_voltage) { + ret = esdhc_imx_set_voltage(mmc); if (ret) { - printf("esdhc_set_voltage error %d\n", ret); + printf("esdhc_imx_set_voltage error %d\n", ret); return ret; } } @@ -1267,20 +1266,21 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; - writel(0, ®s->dllctrl); - if (priv->flags & ESDHC_FLAG_USDHC) { - if (priv->flags & ESDHC_FLAG_STD_TUNING) { - u32 val = readl(®s->tuning_ctrl); - - val |= STD_TUNING_EN; - val &= ~TUNING_START_TAP_MASK; - val |= priv->tuning_start_tap; - val &= ~TUNING_STEP_MASK; - val |= (priv->tuning_step) << TUNING_STEP_SHIFT; - writel(val, ®s->tuning_ctrl); + if (priv->esdhc_imx) { + writel(0, ®s->dllctrl); + if (priv->flags & ESDHC_FLAG_USDHC) { + if (priv->flags & ESDHC_FLAG_STD_TUNING) { + u32 val = readl(®s->tuning_ctrl); + + val |= STD_TUNING_EN; + val &= ~TUNING_START_TAP_MASK; + val |= priv->tuning_start_tap; + val &= ~TUNING_STEP_MASK; + val |= priv->tuning_step << TUNING_STEP_SHIFT; + writel(val, ®s->tuning_ctrl); + } } } - return 0; } @@ -1481,14 +1481,17 @@ static int fsl_esdhc_probe(struct udevice *dev) else priv->bus_width = 1; - val = fdtdec_get_int(fdt, node, "fsl,tuning-step", 1); - priv->tuning_step = val; - val = fdtdec_get_int(fdt, node, "fsl,tuning-start-tap", - TUNING_START_TAP_DEFAULT); - priv->tuning_start_tap = val; - val = fdtdec_get_int(fdt, node, "fsl,strobe-dll-delay-target", - STROBE_DLL_CTRL_SLV_DLY_TARGET_DEFAULT); - priv->strobe_dll_delay_target = val; + if (priv->esdhc_imx) { + priv->tuning_step = + fdtdec_get_int(fdt, node, "fsl,tuning-step", 1); + priv->tuning_start_tap = + fdtdec_get_int(fdt, node, "fsl,tuning-start-tap", + TUNING_START_TAP_DEFAULT); + priv->strobe_dll_delay_target = + fdtdec_get_int(fdt, node, + "fsl,strobe-dll-delay-target", + STROBE_DLL_CTRL_SLV_DLY_TARGET_DEFAULT); + } if (dev_read_bool(dev, "non-removable")) { priv->non_removable = 1; @@ -1628,9 +1631,9 @@ static const struct dm_mmc_ops fsl_esdhc_ops = { #endif static struct esdhc_soc_data usdhc_imx7d_data = { - .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING - | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 - | ESDHC_FLAG_HS400, + .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING | + ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200 | + ESDHC_FLAG_HS400, .caps = UHS_CAPS | MMC_MODE_HS200 | MMC_MODE_DDR_52MHz | MMC_MODE_HS_52MHz | MMC_MODE_HS, };