From patchwork Thu Jun 27 11:20:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikhail Kshevetskiy X-Patchwork-Id: 1953182 X-Patchwork-Delegate: dario.binacchi@amarulasolutions.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=iopsys.eu header.i=@iopsys.eu header.a=rsa-sha256 header.s=selector2 header.b=xLIQZguN; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4W8x273kCTz20Xg for ; Thu, 27 Jun 2024 21:20:31 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EF80E88569; Thu, 27 Jun 2024 13:20:18 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=iopsys.eu Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=iopsys.eu header.i=@iopsys.eu header.b="xLIQZguN"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 8420B8852A; Thu, 27 Jun 2024 13:20:17 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_PASS, SPF_PASS autolearn=no autolearn_force=no version=3.4.2 Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on20700.outbound.protection.outlook.com [IPv6:2a01:111:f403:2607::700]) (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 714138852E for ; Thu, 27 Jun 2024 13:20:15 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=iopsys.eu Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=mikhail.kshevetskiy@genexis.eu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eb4VCdhW65/s6hdoey8DK1t/6U13zJLTTR3HpCBNlh6dyhlMCna7LvTHYOuNlT8bClBRgy99s5tvJhVRUc/pdYfMJyqN6pK0o67WAGSwIchnTQZW2a44/lxQDm//5ghHsAmG6eJd3BO+cEzw+4+6deu/oGIchjrbxsxyu5I7uDg3bsIva1KQEvU8hzD1Rojd6YUFoWXV4aFwe3BrQzsuUlSg2XOWQ9elDPfveefc7fVfZwV+cpbsVc9qQOfp7/0amiwx9Y7Ov3R9JqSeEqhXH9/YseC/B5rH06DvPSoOsuKwGBO6zM0i9E36bea12V6dzEJB6p2gHHNlMd0jmfrQPw== 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=Q66fcJbJjM2OxpF2cxI0+3gtEFaeBOuxQRfFS1WPzyQ=; b=VvF8UAhhC/Asza/3FrA52eYne/Y9uRZAknZZcqUIaWRlVipqSz+FP2/KvKtso6IlS6mqOOfN85i5b3y5Kf6cxkxJTRHpU2+di+UvEE0PgSxRX5gHtYfY30Qzk9r2Kkh1oKLezlWe36++UwtmTdQc6w5hKs3Lcy3GTXsCvhjaDvPGdOBAh0WfBP4176Fzd1agNV3kOYaUEX9ayeg78pNpjkykBQOR9lWi5MBRvJENu9xU44nuGnuN4k1+Xw1FJdqpTkbMEmZqqC42hJkmMQRsANwLnkgCU7wkaYnLnM81rydP6qQyhMy3yPSQvpZXlBxiSvw6xc+OtS2x5ZugsEof1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=genexis.eu; dmarc=pass action=none header.from=iopsys.eu; dkim=pass header.d=iopsys.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iopsys.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Q66fcJbJjM2OxpF2cxI0+3gtEFaeBOuxQRfFS1WPzyQ=; b=xLIQZguNBg2PY9KI5eI/U3flSR2QqxPFjKzK0/ep4R2KpYS438miGxCExnFYWoeyEuHxBkJ0b8hNcTdtMotfQtyKNf8ZiHEY+S+vamO1KsSwzp/BJBUCR+3G5RgAypEcKDlZRqRzQm19Iv+elbszRQogmECpQLZOK5FMQq9UCp6OGPKuNnWHZUqYCoq5jpA94azNEbIlCrfwxKtMBNqzHmCJ1ACSiQdM4nloupQ11zq/qJV1yFwbm81RePVaiPmow3TNZhKFhXDBJ2quAH2huO9MBbyC1OvogskYw3AG1rEexsZg02Nuj6MEdmwL1A/F+p8hIFhp+Bx3RK60/xHNTQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=iopsys.eu; Received: from GV2PR08MB8121.eurprd08.prod.outlook.com (2603:10a6:150:7d::22) by PA4PR08MB6064.eurprd08.prod.outlook.com (2603:10a6:102:e2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.35; Thu, 27 Jun 2024 11:20:14 +0000 Received: from GV2PR08MB8121.eurprd08.prod.outlook.com ([fe80::4cd3:da80:2532:daa0]) by GV2PR08MB8121.eurprd08.prod.outlook.com ([fe80::4cd3:da80:2532:daa0%5]) with mapi id 15.20.7698.025; Thu, 27 Jun 2024 11:20:14 +0000 From: Mikhail Kshevetskiy To: Tom Rini , Dario Binacchi , Michael Trimarchi , Frieder Schrempf , Jagan Teki , Simon Glass , William Zhang , Igor Prusov , Bruce Suen , Dmitry Rokosov , Martin Kurbanov , Chuanhong Guo , Miquel Raynal , Francesco Dolcini , Max Krummenacher , u-boot@lists.denx.de Subject: [PATCH 2/7] mtd: spinand: Add a NAND page I/O request type Date: Thu, 27 Jun 2024 14:20:00 +0300 Message-ID: <20240627112005.99375-2-mikhail.kshevetskiy@iopsys.eu> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240627112005.99375-1-mikhail.kshevetskiy@iopsys.eu> References: <20240627112005.99375-1-mikhail.kshevetskiy@iopsys.eu> X-ClientProxiedBy: GVX0EPF0000FA79.SWEP280.PROD.OUTLOOK.COM (2603:10a6:144:1:0:4:0:6) To GV2PR08MB8121.eurprd08.prod.outlook.com (2603:10a6:150:7d::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV2PR08MB8121:EE_|PA4PR08MB6064:EE_ X-MS-Office365-Filtering-Correlation-Id: b2459e5b-2331-4b51-be9a-08dc969b1d87 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|7416014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: ZEQpOwxFfcW2ruOvpeIhZjXXlHWeahct4h20+r/udeW18QH6yz2Vx2LygvmRnIcooStxr+oZNc8BY3PI8v3pFE8mcHI9RmtK0cGX1dj2Jw2vYlDlA0tqZaM6w9733+HpaeGfGq9ei/CNlHpXmrld3n37mZzWTGEOFj3QF/pJSvhUtgzfxTSq04NIcne8BPuby6IwkMKx/Lv8a7YHRbaT3gRXw6o8A7YD7v3wu/RT6gwUy6R6VghlyMNkI7MZ1YbCnStLC0VEZ3bCs14QZuQDxEx25J6GtvbkE5sGzvIFxYYiuETplztH+1tsAz/8lIP+wTMqoiil2XBlfTtA4BrLHbYbGDI2fIXb8cn9H+CKejyAHHZ76sRi+bfTb/1c3mewomWohCmr/FgCUaZzNTtqMhaYjAVQQxorT23Xjr8vokU1IZiMTq9GmH7ifqJDEXVbkncFwy1rMnzrFgT0I2VHpgS6Wxhjo3+FdNlROx4oyzIsZTbo0874Xagr8nrBt/r4LdZ6aNHmC9CpK2GipthC+a/5Da+tI/Z4pnxoIIQ31pqELoFpInMcer61STDeZvvXZk949FwbBQxlj0kNi4QowDBELSrOEcmv7nG6k+afBGwOviKUnctw7u0hXUoXza9Zh25GwBbMj6y++jI7SAa/NGf0ecbtPJcIy8lMU/5di1gvOljFbAlvvnYjC1pt2Rx1pgxVLTYrNy5H75CNGs/pWDjdAF4HVdt+AcPqVUbQji5nJBo7a9o4eDfpccBqKQUFFmyt/6AH1Gr28gSLLU7QTWHh7qjxsuq1ePMuzh+fzI7NsrdQXdnij7ed/6xZmGtdNp3cqmt2aLGdtlY7KyCODurGwV1U3R2FU7Uae/w5nFQe5Zf6K43j+aWh4vAa032wqxJ85NUF2AEDbql4lPKHR3Mzx6hVzWZgQhtrj7x2Bp7IIRnI4ETeoJH2sTlUbdIk58/4mz8m2DfnDq86iZNwqSSs7Tu5ewJuaoKgYf553L9tosM3Dd0S0U7xckFCYaFoXtxPpeFY19TcsKaUjveshJ1Dxoxsrw31pjdQEA1Zc8fdh1mMA6eJZt09q7etAPXUHCEK8Ysp1HlkFiP4zoa7Qw+p3JcbT3fntBgoTkzOPOw5VREdHUJpO+g+LvBQTAx/hqHCwFoCs+O26qkS/DlB+g83iJN6pmpFAIXjHP6hPRjwKW+i1BLPEy/ZsqjcxkgjlGRptjsC3HSExJaBmOKc4Prcxg0/WBxM5BDKGnmhX4Xptmu7CEjmqmdVSzb7d3d9oVQ22qyRvMbx52+82xCcsMdXOG1UyEGRkCMDubqmFuXuAdSWPntZAxzagbnmbCfATMSGAkUnXxt67/KdyO+grpQFTRIRv9Ystc1HvDqBLuqSZKGaERcw1OMrqOp+V/C5h1aZWGe6fg/VMTtc2Sam32akwWfcqQYp2QAZP7agW5U= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GV2PR08MB8121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(7416014)(376014)(38350700014)(921020); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bJJzAzzsn2Kdriz1HU7bOSPDWTH61SnoodDlS6Y24iqFWlpi5re/Qf4u1vrcRAyZ4rdY1z99xsRGW1Ug8sWI70zm/J862BAXQp94wdDQNC0Wsx9kp6H6dljg0uYcWA5ciPzT2oSGCTfXWVraq73k8GEcch+JfdPnzYEzNJ/lsk3S12CzM1QPLel6/S2HhFf0Dpxr7dA+x+dMPbEltc6h1tTzK9V0CTW0l7Nd5A8ptztFMz10PeYdH2WrutMTx54XiPcXUk34wG9WEpbcWqAlHYPAuG2IU+dv8W7M6jPooA2uD3MkwXzYxSQxlzxWo1CCodI0fGa2+NpRvzqlPUH3TIHL7ye0loiz4hENmAopB4meNjxK91HY+X3UartotByzW8IjVVa0N4k0km1FQ/bfzew0aMsixGS1aRLLCVVysraJNAKITe9ZYDDpHHtaN5zlSLIdlGRIt1eQS+pTSscZJWi2t7MGg+6kpQme8eWHrxNTwagDQXUCa0mAahzNhYfzJWIzt+C2BZ53XkWzKClrU44o8pnrvSz9AySyoAZ3sdZUD7oMdP8qFikoFNtK2Okhw9XJttycFTYQwYyTUQDZKLNzfmAXAhR9Rn/dTeL4kDvLJ5/oeykSl8Uxsic22l482yu98OyHZBS3lEQKcd0fE9YFD0S8H+ncO4FGr743XActwLsKjpdiyVY22SMChhcr9Yyv15EwS+rBC8eXDg9ou6xg/k/UHjRHj3/rJiJKkmZjCo7yvHA4dEOq4Udlu/Ih2qT2fhPJDqVW4uHb/XOtr4Gj1O46QsMzcpsNAjik7Gjp2yl0gLnLuuhROqAW3bv50A8dLwgWOIHRCOrFOEY28b88zl1a7qrd2wC5SGnXmNyxUm+uNpVlzwIahpMd6l7ZuFaXu1snWJN51kVrafwcrf+2nELzlJah5TFadl//DcLXhRFcHuzLaJhhuf0PP7mWUZ3kaTwnt/ADHVbr8qOpMUmCasxLCNaU9JM7JUU8E/T4KjdwvYFTGfiGPNcc5uKKQmf0jQz1dL/iF6/8by8bMQyC+EWwLbmjh+X8Dgp44IT5ihsXuG5FOOlDEjNvkWQXHQO91tHtxQChpvxLdk/Nf5VP0CGb9T2ZkOtgPePkS9NDcF5nt97sMeI05fD0JCzl7Zs+amaBu7Mwe1XZ3EOZM4JIPpx9JR6sTgi+NpLqk1XnAWxpuYLOXGyRoDdbcTpTwRRp5kTBtoWORCqdDTTbtfHC1DhTwdkkS+JrRGuzYO874KwC7NYCKcIRUQPzZ3hbFxmdJkRFzLOW8kpk42MU7wrzpomaU+YWdBR4lhuiK09Inj2y6Fk3Q+HsDkk/pD6X4M59Mu/dKFf0a5GylcIYbXgpYInLv30L92Ghj6m3bnRgrRcMsJlAv29tihO2m0aN9COQ9nwW5+Oy3DtHfhzhnm2duck4mamkc0fxxJSP/46KYEAHLHJrNHs6DyeBXlYWAhIpt8wSp22jO2wDqC7wPIkMx0X5b5KM1xHwXnTiz6JoPc2GZLkRkjaXp3cNmV2umzu/+M3QvhbDcSEGnOf7dKeDXcPXpdMeG86k628XkbzI1wSV/np0ECtLGb56IhBJj6J5p+uDHLsUTlgouIPH8RWTwc1s0WbkQ+4eDmSw7uY= X-OriginatorOrg: iopsys.eu X-MS-Exchange-CrossTenant-Network-Message-Id: b2459e5b-2331-4b51-be9a-08dc969b1d87 X-MS-Exchange-CrossTenant-AuthSource: GV2PR08MB8121.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2024 11:20:14.0938 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8d891be1-7bce-4216-9a99-bee9de02ba58 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NvJX5JC3OfuYhx4eUGDlFj5jsteFt+fjAitH4EJP53ZNnVXAPkYUtdM2xV3atGbMAaijo9dXd2OLBW95QsG1LAojCCVZdt5+fCd8sgqsjy4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6064 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.8 at phobos.denx.de X-Virus-Status: Clean Use an enum to differentiate the type of I/O (reading or writing a page). Also update the request iterator. This is a port of linux patch 701981cab01696584a12e5f0e7c2ad931a326059 created by Miquel Raynal Signed-off-by: Mikhail Kshevetskiy --- drivers/mtd/nand/spi/core.c | 4 ++-- include/linux/mtd/nand.h | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c index adc67d7a40d..f10a3dbfdff 100644 --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c @@ -519,7 +519,7 @@ static int spinand_mtd_read(struct mtd_info *mtd, loff_t from, mutex_lock(&spinand->lock); #endif - nanddev_io_for_each_page(nand, from, ops, &iter) { + nanddev_io_for_each_page(nand, NAND_PAGE_READ, from, ops, &iter) { schedule(); ret = spinand_select_target(spinand, iter.req.pos.target); if (ret) @@ -571,7 +571,7 @@ static int spinand_mtd_write(struct mtd_info *mtd, loff_t to, mutex_lock(&spinand->lock); #endif - nanddev_io_for_each_page(nand, to, ops, &iter) { + nanddev_io_for_each_page(nand, NAND_PAGE_WRITE, to, ops, &iter) { schedule(); ret = spinand_select_target(spinand, iter.req.pos.target); if (ret) diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 651f8706df5..0afdaed5715 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -80,8 +80,19 @@ struct nand_pos { unsigned int page; }; +/** + * enum nand_page_io_req_type - Direction of an I/O request + * @NAND_PAGE_READ: from the chip, to the controller + * @NAND_PAGE_WRITE: from the controller, to the chip + */ +enum nand_page_io_req_type { + NAND_PAGE_READ = 0, + NAND_PAGE_WRITE, +}; + /** * struct nand_page_io_req - NAND I/O request object + * @type: the type of page I/O: read or write * @pos: the position this I/O request is targeting * @dataoffs: the offset within the page * @datalen: number of data bytes to read from/write to this page @@ -97,6 +108,7 @@ struct nand_pos { * specific commands/operations. */ struct nand_page_io_req { + enum nand_page_io_req_type type; struct nand_pos pos; unsigned int dataoffs; unsigned int datalen; @@ -613,11 +625,13 @@ static inline void nanddev_pos_next_page(struct nand_device *nand, * layer. */ static inline void nanddev_io_iter_init(struct nand_device *nand, + enum nand_page_io_req_type reqtype, loff_t offs, struct mtd_oob_ops *req, struct nand_io_iter *iter) { struct mtd_info *mtd = nanddev_to_mtd(nand); + iter->req.type = reqtype; iter->req.mode = req->mode; iter->req.dataoffs = nanddev_offs_to_pos(nand, offs, &iter->req.pos); iter->req.ooboffs = req->ooboffs; @@ -687,8 +701,8 @@ static inline bool nanddev_io_iter_end(struct nand_device *nand, * * Should be used for iterate over pages that are contained in an MTD request. */ -#define nanddev_io_for_each_page(nand, start, req, iter) \ - for (nanddev_io_iter_init(nand, start, req, iter); \ +#define nanddev_io_for_each_page(nand, type, start, req, iter) \ + for (nanddev_io_iter_init(nand, type, start, req, iter); \ !nanddev_io_iter_end(nand, iter); \ nanddev_io_iter_next_page(nand, iter))