From patchwork Fri Nov 5 17:39:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1551504 X-Patchwork-Delegate: van.freenix@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-secospa-onmicrosoft-com header.b=mA3erqYh; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Hm78Y0BSgz9sCD for ; Sat, 6 Nov 2021 04:41:00 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D5B3383731; Fri, 5 Nov 2021 18:40:29 +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="mA3erqYh"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 359B983724; Fri, 5 Nov 2021 18:40:13 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MSGID_FROM_MTA_HEADER,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on062a.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::62a]) (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 B2B4883725 for ; Fri, 5 Nov 2021 18:40:03 +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=Jj329rv+rBJ46knDyKnjmms/lhxQ8LAbmJwqthyQ3pkMCQ9eCS/gLMMTbU8vPG04HbMmUX2wRs8lBd5ivB3vf/yPRCxB39jitVQtyo9FlCB2iGJzHH5BEaK2r9kOFcjZSDXRYipL+5InCHxFfJcvMe+z4fqIsurYvWD1IvHP8mxqQUU574vtcsKpGwJs1Bz58wQSgA449nN56yFwPofCRZPKtXMK2qENKzLoLSWRWwQ1h+Awcuq9wP7Rti6Q2jH+7t2SfC6mQKLeYwyKlAKEBx14mkp9YAY8+Wm/SjA/jMn7dTDRltFj9ZONlXg5RKqib65pt9wyGaLfjhjU11WuzQ== 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=bQC1oaWsYe+yBZF+ZnfR6Jbd0fWJM0JNU3ApzwekhQY=; b=fScGgMINQ50bSf6PA23EsJf0hlCvZLSLlCx45QeflNH88sF2qR06mjJxk+qeLGhUII6kUXPuZplJrkBLkN1Ow/2UpVMcoGEwLFl2raEzUuN1uYuAiHDKa/J8lAYM0GWP8eJtuCLXa7+CILzx0SK6Xstegct10iE5MdAUIQvIDIxMjHFFyz2ADEV0l9u9fBfFSmgeX7lla2XVfnqaQS1ngolGps3RViaSdIUfnoIMoCh/AL4htTRiVOpaHH75IyQmEtS1dTlYjvWmnYrt6PSzigTw7lgxcZBinnKe33wivgN64vikAgc16ww4lLvpZokkNIffzunmeP/OopXRDPYrwg== 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=bQC1oaWsYe+yBZF+ZnfR6Jbd0fWJM0JNU3ApzwekhQY=; b=mA3erqYh/DXLic0lvbICyMrdLx9X6GOP/xMR7ohx6HyDpNEUhol65WlBsqj3hX6sVi7EBCpMqvll/+yj9rgPRzLBij69ipNDKnr7bjJOGNITZ7nFrXflxwAivuSmczMvnLF6w26QTs94nYA7Fdn13QuImcx36oufELqazWqJA14= 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 DB7PR03MB3802.eurprd03.prod.outlook.com (2603:10a6:5:3b::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.19; Fri, 5 Nov 2021 17:40:02 +0000 Received: from DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::a9aa:f363:66e:fadf]) by DB7PR03MB4523.eurprd03.prod.outlook.com ([fe80::a9aa:f363:66e:fadf%6]) with mapi id 15.20.4649.021; Fri, 5 Nov 2021 17:40:02 +0000 From: Sean Anderson To: u-boot@lists.denx.de, Peng Fan , Jaehoon Chung Cc: Haibo Chen , Yangbo Lu , Fabio Estevam , Michael Walle , Sean Anderson Subject: [PATCH 04/11] mmc: fsl_esdhc_imx: clean up bus width configuration code Date: Fri, 5 Nov 2021 13:39:37 -0400 Message-Id: <20211105173945.92446-5-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211105173945.92446-1-sean.anderson@seco.com> References: <20211105173945.92446-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR17CA0012.namprd17.prod.outlook.com (2603:10b6:208:15e::25) 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 MN2PR17CA0012.namprd17.prod.outlook.com (2603:10b6:208:15e::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.10 via Frontend Transport; Fri, 5 Nov 2021 17:40:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5a715aac-6075-4a99-2d56-08d9a0834be6 X-MS-TrafficTypeDiagnostic: DB7PR03MB3802: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:94; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T22rlqVXjMri9jWkdU6j3+Ev9uGRCp17jXzprTA8cA/LoSNsc/1fcu2dwNkbhVmsxtTtqE9uyxwwL2RVbCM0s1AXP0y7fmb5iUHqtlZONUBJG1NeBg+R0Q5CBZr6XUwGTo030C2TvF6fp5JLwn38yJACHwv6Mat0WpLNiv/18f8LaL2M7BNRwJ1pgNPoVZSR7q/m6uIz94cYvp8L2KEpU0DCrBK9/sEEWVMZOpyOwezVqcDtWlFflmc7n6Y/wASMCZexFweP13QNoaWb+yflJk/yrp3XoQNsDYyGNS6nBEI2NXJu8XH48S1dBvQt2ciFW5BV0JK8sGEMtdCeJa1qAic9J+BMkcqrK0WXxwfn/LrKNDx0dZMZPo9Hk51/y6FbD1ShIn6g91NzEAIfq2eNJawfupqGm+XjKjgU28dJIFTjdQ0V08XH95lVY20kaf3ua8W3vrnq1eGIAxHPnGmgZk+xDIz1e6QWLpaG/EX4hVFn1FgzCfk/mkepnH7pFcX9SjGers7mfIm3DxzkHMjJ1QACaGZDfes15srlmAWhHxTImWOZ79qmtIgoznLsLSx+ODeVQlZ6ykiOeVA7TyLTLqTJc//br1TPINQl6ncp/z94p4aRGKmoCtcde2RbjtMTy+rTX9QeWVfGdgkdoJ3VarUYenC/nQHv7iRaK86SwKbj0JR8Zuf4qXEOvNmA6m3mONE+U+a+C2J/nKCjKuuxqQ== 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)(186003)(38100700002)(110136005)(54906003)(2616005)(38350700002)(1076003)(316002)(66556008)(956004)(66476007)(66946007)(6666004)(83380400001)(8676002)(5660300002)(86362001)(107886003)(26005)(52116002)(4326008)(36756003)(44832011)(6486002)(6512007)(8936002)(508600001)(2906002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Uqc3bOKbZBI8iAbbUBz1M/Z10pSvx1E0nC1YQKEW4nu/UTqrdZrE6R8pxbUBOicj188gSQZq37nkUyfRmEh7D2Xq9dvVdnXKTV+yIAg2eszkrS3JjuNR/+dHq4Pi/YX9xZBSQh0CFZxEOxyjrOUPGVOosuw59hnImPHwPO5p0XsGCw4EgBu19UpB2/dgO/jwvRuRdNb8qfNYMd6S/HP+t6WpH4e1UrcXpfCAl/n+I+UZhOAHBdxO1EB3lWqNTHYL6vGXmlTCWU0B7pAA2MKlNsNczdGk7i0EBCzIG+tPfORoRwHNk6NNLGyasz+gVbSwEJw/iwu6g/wP3h1dSfRSiewoJF7KAeICIKxuTcOmHYSVK17Uv/RhSM1Cu5tcUtx/GDSWt3iEc7XbmGgQg/sgxPbA9ohlXh0Fkts6ZTLE5DQ+Ehk2xq5ijggfYOIqR5L94C/dhWQ7wriIChdItkVMzEXrGKuFZlRmGCSJaXOZsnKvvrHav2JmRza2Pk/WKbvf9TSigC1OUsBiPnToneH9Y2lL6wbkCOpb+8qPcuqoiKQZrRasRLYArfR8AKxy1m3WFPUDE/lDo+nXA/7cJxC6t8FASzNAuec/j3hZbtsEl/v4WVvby/Qnbc6SJsiSMKoqKjWBriDDZ6gIWWZzoNoyKxLjVan0xAlGutrxel5gRQNFCoHGmx8cSdspfb9bb81SHmR3uWXVRnlLpUZWJbiAZf/2Z2mA+3aF1t2AD1RSy8D+kAWv2EtSh9RfSE4CKHJwGNIvD0WSb8GSSCCDJaHQQYpBmSOQfSCj6KVeMmQHx/jns6T4LGma2XUpMXSaGLVDNEZ945yFkNSMYHgYfKtyY3ilBRt8ipf2Zc0pPzPLDyABhuW/jWLPvERCJmIAEYmi2vImKyrrVQdiZlwlOYBaIch6TVNWayQeFOW4PI6E+PTNa3DGRemgpugt8Xi8ixT7GpQ3eCtb3lgkQfXNwkmztlCqb7ChV3et0jxmTVWLqMzyXjDszAEjzWtXleXllHvdTWMBa41DpJq4rBuKWR9XWFR3xUJSyO6aZmRtpca6VXT4P2TqoCN7FQMnwEEna0dfiz05Q+xZgKWaGdhace5mcs4neQvJ843H+VXaERLLZiRpnrep9p0Cj5UfAM7lcofwhVqpUCpQ3CAWBlhxJazogSFVBh/2JRi0Z/9/tA1vY758QcC50s/cQGvcADUZ6m+i8ACdmU3LzFmz6y3UH/bCu6V5W1z33jym8fgl0n0JVU271jDWUu2aMkGdKyPvdQ39n7c+Kt6quvVVq1En4K6QBG7BsN+cVWHX7KkQNYOERNLO2wBSYY9HEDuhVKSz31y4uGY0gwpMAOzIr/e0eTdMGj3Ww0H7U4oJ073Jj3oacVcmRw7O6cjeqsV/L1ypqtnp1JnKR0t/tyz2wg7RlT51lX2fwIWsEI5tUP8FoV7DlZNnJAbt69Ns6f29I0HHHack3B/myGFEB/vYXQo9+g5wUyXb7cZPvVPiTTqYXvdDvWHaUuhYg2Xa5bg5UDcKioYoIDwar07ERjPGbafazAHDhENyCDh9MPKi4AQdtckVmb/QS+Rdsnk0sVrCcEKIlQTaxjtfSUJPzRcN40hFtYmiHOsNIR/fj7BFQzJPzuCsOLE= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a715aac-6075-4a99-2d56-08d9a0834be6 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4523.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2021 17:40:02.5591 (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: /8ajMMJbPHijUgKmPj8rJFzP6ciJ4tn0xh6o94Hlc7PFFafUnSfUxozTz+1jIuYUAN+sPW5YgRVjOBTmpal68g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR03MB3802 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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 Signed-off-by: Sean Anderson --- drivers/mmc/fsl_esdhc_imx.c | 80 +++++++++++-------------------------- 1 file changed, 23 insertions(+), 57 deletions(-) diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index b91dda27f9..d3daf4db59 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 @@ -1232,31 +1230,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; @@ -1294,25 +1274,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; @@ -1328,14 +1294,30 @@ 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; + + if (cfg->max_bus_width == 8) { + mmc_cfg->host_caps |= MMC_MODE_1BIT | MMC_MODE_4BIT | + MMC_MODE_8BIT; + } else if (cfg->max_bus_width == 4) { + mmc_cfg->host_caps |= MMC_MODE_1BIT | MMC_MODE_4BIT; + } else if (cfg->max_bus_width == 1) { + mmc_cfg->host_caps |= MMC_MODE_1BIT; + } else { + mmc_cfg->host_caps |= MMC_MODE_1BIT | MMC_MODE_4BIT | + MMC_MODE_8BIT; + printf("No max bus width provided. Assume 8-bit supported.\n"); } +#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__); @@ -1416,14 +1398,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", @@ -1496,16 +1470,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;