From patchwork Fri Nov 12 19:15:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1554540 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=WbBzkTQT; 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 4HrSyl55Nyz9s0r for ; Sat, 13 Nov 2021 06:17:35 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0C5768304E; Fri, 12 Nov 2021 20:16:33 +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="WbBzkTQT"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CAD8D83023; Fri, 12 Nov 2021 20:15:56 +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 EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02on060d.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe06::60d]) (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 25ADB8302C for ; Fri, 12 Nov 2021 20:15:48 +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=EkYS/JR9FjCOCAbC30S+sv96QcjWAQco9///rw2wWnxKIxP3b2zSsBFquLOlq2llxC8R31dMktAFylkQ24Sw+V3CFAhJiY29T8NGZ6UCZuYoMlbLuuA8kX3kABZaEj+KR9JV45k87q3u9MglY30nb73ckWBNVn0DjPrrISPl909LGGL7r4+j6Kd+vvgD1Yq4P0jbB0cEefKnTKxzSPQeL2TZQZEuxaZKEMk6fGCA25CWJi3Ln1zQxuW95GdnafCbK2QVuGcmqi1LaEHQBt5iy2KntGGAni4LOoWwGu0RxkDM0yJM/Q0kEReYiV1L1/651m2kbyzaL+1Tvt1Vzkso/Q== 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=3RwtAw8fdEDYvGEiIVhc9rINKpltb1yyJ+f45CyLxQ4=; b=CC6Gpz9dAgvLaaSqMkCauhjsiwDX/XuJLV7AO8/TWJ5iLID27ZKE3DWcE+DMj8PQUw9LE978kZEGkVjBkC4xzBOzHjOM5uOWCrhnP2eTkzveHkz8eVfSRVjEQccRv6dXGjWX9EA5WkDx8WlVaXxreT/1t2QcvDykIRtityZuArgo+2ed//L2HZXZdk7s3OYi7OVJLX/6O1I7n3fPAQ/v4ILaNPgJyVORDlEyuod7ZSSxqEfFy5VLDmI3Hcp+g49XOxM37KJLMX4HGjqBuuJ6WjOa15fMEPkG/tj2pYtFBq74XxXa6kxucggTuTP7q2gxHkhbo9nGIPfOaFFbMJVIgQ== 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=3RwtAw8fdEDYvGEiIVhc9rINKpltb1yyJ+f45CyLxQ4=; b=WbBzkTQT6ayOhmRtYu4bijKZ44/vcyMx2wWuet7nGg2DZu9KidRBoagarrohd0pNaqkeXxuceEa+4/OBJ11fDFmGOrI0Z7PZT3GgCjWSxPfq2VZpJsNlFkHugLhy/IgzDpnpo/3DimalECUCdwrvBqeLJVpP7/fhzqFVrvoDdyM= 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 DB7PR03MB3657.eurprd03.prod.outlook.com (2603:10a6:5:1::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.15; Fri, 12 Nov 2021 19:15:46 +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.4669.015; Fri, 12 Nov 2021 19:15:46 +0000 From: Sean Anderson To: u-boot@lists.denx.de, Peng Fan , Jaehoon Chung Cc: Haibo Chen , Michael Walle , Yangbo Lu , Fabio Estevam , Sean Anderson Subject: [PATCH v2 08/11] mmc: fsl_esdhc_imx: use dma-mapping API Date: Fri, 12 Nov 2021 14:15:20 -0500 Message-Id: <20211112191523.1943825-9-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211112191523.1943825-1-sean.anderson@seco.com> References: <20211112191523.1943825-1-sean.anderson@seco.com> X-ClientProxiedBy: MN2PR20CA0001.namprd20.prod.outlook.com (2603:10b6:208:e8::14) 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 MN2PR20CA0001.namprd20.prod.outlook.com (2603:10b6:208:e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 19:15:45 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7e908a54-4981-49cb-bfe8-08d9a610d449 X-MS-TrafficTypeDiagnostic: DB7PR03MB3657: 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: H+lRWy7xe3gPsu/SJR+F09ewBsdLDg81NiEQzX2jE6I8OBeSINUf6jA5XEojvWEd/8JM6I7X5kRThe/xl6CZ9t7jT9eHY+ttMYt70ohmevdYESaAr+HmAHK6hohAAmd/yWgXgTy84b4Pc7arf1v7ul/ZWpaQImKt3voj40e8CRTA+fIQrIpVnXgqdCg97rzgtLtzjHYmJEKXpH6gYTT9wO3XaMs5ZT0SJ7Bd+lnuCm372rFJbe4KT23Xyv7wenENjflnmcuw3uIkdhhh+GKpb0bCQTpfizT/d5LKzbH0n3E6S3eZXc3Ss+9gPYCf1xq6HnKDOl72uwSqaRRtWP3Wb/6EGtKPeLivmdbKgGcgZ4QHNaW2ymexFEcn7vcXGf5bVJ+nlgJ463HlxZnpXHpK6roTrMixClF3VS3AS7cg2gDVUfRkdJJIgPy8WNk0fzuD4D1v+sZCeLHj4BgxmEMZ3Cf2L5TlgrQ2zSR9cV2RPCzUfuBPI9nj1wYgP6VS3HWk+/ePh6mDtVcuC9DwwMNU2NyLQQgVpEuwMiZfHvyLJ6MW0hVP140J1lkt3tBXil4C5yX+LPLxOA17/0UP0Konyc4EXpZ06f+zz70cBLvs3uBtdRi1vTk7pwgdrPWHNjK/J7qSElKQPJg3maSQW9956D0wL9ylwjQXhgBbd3ZZ2DIkO6vjtvdbA5dggH8Ks2Sz 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)(110136005)(52116002)(2906002)(2616005)(86362001)(5660300002)(508600001)(66556008)(66476007)(54906003)(6486002)(66946007)(316002)(83380400001)(38100700002)(4326008)(6506007)(956004)(186003)(1076003)(107886003)(6512007)(6666004)(8936002)(26005)(38350700002)(8676002)(36756003)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pOWCQXXxsfnqlt+OGJhbhz8xg/FHH+YuSYNrnlmf1HuyvGdbna9UH8u+IE/mRPv39VoWcLOiNrDY4GN4pwk7+y69juuNMQ9UotJv/bq6xHi/bFt1pFGMffbFcaJ16LNqQrLMFEUE7azVEvmV0S13csYgHMbNppx5OFfSfuoFXuGN99HJeRiBhlIjPoE8Rd1wFUU08VEKqAtzIloEzd0HZczlaEXHl0YD6cC4hLUm2Q4ahOLMCgcG6ZKFsN3/uAw0Cwnmx0xfVAn8bbZRVpfizUhcRk1xvEYgGgP9cpWoFhHORqDs7cHctDv+gJ6a0zxx+TATFVblO5IjpREp0WRYpnHjklYahGwtO9pvTcQTr8m9iL/XeFro1WCMR6YBMRzWulTtBU/WcPlwC48DynREvvsHhoBpm9DSny1vRjOu8457tOAG7zL0Kg/pOcEmf0hV6VoIox4OAHmJTkOlNK7sY1XgwcOQeLte7yNB9ci6KzC01SH0XlslZ7PXg4nzgJ3O8JCveODE0CuLVIlNnDRl7YJ2qYFdZAB3BMgurbmgkKebW740pZ27UnOl/jylYpcmWqDz8EDP9MbD2XB2zeb0+dZCdji3k/cFm3fu08/3KTf8jb4yiTfJ2x2JW8tN1KYnqcUdCyD7XEJqMokGlJaU+ebwBBVX2niwWOZEhMO3B5HbB++FzehlxD31gslMIgXbKZ808T9HgUit0AP068kJtEdisqHHaTcnbJENVSB2r8/8ZkDdu7BTPq0Af3C0gtQZlWFv+fTlQ001j/m6iW+m1y4IQZcF441NtIkUEuN64wabGDn0iJJbnrUS/864SKRKYyyCEls21lf04H+6HMm6THmZbliX5LK7iMNCcBZzZI3QOhB+7fzCFRoZ/K1Qk+JrDlTBJfUksxNtRNQuIKQ4oab32RDDjavwe3FLFoUJcVrprHPRa50uRSFEC5Uf64a8UpM2fsStOFO6UAPyouCw0n+lQo/dVOlWDHwMNVpYQr6zTsmiS+D7vBS8btMsuQdgvfbDEyCYgPBRsyD3fYU6XAjA8tseeVfbEpRKELoStc5+YgODsGT9L1YX8ekBM2rk8jEOvQjMZ+Nv6g4/oeZyAktsYn1NxA7NjAKY9gyyNoZ9Dw6rDyAiBASFpdVy4m5vcqfByyDEPp3P8kS6SGRVh5roLlEBpCbxXgeJP9znNQBlndvsWdgfZZ33NNH5J0r4TRLe+jZZjrGtX7y0VRzDy8ut4MHZpdaXLofxrWGMOZ3WARiu/BvUafFaL6aareJpcpZuqHYT9P7S74Dk7Ur6A2PhUbGwA6bbc4iyv0Qffg4uTFk4n57UG/OnTzjiwqvGjCkAaHRwHWwNtIZEZ7tEhTNTkc6Pi+26kgxzwhrSFQvF1CO7tPlVM23BQ90s7c2ZVxf3LDhQy3I7wuGE9X+L5ElOj+4nRWgOy844WrfatY15dHlVaP653N5iNDKN1VwGCggCw1eAanUC1WN6TVFgin7uUHSQPoB2w1NZQfo55ZZKGlMr3cnCbi1jBsFZRTGQQNbiVEItTPGyux+Gmg4WibaZdLcYZVdTZz4xizY6oETsOwHSyb0X/st1atcRk7Ap4zMZ7fFWxvz1hBg799/aMZ7IkvLB9QuM7ltknicj2E4= X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e908a54-4981-49cb-bfe8-08d9a610d449 X-MS-Exchange-CrossTenant-AuthSource: DB7PR03MB4523.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 19:15:46.2268 (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: WVidnjEr2jRydWB6Dx9Ysc2b0GFfIIWrkWDH878eseraxf4Rs+dL9zBEmTaq6efwT4ThQ7CwHVP09KtKx84Gwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR03MB3657 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.35 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 3588056759..afc8259323 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 }