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 EC26CC433EF for ; Tue, 23 Nov 2021 20:05:50 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 23F2E83753; Tue, 23 Nov 2021 21:04:59 +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="CykrZdtR"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0924982F8B; Tue, 23 Nov 2021 21:04:29 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0605.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::605]) (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 896B182F8B for ; Tue, 23 Nov 2021 21:04:20 +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=XxE2dDSDHp/CWKZG0qNxQZfF5ObUzzrpCvt1hYFeEAXZnYLQE/KqLad4v0ddtPYzR5Ul+IMcMVBpyXhbqunz6JhUSIPpH6XHuYrp43AmUfCgYlBJlX4I/fQ1s7KFvl73GmoZaY/cg3p9u0sYk3WhRcomWSliEwSKq4ODlLFGqMsBZeUF0EzXFTz7v5YpSnncuF5cDZelfurlnMgukaM3E8ijk6gLIhOYbuAuWl5s6ava1vLS8JOTbAOLdrqAo0roDQLG/5/725OgiOVt4KOynf8f+RyDq1pPkwAI8IFznmG4MKBFB0hP7OgahN3IclURqiP8/nLHOHQAmR65CUf2Wg== 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=r4uxd0bXvrGK4wv75WSLuN9BTYCDM8dlB71C7WjmaiA=; b=e/3X1fxj6KR2vS7ITw7rXawxTAyFc85cZhUA5W7e8Lhi0Wt4a8MQ8Sq6NwmrjF3tLb4mntraZSr3k1UwurVW+ZQ9am1AtNPkCu8IeXxTRqaYH0Qlr7oUKgqI/nlQ5/CGYXxm6AFtjLI7PIMxCNefwIRdmOpmkCWI+jX030X2/Yb6mdb8GvxngeGnwBapy7pqjLFdRRnvtReUgtv1RtpmQBLSn6wBGsioORzykrt68zOuhig2Flp8zOipaoLfLXmxdMl1BhUA5e+Rge62fMRTVHyeAkvA8UlBtDiCk41uNjtLhyf1EQjz1DqAAJeverWB6kv3NRPt8I9/p5C1hPyrrQ== 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=r4uxd0bXvrGK4wv75WSLuN9BTYCDM8dlB71C7WjmaiA=; b=CykrZdtRNSP7naGdTzkr6ECfm4+99WZQahyHo5YzUpz0va1ECKGC70tAZv1ruwAfX3y40MI5f4tOK+kbD94F3f3QCtZRAevkFNwTPHu2WLAE5tNrm0EfSDv/djfBk2kIM1wBziYyRThFFYU7piFs9QWudjpRrMvl4qFCr4LKzpg= 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:19 +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:19 +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 09/12] mmc: fsl_esdhc_imx: simplify esdhc_setup_data() Date: Tue, 23 Nov 2021 15:03:44 -0500 Message-Id: <20211123200347.3772343-10-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:18 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1a010a64-7447-48d7-0fde-08d9aebc6f58 X-MS-TrafficTypeDiagnostic: DBBPR03MB7097: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1468; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9X/dVjnLqtUzq4xDnV1EKQl63WMXRFJ+dtee9VkNZuSLVSTK2FRresgGuNbJKQgRS3oAgCju1X7JpRodHg3PtWOraCazCcLiZhfXRdD9NYC3jEaiJjs1iotngxNAHDc/A5JgEAjTewqSabpZW1CC8WIVdlopDoJleszArb5GU/2lxMoHi3x4dutu/sbG8+m0CKKBM0UlE8nR/70EynNeT6oFpRovmjFLqtsQJXei6ivI36/44nWSnFnW9Pya09iI2XT3bOpGWiHCT8dQj+/Pb/Me9ehiOhXIy4cx4X7QOFqY2xKoCxhrtDuqcNqdUTy1lL9V0aic4qVaFUy4ee02d2nXTbCWKPLPZOl8o4F0ieFHHvuyP2XAX+aubIcwc2KLNlfpHLFBEVQYd50D8XkyfVpmsg+qRgyoRz2/oRp44KGAx3uic8Qbn+cGQk1HSP+bRgDopGIP/GrcrdIt0YQqFcMWb8NVgpQE4HSrJHQGPlm60l5r36/WL29GLisPttmG49PwilDBUXAgNQVZuL6s9fYTjVccsIn2P1Th6jqW4WAv4dIbzI+07uocAPaTPFkUWRGFD8Q6V6FmaD+5pZ9zUFE0jyCk78V5bIpB09u0fjHQiTngcbyfOVpJkKX+/TZY//WWf5y8LCXoyTcA7zgcq/+KYcJ9N0WwWOilXeIHN9qsbPkG3NGg7/zTslNKp279KscJMVnkqVEnRHBQxLHDSoJPn/9e/R73/5gljpVyu8Q= 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)(393754008); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GXUnHNIbE33VDMqDmRA9fDRh34teoNMB5i8ILz7VTYQfr4AqUYiaSIeqH/AZ?= =?us-ascii?Q?WVfx+jcFYBAe0JIrseSDyKj+89rdcNcSvc91Fcon1Fr2o2jb5Ef6Vb+bQ2cg?= =?us-ascii?Q?FNNbTCf0oMW18uFmhiTdhZfUi72n89CCWyiWDW5Gz7uLdKCTE1whf3WrF9vH?= =?us-ascii?Q?oE3Lr8Fow4WYVZ7B+lswAlIiTyriPXf5m6Ejgp4COSmno1BWdkX0qxCrNRxL?= =?us-ascii?Q?w4zY7bUR7Z+IRZkPh4zHL1R4GHjN8i8gDBWKva2nBFQw21dRrmk26bzOA1nu?= =?us-ascii?Q?hOqUXBoCvjvwpVzAc9RVAna4BedZ1NElJ4j480OSogXVbj5awvPgDdu3/zox?= =?us-ascii?Q?Fuo8gYBDOevnzwWlXTHENu4a4EuQZNLgXK9qr238hkp7+l/XZFdlof3Ko0PS?= =?us-ascii?Q?eHKd38s2EzoKhB1PHvDgK+/Is9x6Q7oqYx57PF8sOAelzL2Tx/ceVx8RWvfg?= =?us-ascii?Q?NGBWjyTVfg5Z/8AzPGJT/EHwlnFbsWRGLerpi+ZY/XHIRRgRsjqKyWpp0lOu?= =?us-ascii?Q?XI7blZZUBY07pD+9wIj8pzCEz5WbVMCaCDEho0WNWRvpLlinvgAD5WD9dhn0?= =?us-ascii?Q?0dRDk5rLPVWEI6LQ/eCT9bfQoP6Jb7zjsI+f+yqkniubsiCO8wcVc51aXhS1?= =?us-ascii?Q?VQ4UUtDZbitjTw+bVM7MBIzo6Ek0XV9OwDtjysyXqkdW/nkzJtpZIYTiLU89?= =?us-ascii?Q?yfLv6HDY+XIJNFnubPvkeKkim0oDqcCXy1Ooj+a8lNqyyh9Jxm/QHcQIcpQY?= =?us-ascii?Q?XGe5dqZfXniqPU/2norR9QS4hezOlVQJDvosjtsv4gwa4QubvYcTJT7WvUzs?= =?us-ascii?Q?dm68ha+sGyEfmQLKIL0ZAchw8BSY+4uDB6mb8883+s8tTez8tfMa9ycEVIxP?= =?us-ascii?Q?eGLU//0k820RgvbH2j3Cw4Q1/Zc3GIYpEtz3uMebpFSae+ffUfPh7GadWO5u?= =?us-ascii?Q?4DTV0gaVeYWQMKg4ntcDTigFcP4294FksDsHY8e6QysEP6B5sCjpOegMVf0I?= =?us-ascii?Q?er1ShguMbTOCWscBuHOCsyjwPTaNi9diIcnX0v0kBggw62LmpLOgVyygCcID?= =?us-ascii?Q?euZCVPsJ+IjaeXLOmIB0VEg9mnpmRzcFmXcQwzI24NwRxY2ofXdJkFNmelQH?= =?us-ascii?Q?JgwECK+NXFVzR5ZneNajnnYgNT8wHavl0vHfz+VWo2/rnJb1DIc/vDgokrfY?= =?us-ascii?Q?6G+xNAjZfFZGXQCK6TyDXwn/TCvvvcamT/oT0my1L6Di6AEvWC+LFVvX7fSR?= =?us-ascii?Q?+AZ6XxsJ1TZFXS7cvZUU1K+yaTv1xraRsYSaSRXpoOucP6vYnJfPVIrfsqSy?= =?us-ascii?Q?9obPc+56UghvCXVf3xZ5NOZDPnMLgvFQM/ofCbPNhrDQjHRsP/bAxC4kPbBH?= =?us-ascii?Q?OOP8Nz9djPKtOgFhjSX4lSj+jp5XjJ+QWw/9C8eGWdBe7YhztWtKRL6mZtae?= =?us-ascii?Q?GBNSCDM2Zy1M1N0bKdC73ek7pHq5ryOTyvACflK6Yo/10UwuFU7rRk3RVkQB?= =?us-ascii?Q?xZvLQcco/kL0iwDPSfGJs7dfUQooGL+xtb+mD00orBicDlKsiKECIeyG9YAf?= =?us-ascii?Q?eMzxMT4DEu2oLrYyZxpg6+ey9x73n7+Rq7CKJbQv5GUqlqW7F3Ub+OFqpf02?= =?us-ascii?Q?+6AgJdSOmXTmjPg5uXkO66M=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a010a64-7447-48d7-0fde-08d9aebc6f58 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:19.5892 (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: zNOjVZ7/fR37J3AlFgV4cnO/Hsuyk3zm8a9YkQy7baIY9zwI06euYjlzzjAEdZDBxKQGl3bcCICKJpFbDWkt9Q== 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 7e48a028a42c111ba38a90b86e5f57dace980fa0 ] First, we need the waterlevel setting for PIO mode only. Secondy, both DMA setup code is identical for both directions, except for the data pointer. Thus, unify them. Signed-off-by: Michael Walle Signed-off-by: Sean Anderson Reviewed-by: Jaehoon Chung --- (no changes since v1) drivers/mmc/fsl_esdhc_imx.c | 89 ++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index 283af35a81..6c25a77c79 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -279,59 +279,74 @@ static void esdhc_pio_read_write(struct fsl_esdhc_priv *priv, } #endif -static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, - struct mmc_data *data) +#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO +static void esdhc_setup_watermark_level(struct fsl_esdhc_priv *priv, + struct mmc_data *data) { - int timeout; - uint trans_bytes = data->blocksize * data->blocks; struct fsl_esdhc *regs = priv->esdhc_regs; - uint wml_value; - - wml_value = data->blocksize/4; + uint wml_value = data->blocksize / 4; if (data->flags & MMC_DATA_READ) { if (wml_value > WML_RD_WML_MAX) wml_value = WML_RD_WML_MAX_VAL; esdhc_clrsetbits32(®s->wml, WML_RD_WML_MASK, wml_value); -#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - priv->dma_addr = dma_map_single(data->dest, trans_bytes, - mmc_get_dma_dir(data)); - if (upper_32_bits(priv->dma_addr)) - printf("Cannot use 64 bit addresses with SDMA\n"); - esdhc_write32(®s->dsaddr, lower_32_bits(priv->dma_addr)); -#endif } else { if (wml_value > WML_WR_WML_MAX) wml_value = WML_WR_WML_MAX_VAL; - if (priv->wp_enable) { - if ((esdhc_read32(®s->prsstat) & - PRSSTAT_WPSPL) == 0) { - printf("\nThe SD card is locked. Can not write to a locked card.\n\n"); - return -ETIMEDOUT; - } - } else { -#if CONFIG_IS_ENABLED(DM_GPIO) - if (dm_gpio_is_valid(&priv->wp_gpio) && - dm_gpio_get_value(&priv->wp_gpio)) { - printf("\nThe SD card is locked. Can not write to a locked card.\n\n"); - return -ETIMEDOUT; - } -#endif - } esdhc_clrsetbits32(®s->wml, WML_WR_WML_MASK, - wml_value << 16); -#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - priv->dma_addr = dma_map_single((void *)data->src, trans_bytes, - mmc_get_dma_dir(data)); - if (upper_32_bits(priv->dma_addr)) - printf("Cannot use 64 bit addresses with SDMA\n"); - esdhc_write32(®s->dsaddr, lower_32_bits(priv->dma_addr)); -#endif + wml_value << 16); } +} +#endif +static void esdhc_setup_dma(struct fsl_esdhc_priv *priv, struct mmc_data *data) +{ + uint trans_bytes = data->blocksize * data->blocks; + struct fsl_esdhc *regs = priv->esdhc_regs; + void *buf; + + if (data->flags & MMC_DATA_WRITE) + buf = (void *)data->src; + else + buf = data->dest; + + priv->dma_addr = dma_map_single(buf, trans_bytes, + mmc_get_dma_dir(data)); + if (upper_32_bits(priv->dma_addr)) + printf("Cannot use 64 bit addresses with SDMA\n"); + esdhc_write32(®s->dsaddr, lower_32_bits(priv->dma_addr)); esdhc_write32(®s->blkattr, data->blocks << 16 | data->blocksize); +} + +static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, + struct mmc_data *data) +{ + int timeout; + bool is_write = data->flags & MMC_DATA_WRITE; + struct fsl_esdhc *regs = priv->esdhc_regs; + + if (is_write) { + if (priv->wp_enable && !(esdhc_read32(®s->prsstat) & PRSSTAT_WPSPL)) { + printf("Cannot write to locked SD card.\n"); + return -EINVAL; + } else { +#if CONFIG_IS_ENABLED(DM_GPIO) + if (dm_gpio_is_valid(&priv->wp_gpio) && + dm_gpio_get_value(&priv->wp_gpio)) { + printf("Cannot write to locked SD card.\n"); + return -EINVAL; + } +#endif + } + } + +#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO + esdhc_setup_watermark_level(priv, data); +#else + esdhc_setup_dma(priv, data); +#endif /* Calculate the timeout period for data transactions */ /* -- 2.25.1