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 F059FC433FE for ; Tue, 23 Nov 2021 20:06:10 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A79F583762; Tue, 23 Nov 2021 21:05:11 +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="Ce5kU1eA"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 575EB80735; Tue, 23 Nov 2021 21:04:33 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0626.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::626]) (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 A2AB782DF6 for ; Tue, 23 Nov 2021 21:04:22 +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=ieVpnGKgQmfDXYIEizMrDuLbInX9rM/8Elazzh4m5s/3Iy/mMLC8RIZUy/mWuVVsb6eZ5ArOGp+iCdPjOQDScln0MusDWqrEzyyYAmka+z6gldbLt0t4mySeG6mZKDSLukp8dmCocg4L58h7fTgAyhM2fsYwkzgTUUETKXg0IUczO+F4fyZKYKSWTMz8255J+5fodNn3o+doxNFaOGF9PmYC2Ks/C7t0NAMlebL2ouX5VG9/Mq26suSCAxVy8XcwUFKfHaVDjAz/1+BnmwixDFgmdeX6SU2PDpK/pTKbXdDQD2Zb510wO4z3xc8iQU4/U2obrS+8b+rNiHsEueu6dw== 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=7bBSEHIYHRnnpHl7jsVumTBOZo52VJbLd8i+Yvfei/Q=; b=aH7vR2Ej3Dyvq7Sr9169uuKkl2zKLKoI1xNR1BrgRepqR8QDkSk3ESb07Qg2D9P+RN1ZEStVGueCq67vxm2rs+KK5EdKIuUIxt8S8AGGAbA7DumuYEeivR3xHOZ7Lg3ty/uMvf0EMe517Cfe0dEef4ULD+gMTKMHvQlCpbNomOd2sQhWJ3TYx3FM0Mn7KGlBDs2X5bz31DnbsRapRf1vCXwfdxX13+UHtjKJAsugfJ3yCIGg8GjWNNB4M5HWHbohq9ak63dwWcdD8QB0pyzJu0rcIELpmxxkkdQ9GJMxxqhJ9dPjFtA7RNuOCOFYpTco5/MaH9oo38FeeaSpIdmDPA== 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=7bBSEHIYHRnnpHl7jsVumTBOZo52VJbLd8i+Yvfei/Q=; b=Ce5kU1eAO+TnGTQ03a1K79GRPl+cIxLmfm1V4xrfia/gCQx+ltBn2ChxMPMhqNc01PPrFvEoJVkJlJa6E9o5umlbRccT1FoFF86roOiU4TER5hiP4Gk+wIjef950N7qTzHv5kwo+fzyGTUAmt9l6ftI4nhw1uu+W1tiJtiLbipA= 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:21 +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:21 +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 10/12] mmc: fsl_esdhc_imx: replace most #ifdefs by IS_ENABLED() Date: Tue, 23 Nov 2021 15:03:45 -0500 Message-Id: <20211123200347.3772343-11-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:20 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ba05d9e-b7ef-45f1-a43b-08d9aebc7050 X-MS-TrafficTypeDiagnostic: DBBPR03MB7097: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:409; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mlLCIvYMnlBqgmoa6FEntfqTD9xCCWiD7s5P/jhHeQCcqPCHM1npx6TLALKxlerugNOiaHRgzddcHTImVtP2zixd2terMGXEDkzDCBhNHFT74J/n2wpjBDWSpmpMwQA6jwLBIRkULj8nceqdPThBaHs8PSPeGaDilSENcNqCEc5UuaYxP2mJTz3XnB4aQY5TZvE+ogVCrLh6XcuwUzJevbg0PJqC8QHgWErzAZLieB1lEXh1409AuGFISe/ql0qBkscymgAzytWuXANCzCtjDzXVbQCHLQORQa1nfgCZgOgI80zB2caNtpznfox/Z+8n1xKetpUQimwHy3AjpjnIR9bxYffhpIxBXdJkesrfrBop6cG8yiJWvGa3g++Wu1cKwWhOaliSQT1i9Jph/jQMX4sbhp8mRV6JaGs42JMyNfAmsrFJmu4EEauAGUU64Wji7pEAFFH4UQZQUrK+W1HCRv4m8iFXEegK1zL/fIsP5JydHAN/i1dP9YL2jrhvxhlqfeZIjLj6lBbRtxnFTuLnZ9IBfC4KtQtu+VK/9pc2B/+bYkGqqdbIbmPxGE7nLpWp1mY6L0CClM3souTTVzkzSz7OCGU3qJNLFVgZO8iBq3O/XQI/RiJk3mcULlrynRXX7IDy5oyHso4vcEAADze6usGLxln4FzXP8oVTRiUd+W/GAGt0alaWdVxki/lb2E8DHbSPtsGiPrY3cNpwTj7FZQ== 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)(30864003)(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?A6Ewl+hDv2XlCUDCHA/cz4ou0FCvW1jThvE4U7WdNARb/56KfQYF4hZDf3h6?= =?us-ascii?Q?Gh11cCtZ1Grbp8in+e9f0BWVftkwHsFQEG+Dzl5UHHFyBP+6hejoMINQsy4I?= =?us-ascii?Q?FQrn6vT/OdaMoMeulgZQQvKpKI5eYdS34JQqR541b858ODC1h5cjs5df3n7g?= =?us-ascii?Q?FLexs89h4zxErYtLK9Y7Fwh6XEXaSBKwIwIlPWD2k4Bk0ni902scSuUUzb18?= =?us-ascii?Q?JOJwQGDVnbsP6v5U/W5+3wHuf+jGS8LJ7kHum/GtBK+P2UchJ2hZHhOzq00f?= =?us-ascii?Q?vz8rJnqDcZUxiPcD6peBEXI4QDgRHiKwpGu+uuVavxmgglBxwk6khFDVsgjB?= =?us-ascii?Q?qRJ5H6Mia82AM7Wcpd/e4yKMRDVkzwjegr3pJc4yE1SKydXHZNk6cOZgpvzx?= =?us-ascii?Q?1cG49ZRdFSvt8gHRg8TazULug/6X2maU9fAEinYy1kKMf87u6oZkeuIajgrr?= =?us-ascii?Q?h3PH6OLCehSClHDn7dUKlFTqXEIZuaYl3V6AOm0lepz7Iu4n3ko4okC/IiwW?= =?us-ascii?Q?KhmTXZyVDblXvazIVACcwrUWjDzp+dnEUeDHuCU9GySisfUDRnZBLd++XOiE?= =?us-ascii?Q?nupuai2grCXK2Wj7+fcVtBVjAbApAbpGuizJ6vMk0ew9dqXCfk8stUwDpfdd?= =?us-ascii?Q?O49+tbEHbevQ0CIHAajzA0X155Ob5fEgS5awEP1ff3prZdgzOkNsPIqDZR2i?= =?us-ascii?Q?YrgWSJUgzRE+T7Y7SxbtnVE+Fk+7xxvFVMQ8wCBt6tmIqayqbfBcMNiWla0h?= =?us-ascii?Q?qk+in9sleEfwcGTnJCR+Y0aS/o9piv+vXTdFs4LSXUmQzIxiF4IBZJopKflq?= =?us-ascii?Q?KKeipVz9A3grvTf5jJY4QIrjGCDD0iqCfPJdA7jppjBXX1Qq668qQclPuY+/?= =?us-ascii?Q?uWY2/l3vFL6mgxzknd6dbTk7dNb/1KD5ov71vqqN8QssNwhqrJaYzLLqpXUx?= =?us-ascii?Q?1FpDNbVXfqc+KEYBhTl+j50wKO6ewwpV2y1oA4ojOU2d52/JZBTiqZYS/C34?= =?us-ascii?Q?e2nRAE/1M/OEjHemOXozZ1QykUUS26R+ZUDdyhfowmivubRGApMllLqfrexf?= =?us-ascii?Q?zO3QHDyscdFIi2D9/nFFvOf4pXn0L3npO+5C4OPkqWlYyewn4/VlyHggEynY?= =?us-ascii?Q?hj1ZwCsLU0BssekiDx5/9wftCnsskKS6ac0HrxeY0k2GhDGpvPNus6ynJlD4?= =?us-ascii?Q?NNio84ZX5Uf8O6MMvrB+X/nXyOPeHoGeuIq9041ki/8+UdrjZOy2fr98mf45?= =?us-ascii?Q?pN49LqAXPL8TYKbN/SEytTNm8bek6N/tgzN75/lmGs6/H8hZ6xpGbQxiAjJk?= =?us-ascii?Q?X6KPAuRMSVoyEt9w2iXZGhUflxAqIJ/nZBzwFLwm9YItKK6UgSClIjV9cVai?= =?us-ascii?Q?OQnWvNtk+18lLvP5F4X/+m8MgPC95dI4TvWrgwg60mSKB390htEqStnJ0mQi?= =?us-ascii?Q?QXfHU1ZSFSeXcZHnvTr2AqZSBVq1NI8klCgVhh2MOQWe5aICizzQE1pCc6Qc?= =?us-ascii?Q?RKYRLzSOKQU42SaVk47LiTfwJ/cCCVashVgCETGvW2K/MDQIhokpfYKhzl86?= =?us-ascii?Q?1GBQU81CQeRTcQfzG8bAL3PFHRawtWDKA6DXABPpTvUrHhDW37tUKUeKrejm?= =?us-ascii?Q?KgkfHqODbvC+tB5jPmB9RZc=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ba05d9e-b7ef-45f1-a43b-08d9aebc7050 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:21.3022 (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: 1Txo9mdWK19gMsSzrtucDMVkPFXTl7ABs3eOWxdp9f7sBWItrHBRXjFuknkqbip8gBCRExh3kvL+NMXFpoFVBw== 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 52faec31827ec1a1837977e29c067424426634c5 ] Make the code cleaner and drop the old-style #ifdef constructs where it is possible. Signed-off-by: Michael Walle Signed-off-by: Sean Anderson --- (no changes since v1) drivers/mmc/fsl_esdhc_imx.c | 209 +++++++++++++++++------------------- include/fsl_esdhc_imx.h | 2 - 2 files changed, 100 insertions(+), 111 deletions(-) diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index 6c25a77c79..2da70663cb 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -182,15 +182,15 @@ static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data) if (data) { xfertyp |= XFERTYP_DPSEL; -#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - xfertyp |= XFERTYP_DMAEN; -#endif + if (!IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO) && + cmd->cmdidx != MMC_CMD_SEND_TUNING_BLOCK && + cmd->cmdidx != MMC_CMD_SEND_TUNING_BLOCK_HS200) + xfertyp |= XFERTYP_DMAEN; if (data->blocks > 1) { xfertyp |= XFERTYP_MSBSEL; xfertyp |= XFERTYP_BCEN; -#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 - xfertyp |= XFERTYP_AC12EN; -#endif + if (IS_ENABLED(CONFIG_SYS_FSL_ERRATUM_ESDHC111)) + xfertyp |= XFERTYP_AC12EN; } if (data->flags & MMC_DATA_READ) @@ -214,7 +214,6 @@ static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data) return XFERTYP_CMD(cmd->cmdidx) | xfertyp; } -#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO /* * PIO Read/Write Mode reduce the performace as DMA is not used in this mode. */ @@ -277,9 +276,7 @@ static void esdhc_pio_read_write(struct fsl_esdhc_priv *priv, } } } -#endif -#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO static void esdhc_setup_watermark_level(struct fsl_esdhc_priv *priv, struct mmc_data *data) { @@ -299,7 +296,6 @@ static void esdhc_setup_watermark_level(struct fsl_esdhc_priv *priv, wml_value << 16); } } -#endif static void esdhc_setup_dma(struct fsl_esdhc_priv *priv, struct mmc_data *data) { @@ -342,11 +338,10 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, } } -#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO - esdhc_setup_watermark_level(priv, data); -#else - esdhc_setup_dma(priv, data); -#endif + if (IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO)) + esdhc_setup_watermark_level(priv, data); + else + esdhc_setup_dma(priv, data); /* Calculate the timeout period for data transactions */ /* @@ -379,14 +374,13 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, if (timeout < 0) timeout = 0; -#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC_A001 - if ((timeout == 4) || (timeout == 8) || (timeout == 12)) + if (IS_ENABLED(CONFIG_SYS_FSL_ERRATUM_ESDHC_A001) && + (timeout == 4 || timeout == 8 || timeout == 12)) timeout++; -#endif -#ifdef ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE - timeout = 0xE; -#endif + if (IS_ENABLED(ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE)) + timeout = 0xE; + esdhc_clrsetbits32(®s->sysctl, SYSCTL_TIMEOUT_MASK, timeout << 16); return 0; @@ -409,6 +403,11 @@ static inline void sd_swap_dma_buff(struct mmc_data *data) } } } +#else +static inline void sd_swap_dma_buff(struct mmc_data *data) +{ + return; +} #endif /* @@ -425,10 +424,9 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, struct fsl_esdhc *regs = priv->esdhc_regs; unsigned long start; -#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111 - if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) + if (IS_ENABLED(CONFIG_SYS_FSL_ERRATUM_ESDHC111) && + cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION) return 0; -#endif esdhc_write32(®s->irqstat, -1); @@ -526,42 +524,40 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, /* Wait until all of the blocks are transferred */ if (data) { -#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO - esdhc_pio_read_write(priv, data); -#else - flags = DATA_COMPLETE; - if ((cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK) || - (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200)) { - flags = IRQSTAT_BRR; + if (IS_ENABLED(CONFIG_SYS_FSL_ESDHC_USE_PIO)) { + esdhc_pio_read_write(priv, data); + } else { + flags = DATA_COMPLETE; + if (cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK || + cmd->cmdidx == MMC_CMD_SEND_TUNING_BLOCK_HS200) + flags = IRQSTAT_BRR; + + do { + irqstat = esdhc_read32(®s->irqstat); + + if (irqstat & IRQSTAT_DTOE) { + err = -ETIMEDOUT; + goto out; + } + + if (irqstat & DATA_ERR) { + err = -ECOMM; + goto out; + } + } while ((irqstat & flags) != flags); + + /* + * Need invalidate the dcache here again to avoid any + * cache-fill during the DMA operations such as the + * speculative pre-fetching etc. + */ + dma_unmap_single(priv->dma_addr, + data->blocks * data->blocksize, + mmc_get_dma_dir(data)); + if (IS_ENABLED(CONFIG_MCF5441x) && + (data->flags & MMC_DATA_READ)) + sd_swap_dma_buff(data); } - - do { - irqstat = esdhc_read32(®s->irqstat); - - if (irqstat & IRQSTAT_DTOE) { - err = -ETIMEDOUT; - goto out; - } - - if (irqstat & DATA_ERR) { - err = -ECOMM; - goto out; - } - } while ((irqstat & flags) != flags); - - /* - * Need invalidate the dcache here again to avoid any - * cache-fill during the DMA operations such as the - * speculative pre-fetching etc. - */ - dma_unmap_single(priv->dma_addr, - data->blocks * data->blocksize, - mmc_get_dma_dir(data)); -#ifdef CONFIG_MCF5441x - if (data->flags & MMC_DATA_READ) - sd_swap_dma_buff(data); -#endif -#endif } out: @@ -595,21 +591,22 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock) struct fsl_esdhc *regs = priv->esdhc_regs; int div = 1; u32 tmp; - int ret; -#ifdef ARCH_MXC -#ifdef CONFIG_MX53 - /* For i.MX53 eSDHCv3, SYSCTL.SDCLKFS may not be set to 0. */ - int pre_div = (regs == (struct fsl_esdhc *)MMC_SDHC3_BASE_ADDR) ? 2 : 1; -#else - int pre_div = 1; -#endif -#else - int pre_div = 2; -#endif + int ret, pre_div; int ddr_pre_div = mmc->ddr_mode ? 2 : 1; int sdhc_clk = priv->sdhc_clk; uint clk; + if (IS_ENABLED(ARCH_MXC)) { +#ifdef CONFIG_MX53 + /* For i.MX53 eSDHCv3, SYSCTL.SDCLKFS may not be set to 0. */ + pre_div = (regs == (struct fsl_esdhc *)MMC_SDHC3_BASE_ADDR) ? 2 : 1; +#else + pre_div = 1; +#endif + } else { + pre_div = 2; + } + while (sdhc_clk / (16 * pre_div * ddr_pre_div) > clock && pre_div < 256) pre_div *= 2; @@ -621,11 +618,10 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock) clk = (pre_div << 8) | (div << 4); -#ifdef CONFIG_FSL_USDHC - esdhc_clrbits32(®s->vendorspec, VENDORSPEC_CKEN); -#else - esdhc_clrbits32(®s->sysctl, SYSCTL_CKEN); -#endif + if (IS_ENABLED(CONFIG_FSL_USDHC)) + esdhc_clrbits32(®s->vendorspec, VENDORSPEC_CKEN); + else + esdhc_clrbits32(®s->sysctl, SYSCTL_CKEN); esdhc_clrsetbits32(®s->sysctl, SYSCTL_CLOCK_MASK, clk); @@ -633,11 +629,10 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock) if (ret) pr_warn("fsl_esdhc_imx: Internal clock never stabilised.\n"); -#ifdef CONFIG_FSL_USDHC - esdhc_setbits32(®s->vendorspec, VENDORSPEC_PEREN | VENDORSPEC_CKEN); -#else - esdhc_setbits32(®s->sysctl, SYSCTL_PEREN | SYSCTL_CKEN); -#endif + if (IS_ENABLED(CONFIG_FSL_USDHC)) + esdhc_setbits32(®s->vendorspec, VENDORSPEC_PEREN | VENDORSPEC_CKEN); + else + esdhc_setbits32(®s->sysctl, SYSCTL_PEREN | SYSCTL_CKEN); mmc->clock = sdhc_clk / pre_div / div; priv->clock = clock; @@ -1148,22 +1143,21 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, if (ret) return ret; -#ifdef CONFIG_MCF5441x /* ColdFire, using SDHC_DATA[3] for card detection */ - esdhc_write32(®s->proctl, PROCTL_INIT | PROCTL_D3CD); -#endif + if (IS_ENABLED(CONFIG_MCF5441x)) + esdhc_write32(®s->proctl, PROCTL_INIT | PROCTL_D3CD); -#ifndef CONFIG_FSL_USDHC - esdhc_setbits32(®s->sysctl, SYSCTL_PEREN | SYSCTL_HCKEN - | SYSCTL_IPGEN | SYSCTL_CKEN); - /* Clearing tuning bits in case ROM has set it already */ - esdhc_write32(®s->mixctrl, 0); - esdhc_write32(®s->autoc12err, 0); - esdhc_write32(®s->clktunectrlstatus, 0); -#else - esdhc_setbits32(®s->vendorspec, VENDORSPEC_PEREN | - VENDORSPEC_HCKEN | VENDORSPEC_IPGEN | VENDORSPEC_CKEN); -#endif + if (IS_ENABLED(CONFIG_FSL_USDHC)) { + esdhc_setbits32(®s->vendorspec, VENDORSPEC_PEREN | + VENDORSPEC_HCKEN | VENDORSPEC_IPGEN | VENDORSPEC_CKEN); + } else { + esdhc_setbits32(®s->sysctl, SYSCTL_PEREN | SYSCTL_HCKEN + | SYSCTL_IPGEN | SYSCTL_CKEN); + /* Clearing tuning bits in case ROM has set it already */ + esdhc_write32(®s->mixctrl, 0); + esdhc_write32(®s->autoc12err, 0); + esdhc_write32(®s->clktunectrlstatus, 0); + } if (priv->vs18_enable) esdhc_setbits32(®s->vendorspec, ESDHC_VENDORSPEC_VSELECT); @@ -1175,22 +1169,20 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, #endif caps = esdhc_read32(®s->hostcapblt); -#ifdef CONFIG_MCF5441x + /* * MCF5441x RM declares in more points that sdhc clock speed must * never exceed 25 Mhz. From this, the HS bit needs to be disabled * from host capabilities. */ - caps &= ~ESDHC_HOSTCAPBLT_HSS; -#endif + if (IS_ENABLED(CONFIG_MCF5441x)) + caps &= ~HOSTCAPBLT_HSS; -#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC135 - caps &= ~(HOSTCAPBLT_SRS | HOSTCAPBLT_VS18 | HOSTCAPBLT_VS30); -#endif + if (IS_ENABLED(CONFIG_SYS_FSL_ERRATUM_ESDHC135)) + caps &= ~(HOSTCAPBLT_SRS | HOSTCAPBLT_VS18 | HOSTCAPBLT_VS30); -#ifdef CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33 - caps |= HOSTCAPBLT_VS33; -#endif + if (IS_ENABLED(CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33)) + caps |= HOSTCAPBLT_VS33; if (caps & HOSTCAPBLT_VS18) cfg->voltages |= MMC_VDD_165_195; @@ -1200,12 +1192,13 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv, cfg->voltages |= MMC_VDD_32_33 | MMC_VDD_33_34; cfg->name = "FSL_SDHC"; + #if !CONFIG_IS_ENABLED(DM_MMC) cfg->ops = &esdhc_ops; #endif -#ifdef CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE - cfg->host_caps |= MMC_MODE_DDR_52MHz; -#endif + + if (IS_ENABLED(CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE)) + cfg->host_caps |= MMC_MODE_DDR_52MHz; if (caps & HOSTCAPBLT_HSS) cfg->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; @@ -1289,10 +1282,8 @@ int fsl_esdhc_initialize(struct bd_info *bis, struct fsl_esdhc_cfg *cfg) return -EINVAL; } -#ifdef CONFIG_ESDHC_DETECT_8_BIT_QUIRK - if (CONFIG_ESDHC_DETECT_8_BIT_QUIRK) + if (IS_ENABLED(CONFIG_ESDHC_DETECT_8_BIT_QUIRK)) mmc_cfg->host_caps &= ~MMC_MODE_8BIT; -#endif ret = fsl_esdhc_init(priv, plat); if (ret) { diff --git a/include/fsl_esdhc_imx.h b/include/fsl_esdhc_imx.h index 4ae932858e..2153f29bef 100644 --- a/include/fsl_esdhc_imx.h +++ b/include/fsl_esdhc_imx.h @@ -24,12 +24,10 @@ #define SYSCTL_INITA 0x08000000 #define SYSCTL_TIMEOUT_MASK 0x000f0000 #define SYSCTL_CLOCK_MASK 0x0000fff0 -#if !defined(CONFIG_FSL_USDHC) #define SYSCTL_CKEN 0x00000008 #define SYSCTL_PEREN 0x00000004 #define SYSCTL_HCKEN 0x00000002 #define SYSCTL_IPGEN 0x00000001 -#endif #define SYSCTL_RSTA 0x01000000 #define SYSCTL_RSTC 0x02000000 #define SYSCTL_RSTD 0x04000000 -- 2.25.1