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 92F23C433F5 for ; Tue, 23 Nov 2021 20:05:16 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 3BF5583738; Tue, 23 Nov 2021 21:04:48 +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="brxcSIn+"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D24E8836AC; Tue, 23 Nov 2021 21:04:26 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0619.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::619]) (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 6BDAA82F8F for ; Tue, 23 Nov 2021 21:04:19 +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=VZyi+WBOWS4NMmuBTzqZJwkeYxjJ+dDNGpWBHvU3pIqJWGLkwtux8Z4SJdPYpot4R7oCmOyBsTBNhj47tXNsEtH5zHBBmxLOvBjy+lPGgSGaiboMwEy9NV//vluLWWZyGYHDQvxlDm6MAHxHWQAz299psC0dJShMj9x1nfzjCP+IxTMHQ2NkwaB4bPL90LmBEr/dHuY+XdKucVaSQ9gF3w2LbGcP2AY77Oj3xcrl8Mn2UR2rj7gVzBD+5Bu9ix7jxW3kAkyWY7cODRgANytZUqo9ANdwPRpZlpktEvQliabv2H8UJzl6JuWlws9aS4wFfkdJ+nKJiSCGv8VEOLU78Q== 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=xwlUvc6H3nQ/RcUWSFGqmSpzVYC6eBBzlGwv5eeBALo=; b=I39bMcoa+w32nBb85XJviAHgiucpL/7iADtnJOy5HTMBJfGWUnVCHeaciMb8ZbEoZd2LBv1MuV2W2L/2iIpVHFIYbLmXSuJA6cPLU+pKDQnKSEu2Cu832TpKYIK1bPyzuyxi+2E9K8HlsIHN/2IavqTVi7vLmH+7IRB2dQGNpH1FKuhv8coofYhdz238/ovggJAhh318B0O80JcrfR8eVDIfkdFJkPP0tB1dsAkb2RTgHldYX3CllcIBcH4O1eSRDezzvSHwqllKwBbj4LAd+i5kJgcLuRPtfGFKg5Y3sk19LqL6cJKiKMstYnB4vK1J8TFYhFEPSwe0U9Wg6NUA7g== 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=xwlUvc6H3nQ/RcUWSFGqmSpzVYC6eBBzlGwv5eeBALo=; b=brxcSIn+f2P8hrLCUZfhLTYPeepYdUWZ+w9OC5W1IAm3aHirCReJPKLweroqkttSUgujsPz1Gs8wUUZyC70q+7UGFpabY1sUckVIeWamuW8MVwkOhK1wZEmvHcw4+floyZeIM3WlDJImQ3SFPq1Ox8vG7ZuqTOq7zxMRquTYwHo= 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:18 +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:18 +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 08/12] mmc: fsl_esdhc_imx: use dma-mapping API Date: Tue, 23 Nov 2021 15:03:43 -0500 Message-Id: <20211123200347.3772343-9-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:17 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4673287e-6d44-4249-301f-08d9aebc6e78 X-MS-TrafficTypeDiagnostic: DBBPR03MB7097: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2733; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: D+kCkNwr2oHaeLJ1VzbnxawjyqaTceGxKVavGyywokbfIKRYwIJr+sI73bmhomyEYh9Gx7gmGRPMk7liy3w3+q5VinF9A8T21cn+mGlu8RSC9GYCMo7v7qaxO8uWyUusAKX/VDOO/tq/wDc4AaGQ15jnogVtTMTBhaZN8QQ4zLj0nq4VsKfC0OXwpI9dX5kbwXDx50yjcj0Sx7ajxBCC6yzkNdSIInsx3MbhNFs7KHqFjifC2DXGm7BvB52RXCkN7n2BmnhjjdIC2ObK8bL3Yit0HVubsZdzodjls5m3XJ8QIj04+BzhPEXen+cV6qlxyMaJwn1ST9i9xi01cmI27kPEZkPPuZThO2+Z+ox5kOTHkrp7FBrq3zMrtGuBHk+ashzoPPrD9eku1sfKWNSroNLeudOSnx4nb543/NxHlEJNK4wU2HvvAdLRc4J86OSvMu2AS6G5AQMC6/ggukTe62mg9f6jBRO9+6fS+VP8p1v/f1tcw3iVG9cz+irx5mmanA0RutuFGKBxD1QmoXVqoTuvbODlr82V9PJbzn0wVm0TTF7PiLjZBc4Ylitb6Y0n1pyirRs5Ko+mgAVikZVdas9du+7G4LsrEbmijJzaXAfGEFh45c07khM06Bb3JXDaugZypX+95XB8doJfmzfC4hkhzstvXa1hp0WSt1rG2+Z4ICOoPFuHA3yaeXPZKGVrQPhzD9wet1wVp2Th6PVNiA== 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?OCyJYa1DmHQM0pgsJbqWxD/K4cKjR6b++Syf2q7MYEWzNc7i5Suwyutl7MMu?= =?us-ascii?Q?1WniMQCoU9NNLU7CSL9bC90EBfCmMD1QL7drp56fqawKDJYqFJTNd/JrkIAs?= =?us-ascii?Q?08h2pZ/jmutVkvEQkXfmGdM+ffq/kVT0CiYrDFdnzzmVojQ1sKbBn/sfNiuA?= =?us-ascii?Q?0d4SJDaPvmxseItR3Ce/h4VuAjnbvNYy+JkWmgc9vQgMV5gqDXSYg+XIgIT1?= =?us-ascii?Q?8W4LOGAo6s4gJ4wLDkSg65ODWlqSEDFVirLb5BWwHUc/DqUODMsq+9VVghgw?= =?us-ascii?Q?dAeNpBVHc+nntfpZp9sgm0WFXF0x0WxNQKkfa97MZRWVZvYhFqCKzdJD5Ckx?= =?us-ascii?Q?65ylB5lHAZI6tA+u2roiyXV0nPu0AR+D7NUfj73zLvR4xigpRQy381cX5dC8?= =?us-ascii?Q?D7QMLwzcJDFCKHqs3lHwTH9E51ISuJn32+Loty4HY2khCpae4761S25z0ja2?= =?us-ascii?Q?Q5CjAfOAWOiuOJUPaVdt0jx9HL+0LR243lgj+HBBX6mUBEw1s4FM/y+htI12?= =?us-ascii?Q?QXgZc8z3GspoV6E6zBN3+cP3wuVs9vWkxr1nU0QXFrYt6S8yCgPfj7TK1WOy?= =?us-ascii?Q?qB85+/qq679GWHem8dXY/yV+/3ghI7mBAiNw3k0piWuXDzJmOc9O1H42V4pc?= =?us-ascii?Q?A66C15e9Nwlg+rI8sdqK/nFNHv5ICT2oYOOgxaPxT5UjCFr2cWRQr8miRRLt?= =?us-ascii?Q?klmndmScdJKSccJ23S0eTJNol0xb3+YC4gtI9BPQXT5OFW/0bgDFDcmmKERa?= =?us-ascii?Q?d/T9BP62idr8+c1ZOJ7oyB84EPSVRfLwDnWahsO1azq2iLMp2GGRdIV+EgyD?= =?us-ascii?Q?X0SH17Ok2xXYkgUBJ1S6i/I3cXvg5HeFaVjentekJyYNZuf5MH/RyaQD3z3O?= =?us-ascii?Q?PL7QDTW6KyDkmNgP/gkHuxFT9SL8LVxmtR/tr1/wOQfBvGirH88onwRWsnQJ?= =?us-ascii?Q?DtxnuTnQchJOveHRyKGGtXrPvfk2MnXgZCCNbPyDaYUBsOpurUweK4rh/8Rx?= =?us-ascii?Q?D3lXRbI04ZCfWnNzYe0fKzw89Ev5+beNDut5TqGducunowhxAQSYNEaOulsk?= =?us-ascii?Q?1nOGcHCN1mh1o3Fp1C1wVCrFFC73iAU1PlB+56NyFREHcMOiVrQmsrQ2Lovj?= =?us-ascii?Q?HjYtCbEnoFeYCPASS4/C+6orK93mMsNHtalKOLFMgdofhdSzq8m3DZGlLax2?= =?us-ascii?Q?QN4e2iu1RHGM97NlCTCypsjNw432SoUVHKXrL5RcS+SOxzT6QsZV2TZRzMm+?= =?us-ascii?Q?XIBcbc36zSTRtoYDfi+4qfYWeY5XphhURKa7XROtD/+BfF5g4nB8UnnthuZ9?= =?us-ascii?Q?klG2YPbHqqIk1eDt5FRLG/akAKnrMkL8abidq/J+sqM33dU5xcg1CUf6dw7H?= =?us-ascii?Q?vhj4wKY84tjdunxlVAR7mzDqC4gslwzBGUzmU/NFo5gjXwb+AjikKN90PPvc?= =?us-ascii?Q?pDJTLbZxrlhvzPickRk5VIfRMzMfqrMI3BN8nOH2PLd+OukWpTYqZt2d8G1V?= =?us-ascii?Q?yd3PBcn2JFqZdiTC5H3p+Zt13t0K9sgzYCpTmkgSi7anCV9ksyWG5MMVmWm8?= =?us-ascii?Q?9/B/XeplbHyGoactO6H81JLjrTgFjDYf1p4Fc3Zp1+vHIAhSZlttJOX5WIdU?= =?us-ascii?Q?0jFEklKdEN7emUzV2atwIAg=3D?= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4673287e-6d44-4249-301f-08d9aebc6e78 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:18.1090 (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: 2wxwi9E0OarAq3v8NIK2IownvjlvneYo6PoK9/sphTHOihWFlgjmmTgl9f/YEfpM5QG7BJhxWZkkyXsm1/LjMA== 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 b1ba1460a445bcc67972a617625d0349e4f22b31 ] Use the dma_{map,unmap}_single() calls. These will take care of the flushing and invalidation of caches. Signed-off-by: Michael Walle Signed-off-by: Sean Anderson Reviewed-by: Jaehoon Chung --- (no changes since v1) drivers/mmc/fsl_esdhc_imx.c | 50 +++++++++++-------------------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/drivers/mmc/fsl_esdhc_imx.c b/drivers/mmc/fsl_esdhc_imx.c index 84df131c9f..283af35a81 100644 --- a/drivers/mmc/fsl_esdhc_imx.c +++ b/drivers/mmc/fsl_esdhc_imx.c @@ -38,6 +38,7 @@ #include #include #include +#include #ifndef ESDHCI_QUIRK_BROKEN_TIMEOUT_VALUE #ifdef CONFIG_FSL_USDHC @@ -171,6 +172,7 @@ struct fsl_esdhc_priv { struct gpio_desc cd_gpio; struct gpio_desc wp_gpio; #endif + dma_addr_t dma_addr; }; /* Return the XFERTYP flags for a given command and data packet */ @@ -281,8 +283,8 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, struct mmc_data *data) { int timeout; + uint trans_bytes = data->blocksize * data->blocks; struct fsl_esdhc *regs = priv->esdhc_regs; - dma_addr_t addr; uint wml_value; wml_value = data->blocksize/4; @@ -293,17 +295,13 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, esdhc_clrsetbits32(®s->wml, WML_RD_WML_MASK, wml_value); #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - addr = virt_to_phys((void *)(data->dest)); - if (upper_32_bits(addr)) + 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(addr)); + esdhc_write32(®s->dsaddr, lower_32_bits(priv->dma_addr)); #endif } else { -#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - flush_dcache_range((ulong)data->src, - (ulong)data->src+data->blocks - *data->blocksize); -#endif if (wml_value > WML_WR_WML_MAX) wml_value = WML_WR_WML_MAX_VAL; if (priv->wp_enable) { @@ -325,10 +323,11 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, esdhc_clrsetbits32(®s->wml, WML_WR_WML_MASK, wml_value << 16); #ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO - addr = virt_to_phys((void *)(data->src)); - if (upper_32_bits(addr)) + 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(addr)); + esdhc_write32(®s->dsaddr, lower_32_bits(priv->dma_addr)); #endif } @@ -378,23 +377,6 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc, return 0; } -static void check_and_invalidate_dcache_range - (struct mmc_cmd *cmd, - struct mmc_data *data) { - unsigned start = 0; - unsigned end = 0; - unsigned size = roundup(ARCH_DMA_MINALIGN, - data->blocks*data->blocksize); - dma_addr_t addr; - - addr = virt_to_phys((void *)(data->dest)); - if (upper_32_bits(addr)) - printf("Cannot use 64 bit addresses with SDMA\n"); - start = lower_32_bits(addr); - end = start + size; - invalidate_dcache_range(start, end); -} - #ifdef CONFIG_MCF5441x /* * Swaps 32-bit words to little-endian byte order. @@ -450,9 +432,6 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, err = esdhc_setup_data(priv, mmc, data); if(err) return err; - - if (data->flags & MMC_DATA_READ) - check_and_invalidate_dcache_range(cmd, data); } /* Figure out the transfer arguments */ @@ -560,12 +539,13 @@ static int esdhc_send_cmd_common(struct fsl_esdhc_priv *priv, struct mmc *mmc, * cache-fill during the DMA operations such as the * speculative pre-fetching etc. */ - if (data->flags & MMC_DATA_READ) { - check_and_invalidate_dcache_range(cmd, data); + 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 } -- 2.25.1