From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F3E20C433EF for ; Tue, 23 Nov 2021 20:05:04 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 30CBC80735; Tue, 23 Nov 2021 21:04:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.b="wshc0Kzi"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CE54F80735; Tue, 23 Nov 2021 21:04:21 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0604.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe02::604]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9AE4A83685 for ; Tue, 23 Nov 2021 21:04:12 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UDX+UIiHupyyW0zqzUZSNecHiMUAqKZxJ4d59RVaDDrF7k6ovQIBttU5LAWms6zkmtn4WIHF0G1ceGzG+U0XrBzyH434VWg3LgAcE992FgA+y1tNT93HtAm3t6ToU1kpYI8Sr698K2OJ+5/7hoXd0ZDpWK2ls7VCXfJogbghCeC7eOaMKy5pFCE9JEfDmlqXsXuxluyoGa5kfr3hzdeIYitiKnkMiuAxGt/l9DzV9+rJhdRXtKV7+KVlEmupnJvr4DzZ1GA7O6tJs4okio4U62VP9IgCnRfxfwUUxCHWy85R2Bh/mcyUBBARGE6wBe9PmfJl1WjChlgvoQhMfZopeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CdiQBEu73iOM751GIbnH0J642UAxHwJ222INFVI9ikE=; b=XAJuqonu+FdZiVBkM4CoG+CrI7PxcY/HAnQNxY136gJOKa/qZj/xWv7E8ozxQccpkQylD679FsX5mHE3XkpTPo0QztUXE6SZkXCPRdD42hpQwkpum8ok0kT2sZ2cBPHHYS82jmWt3P6G8qtYQxYXnS0YTovPaL01OboYBinCfduXI/jl/S3s3Z6iD6m9GDb++X+v90UbBjnyKhxHqGDqTIe0us/pfafbQ4/Dc77npdtcZFZOZ+rfOu7+yLwHpo7YGYtV535hiIPdizFyMr7KyLXQtrrXOvPo31VA9dxQGYuAnVoIg+nkLIkRn/MMAXw3BEWz8mGd7I8ok/yfEsHdPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=secospa.onmicrosoft.com; s=selector2-secospa-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CdiQBEu73iOM751GIbnH0J642UAxHwJ222INFVI9ikE=; b=wshc0KzilJ4Zrh4XsRFOhDyW9qtUDnOAAYJUMPkzyJHfR1q72p3iAoxou138hvnUJhWdDmHwkZOygS+YOSBL9CWe/DMkIFmDuxbFKy+L+siN5tsT7lU6wpU6Ovt/2o48Kd9/Y0c7lYS1Vabk6M8x+5qjq1UPO4fifs+A0FMQwlA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=seco.com; Received: from DB7PR03MB4523.eurprd03.prod.outlook.com (2603:10a6:10:19::27) by DBBPR03MB7097.eurprd03.prod.outlook.com (2603:10a6:10:1f5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.24; Tue, 23 Nov 2021 20:04:11 +0000 Received: from DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::9093:a60b:46b7:32ee]) by DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::9093:a60b:46b7:32ee%4]) with mapi id 15.20.4713.025; Tue, 23 Nov 2021 20:04:11 +0000 From: Sean Anderson To: u-boot@lists.denx.de, Peng Fan , Jaehoon Chung Cc: Haibo Chen , Fabio Estevam , Yangbo Lu , Michael Walle , Sean Anderson Subject: [PATCH v3 04/12] mmc: fsl_esdhc_imx: clean up bus width configuration code Date: Tue, 23 Nov 2021 15:03:39 -0500 Message-Id: <20211123200347.3772343-5-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211123200347.3772343-1-sean.anderson@seco.com> References: <20211123200347.3772343-1-sean.anderson@seco.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MN2PR06CA0022.namprd06.prod.outlook.com (2603:10b6:208:23d::27) To DB7PR03MB4523.eurprd03.prod.outlook.com (2603:10a6:10:19::27) MIME-Version: 1.0 Received: from plantagenet.inhand.com (50.195.82.171) by MN2PR06CA0022.namprd06.prod.outlook.com (2603:10b6:208:23d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.19 via Frontend Transport; Tue, 23 Nov 2021 20:04:10 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 32273f35-150c-4e3f-79c2-08d9aebc6aa8 X-MS-TrafficTypeDiagnostic: DBBPR03MB7097: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:93; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /trIU/svjYyBUi2ST4JBpz3FnSBXyNvcmdtLtDi+nLW7T39tWewzD3Ou7vljB8hwkyyJrZIgp/J5tMCBOIBZHMQ/izow+2t9zJYyv4GvGNKDIiPe+BVykmPqc4NOuC1kBlrBAcS2E5a/pAs0YyvWDXLh+DZo3t/DPgnOH6Cqi88oaFkpB/EIjg7j6SbnXrW0siJOUha0CM8tT3FgrgoOMLbi8VDAsEfLoDRRo8Jo/XfW/Exzx7KhoOJXiwSKQYMtS0NFwcg00qjNufnVSsZf4gTR5X6G1e0cgP4SOeBh2fGfP+b79ZW4HGQK9gtxBN8+QkFUmKMVSOlISnptMERmM0fdKCRvuacfH1Un8Gw9H17xkr8eSeD/sPEpODeCWodGLzLoCZLGxrA1lAtRlRqgwHqKdAwB9VfT0TfmAx1oSC/UyayKPcF6zrSpM0j7mBX60JZe1WNgMyTR5IvK0MJRxcp2TVAKvFAiIftbz/Xie5wbCd4Q9acULeHBwqRtrAy5FY3oxnKRBIrNKpi52LezbuVdel/SvIH/ZqdMGOUgXSPaYuajCGG4vLHdBvfvYcJTCZ3OXCVQ0o7sJoktpTb+G1mCiwBfFlGcLw+KMcoarB4tuYQYUCRaK7aPBPCMpgr6fDPQQ3q4Gvu2shnVMV9zZQ6X0Q503tl3Xl681bo8vjzCGFQnDMIqAN62bkRcQ5wyUQSxg75u11DQNIJgIcptaA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR03MB4523.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(26005)(8676002)(4326008)(107886003)(186003)(8936002)(38350700002)(38100700002)(6506007)(86362001)(1076003)(2906002)(52116002)(5660300002)(6666004)(54906003)(6486002)(110136005)(316002)(2616005)(83380400001)(66476007)(6512007)(44832011)(956004)(36756003)(66946007)(66556008)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TZwchUpVm+VPSCdrXQ5PARyAVFPX+iODM+bwhRN5jlVIfIIpV/5Onkf/s4D0?= =?us-ascii?Q?kBLbEioO10ej3o7Kh4YsNK2r2U1idhlRKjJy6Hxak0Gnw0wJ1/u+ymFoHJnc?= =?us-ascii?Q?tpYY+s0Qgmx3EKlLbaTB7IaSBBjU6MoXEmQ7CURF0FFnbLEDvH6vx2+C/cVo?= =?us-ascii?Q?KDkb7lElpRPfMt0xzGYiOVXKO7M7joKgwhXJGm6FPMSgVuKAC+rAg6N4JvxI?= =?us-ascii?Q?0HFI8cQZ2sdLe9+u/10zWpQaR9tZenHNZsS0Y9GgHHL2BQpmQiceFDuMwZb/?= =?us-ascii?Q?UOa0qypJgCaJ/oGUQBPAZEhonNPKJVbMCAOkAXVuq/8VPcZQpMjZGs3Q4qzx?= =?us-ascii?Q?GSxvpASZ44Xz/l7oWj7/PAPjhIQXrDCFhqviMqk3y3JhgKby9C1QLhE4+WD7?= =?us-ascii?Q?/HKrnQ/bcGD9GP2oP/5Hc7uSDd27yqMuyjq8+s/J8xURf7ekRFwHRn4oO+QA?= =?us-ascii?Q?GCbi1v9CHAcE/vlr6vmA0SP/W2dhY2GQg3R2YIrXWGYB53ltrEW9jm2sde81?= =?us-ascii?Q?zcL01d9aUbjUvuden3BF7Xx7XfinEi5kn6+eMQHTJWZF206yFXuKB4ewNo5R?= =?us-ascii?Q?chZJm0JJ8MIAh9kYVtChy7KnVd2Mv8h9O3A4abwCsjlUlDzKTxGV5yl8ftZF?= =?us-ascii?Q?x7gyVtuy7z1Rwt3leg3XQCoPGkjztDKXuKrQdLtAwmJseb6vTJH5ol7cvXSj?= =?us-ascii?Q?OLrZqMnj/xRgGqcxnw88futeQUfecCkN9qWOcUbGTlCHWL90B+ITVdCM47Bi?= =?us-ascii?Q?JOyXgAlBxmD7cUcSj7stHKWWR3tJpz8+pQ0zIfPD63aoZlP/in5eJNQQaf6+?= =?us-ascii?Q?igUprlPzlOhjlCB26KVBQIlNrvKtbpnosUmys9CrwZzTSKESsNpN7JLKxxKj?= =?us-ascii?Q?rErMHqxE8OO/rQ6sUIiSD2sB6iDTdzGWSWMzOXIPhd0zEaQCsFn0akUt7axA?= =?us-ascii?Q?mFv1tXrVesRbGwdFX7uueG5hzdNh9LOhpItTAPu2vW23U+naPIq6IfCjm4yg?= =?us-ascii?Q?tmVQwVs37pA8Z7L46EGPobGusZbxsb+OubVILdGT6WKcNG7XpOXItatNNF2v?= =?us-ascii?Q?cr3nx9fan6DAMfHhlpbzglqosYLalEmt+Cwlig/bIMBFIXGQIDldSdjfw0UH?= =?us-ascii?Q?8XvPmIUkoon7tKy8UfScCFqbCPdJmOxRT1w23yk525ZwGtr/3/9nxocQ5tKt?= =?us-ascii?Q?t0Ab958R+Xqky9IjLGjY1/eTJVXAMdF/vM3I5LPf4ulhMIQGtWZlkOrUzuRa?= =?us-ascii?Q?gejysBbgTbbV6b/KLtYO7eY9T7olIXuzCXD2wsNtxdORpmzGCICun59NTGin?= =?us-ascii?Q?T0yMgEmajsc5jvMMUTW9Emd6v6+bTem8YNr/LBXVnBiwE8q9iPTMeFbzmJBI?= =?us-ascii?Q?XKVnJj9GTEOm5/RDGCw0ndS9BMp2A8/dEsLQAFhpMNf6heU6j99D2WmKpecy?= =?us-ascii?Q?Jhab38WVCSd8ud2o7grd3zCzCzE36J1uWFvdutg2tUwNXmQrvHaPNHp7M/ay?= =?us-ascii?Q?6F1OqXdDEOTV3yPdRLNNCp+ToituTOlNx78LMP1Gxr39BwbX/ebXjk3Zp3GP?= =?us-ascii?Q?6T7DSS+sleQ0MQe8eGjFXKGiFFFV8I07vcP8yH3sqKlEWY2FFFJDnqpLkkh+?= =?us-ascii?Q?NGbv9QlX3RYRcRnJE5Ch2oU=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32273f35-150c-4e3f-79c2-08d9aebc6aa8 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4523.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Nov 2021 20:04:11.8155 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BTPi5hHo326Pv6YtH+AvDHnw6pai9NQMYJBbqG3wIweTaQa/zYP1is3rf1wb4GldZzjbKaRa6tmHKz0DfydiGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB7097 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.37 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" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean [ fsl_esdhc commit 07bae1de382723b94244096953b05225572728cd ] This patch is to clean up bus width setting code. - For DM_MMC, remove getting "bus-width" from device tree. This has been done in mmc_of_parse(). - For non-DM_MMC, move bus width configuration from fsl_esdhc_init() to fsl_esdhc_initialize() which is non-DM_MMC specific. And fix up bus width configuration to support only 1-bit, 4-bit, or 8-bit. Keep using 8-bit if it's not set because many platforms use driver without providing max bus width. - Remove bus_width member from fsl_esdhc_priv structure. Signed-off-by: Yangbo Lu [ converted if statement to switch ] Signed-off-by: Sean Anderson Reviewed-by: Jaehoon Chung --- (no changes since v2) Changes in v2: - Use a switch statement instead of ifs for max_bus_width - Only default to 8 bit width when max_bus_width is not set drivers/mmc/fsl_esdhc_imx.c | 83 ++++++++++++------------------------- 1 file changed, 26 insertions(+), 57 deletions(-) diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index f4ccb19d9f..98b3db737b 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -126,7 +126,6 @@ struct esdhc_soc_data { * * @esdhc_regs: registers of the sdhc controller * @sdhc_clk: Current clk of the sdhc controller - * @bus_width: bus width, 1bit, 4bit or 8bit * @cfg: mmc config * @mmc: mmc * Following is used when Driver Model is enabled for MMC @@ -151,7 +150,6 @@ struct fsl_esdhc_priv { struct clk per_clk; unsigned int clock; unsigned int mode; - unsigned int bus_width; #if !CONFIG_IS_ENABLED(DM_MMC) struct mmc *mmc; #endif @@ -1235,31 +1233,13 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, #if !CONFIG_IS_ENABLED(DM_MMC) cfg->ops = &esdhc_ops; #endif - if (priv->bus_width == 8) - cfg->host_caps = MMC_MODE_4BIT | MMC_MODE_8BIT; - else if (priv->bus_width == 4) - cfg->host_caps = MMC_MODE_4BIT; - - cfg->host_caps = MMC_MODE_4BIT | MMC_MODE_8BIT; #ifdef CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE cfg->host_caps |= MMC_MODE_DDR_52MHz; #endif - if (priv->bus_width > 0) { - if (priv->bus_width < 8) - cfg->host_caps &= ~MMC_MODE_8BIT; - if (priv->bus_width < 4) - cfg->host_caps &= ~MMC_MODE_4BIT; - } - if (caps & HOSTCAPBLT_HSS) cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; -#ifdef CONFIG_ESDHC_DETECT_8_BIT_QUIRK - if (CONFIG_ESDHC_DETECT_8_BIT_QUIRK) - cfg->host_caps &= ~MMC_MODE_8BIT; -#endif - cfg->host_caps |= priv->caps; cfg->f_min = 400000; @@ -1297,25 +1277,11 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, } #if !CONFIG_IS_ENABLED(DM_MMC) -static int fsl_esdhc_cfg_to_priv(struct fsl_esdhc_cfg *cfg, - struct fsl_esdhc_priv *priv) -{ - if (!cfg || !priv) - return -EINVAL; - - priv->esdhc_regs = (struct fsl_esdhc *)(unsigned long)(cfg->esdhc_base); - priv->bus_width = cfg->max_bus_width; - priv->sdhc_clk = cfg->sdhc_clk; - priv->wp_enable = cfg->wp_enable; - priv->vs18_enable = cfg->vs18_enable; - - return 0; -}; - int fsl_esdhc_initialize(struct bd_info *bis, struct fsl_esdhc_cfg *cfg) { struct fsl_esdhc_plat *plat; struct fsl_esdhc_priv *priv; + struct mmc_config *mmc_cfg; struct mmc *mmc; int ret; @@ -1331,14 +1297,33 @@ int fsl_esdhc_initialize(struct bd_info *bis, struct fsl_esdhc_cfg *cfg) return -ENOMEM; } - ret = fsl_esdhc_cfg_to_priv(cfg, priv); - if (ret) { - debug("%s xlate failure\n", __func__); - free(plat); - free(priv); - return ret; + priv->esdhc_regs = (struct fsl_esdhc *)(unsigned long)(cfg->esdhc_base); + priv->sdhc_clk = cfg->sdhc_clk; + priv->wp_enable = cfg->wp_enable; + + mmc_cfg = &plat->cfg; + + switch (cfg->max_bus_width) { + case 0: /* Not set in config; assume everything is supported */ + case 8: + mmc_cfg->host_caps |= MMC_MODE_8BIT; + fallthrough; + case 4: + mmc_cfg->host_caps |= MMC_MODE_4BIT; + fallthrough; + case 1: + mmc_cfg->host_caps |= MMC_MODE_1BIT; + break; + default: + printf("invalid max bus width %u\n", cfg->max_bus_width); + return -EINVAL; } +#ifdef CONFIG_ESDHC_DETECT_8_BIT_QUIRK + if (CONFIG_ESDHC_DETECT_8_BIT_QUIRK) + mmc_cfg->host_caps &= ~MMC_MODE_8BIT; +#endif + ret = fsl_esdhc_init(priv, plat); if (ret) { debug("%s init failure\n", __func__); @@ -1420,14 +1405,6 @@ static int fsl_esdhc_of_to_plat(struct udevice *dev) priv->dev = dev; priv->mode = -1; - val = dev_read_u32_default(dev, "bus-width", -1); - if (val == 8) - priv->bus_width = 8; - else if (val == 4) - priv->bus_width = 4; - 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", @@ -1500,16 +1477,8 @@ static int fsl_esdhc_probe(struct udevice *dev) #if CONFIG_IS_ENABLED(OF_PLATDATA) struct dtd_fsl_esdhc *dtplat = &plat->dtplat; - unsigned int val; priv->esdhc_regs = map_sysmem(dtplat->reg[0], dtplat->reg[1]); - val = plat->dtplat.bus_width; - if (val == 8) - priv->bus_width = 8; - else if (val == 4) - priv->bus_width = 4; - else - priv->bus_width = 1; if (dtplat->non_removable) priv->non_removable = 1; -- 2.25.1