From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013062.outbound.protection.outlook.com [40.107.162.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 975E1468C36 for ; Wed, 12 Aug 2026 16:34:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.62 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786552481; cv=fail; b=QTafrl6kEI2oZw+Bsmx9wPOSUX1tcuKYrbZg9lrWggf9mF+lwdkuaajC0rVnBqziskPbpBmWjMXmi62LaI1sxlqSczQHIEgfSsXCc6EtLOj92LbL3JSxnKNHIa81g56A+D509Ju+SlRdpchI826vRnOsulo/hiaAcAJ5a84otGY= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786552481; c=relaxed/simple; bh=Ta0ihuxSA3SF+mP8urVO7K6oKmMQXEeryZ+ZcrPw95w=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=tbr3nfjftlCwwwmPDeYug2FiQma3Cwq+9HS16b1Hkefw0weO77t8J374x73llkQkpGf3dwfX/VLid1uPztnmBX+EStvW0rg44NMpxKCCgBsULdCYGPXRtCxMWWnLdNTcysdpTnfz6HRK8lees+wz1tUvgUFfXa80p34pcOqKhJ8= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=diYGIa1o; arc=fail smtp.client-ip=40.107.162.62 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="diYGIa1o" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hQacQPJiqgpIOh1yfhG2L/cJcKvucev8rMESvEFPUtuaCK+O7ZyQO9Ag9RHDLv87QOrMPw9+jYnQ4eTlMUksPQspIBeqKLGTE/yb0Xhv/oYuyAkpl3XVZzUMCaazv+pLQK7/GtKPYXbMvARNpZQyGfDGunyXlh0VxD8tqbtTlwNQswe3FAXRnmqevHdJ4PJqifkBqyJfHg1iIq1jbbsAff914iInE3oRkHBc0CHxB0HAtHwX+hOqkXnxB7aHmEVIJDnjlr61ViEhhv3B3sdgp9BMWSeIHaT9adHldammXbWleL4TbAeGyHYpNDypBkNRLv0I9Jj24S89Fr1ANrOY0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=tf8L0ywHA1IXPTwtTqMimuqh8NOIrlsdb9CrFwEpuh4=; b=Qcee7HjAY8pcKbMRxB4YUhNKNOMLZf+IHky2+3ccD4jpswO1y8fR72ZLfIYiBFAEdZ/qrJmXAYxN/QZoIZHAiRu6X/HgjojrjdaMam+w/4PnpfkWrnxfTL0xecr316BXjNyygpn1uAJ6ubu1d7DVC61gtSZQn/iGBsqu7ExjskRz6AmVA2kA1IzSCw+giTEaNFq1pU8jglxZefpAm2pNK2ILEUrEqvN0Pj5pmCgehfg7BoOUSGAy7wzDZaHoDcjv3omOPdhcX9XsR9WobY1d5PNMrpWhb5PhripJ118lY45QrPHTuI6yiJpLtiwQ3o04P1jIgEGmQf+ZwFtpR1PK/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tf8L0ywHA1IXPTwtTqMimuqh8NOIrlsdb9CrFwEpuh4=; b=diYGIa1oloNx+Qx4FMcPATi7b3VW8HAxkhM0A0MXJZy/gY194VBW0JeL7z/3ipiW5VxW6Q6xClji/mhmD0mso82lS4NNRVYvMeWuuFaJ6o5A3Vde8HyyuBuC04Ecu2v3ppyEr+hB0cIosfVbZDEcw8Rf0N/4BIyDy8FcAhXw5uB9aNHQ822/kPaeUk0FyL8K6tB9Inh8pHeMpYIdeEl2xCrWi3mq8IFxD20hHkyFkpEwXSNgZZViCm3ymMbem4THmilOT8TNxRBPwhKXH3oab5SGwjYvav8NqfapmgbeqtVyhFnZDDdQ/Ghb58PCZggJ2aoDvj9Ux1RyRWpriA2izw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AS8PR04MB9079.eurprd04.prod.outlook.com (2603:10a6:20b:446::12) by GV1PR04MB9072.eurprd04.prod.outlook.com (2603:10a6:150:23::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.12; Wed, 12 Aug 2026 16:34:33 +0000 Received: from AS8PR04MB9079.eurprd04.prod.outlook.com ([fe80::9761:3d78:e9db:2308]) by AS8PR04MB9079.eurprd04.prod.outlook.com ([fe80::9761:3d78:e9db:2308%3]) with mapi id 15.21.0315.012; Wed, 12 Aug 2026 16:34:33 +0000 Date: Wed, 12 Aug 2026 11:34:26 -0500 From: "han.xu" To: Miquel Raynal Cc: Richard Weinberger , Vignesh Raghavendra , Peter Pan , Boris Brezillon , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Han Xu Subject: Re: [PATCH] mtd: spinand: Enable QE on all dies Message-ID: References: <20260807-spinand_qe-v1-1-c102c79834a3@nxp.com> <87qzk6s8yr.fsf@bootlin.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <87qzk6s8yr.fsf@bootlin.com> X-ClientProxiedBy: PH8P221CA0026.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:2d8::29) To AS8PR04MB9079.eurprd04.prod.outlook.com (2603:10a6:20b:446::12) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB9079:EE_|GV1PR04MB9072:EE_ X-MS-Office365-Filtering-Correlation-Id: 82176652-fcc5-4275-22e6-08def88f96cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|23010399003|19092799006|6133799003|22082099003|18002099003|11063799006|4143699003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: 81D46BrZ3I6D5ta76Wd625CqQpqLBBWFenpgiBIqU8k2z0/CAAeQzgETz+fgjdtIhPYQpLADVU6MeyiXTHhxbChEd5qsIBd5NzjvhKR54wAcuyuUyS/XWg8iMXzmGr9kkb8kRKozH/nmSAwLrjIoPsERZYEo+1YKkSUHV6+zfKsaqk8zx9KCG32NLW5PWKN1cpbd9Q2McvW6bJzQreh3MclVx11e/lDDwg7dcA7jXIyeNAL9MlRJ5u3Mv8tH2NaFgkQS/bcOwCCtoAncwBCowGGtb0w6KFZaIBD6WwKF46zgjIObg9wXch599cwsfYocKc0jicbT+Xe8NT9aE5hGxOZfNrKfXeOvhFLC8jzwvBBpe74/Oe1msLXVXZ9Sv86ae6xMIxoxFX0SvlSQKiXJg96fm2/ya+HfNpIGBk+wyce+4emcEHpjDtVcALu4P/3cWBN2UVxPhpSBPTY3wCkTo1cKJS/ZqsP442TIRxJZqQBmZ8vFiMNnMfOeW60YBc7HzGwG68rMlPgKNUkSBX4AIb4zpCefFfCiaFo6fdQpsIzirdT0ApuV8L0r7ZTlAtuB9lSJypYhR2/ZJPBcGPFGhTF1YSfhbMsvkj/gbCojue/h6242ZARV20fxN43VL3S1hKf+9usD6omoPrGBxKKDmVEFxdUoYlbizi561TmUK8w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB9079.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(23010399003)(19092799006)(6133799003)(22082099003)(18002099003)(11063799006)(4143699003)(56012099006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RXlZK0hzbFkyYTR6akdjTU1OMGVsL21IVXZxTVV4MlI5RlFOUXpMK3gwY1Zk?= =?utf-8?B?cm9CYnFXYlJwNWNYWHZoMW9Db0pEdVUrUmpQV3BpV05sRUI1ZUt0bUhDRlAw?= =?utf-8?B?ekRzS3hNVVQxcWN3bEpsV2k5ei9EaUdBOGR4eDdCNEpxbXR6MWttQTNzV0Rl?= =?utf-8?B?VS9aejNwT1MySGVjNjF1dkJtSFZOR0VwQVd2M0I5TnFCZCtDc055YlY2VXpN?= =?utf-8?B?aDNYWG5RRG9KSGZyQWZ2eDZGZC9YLzlQa3F3dmd3aUNObjNGdXZwNFFzOWFP?= =?utf-8?B?Wi9mK3FNRnhqa2huK25NU3VpMEFwRnZ6aUFlSnVvVGQwQXJZWTBEL3FvNnRy?= =?utf-8?B?TnhwTHdYUTRKK2pNYUFrUUhQKzg1WGhZZ1ZsYmVHY05Ya2lwTmY1ajgxUXlJ?= =?utf-8?B?aDF4Q0x3UDJQZmNaL2tQcTNEa3UzOXlmOTI0MTdpYzR0dDZoRUEyQ09ucmtm?= =?utf-8?B?YmhKVHF4TWNSTkM0L2NueWhmdW1mQmZwbzRQV3lyd0FvczlFWUxBUVFsQTFM?= =?utf-8?B?YlIxVnlFWlVQNFgzaUZUdmxyaU4xYytTQU1JM000SE1PbkFsYmNxRXBrK2tL?= =?utf-8?B?QXBLdHM1L0RmMkVXUHNYRWZ6YnJaZER0bUxKMStOOHMwNjJBcjFFcmdLRkQ5?= =?utf-8?B?WmNjczJRcW1va0dxQ0hhUXZkbUxJTmRiUGZOV3ZZT29VTWljbnpIZVRWcjRF?= =?utf-8?B?N0RpWkIzaGlTTEVIQmUxd0pPb2ZheGZhMHRtUlY3cDZnV21STWpoa1gxdzM2?= =?utf-8?B?YVlQeEF0RFEvcGtnVGp3VUo5RllFWExvS0xsMDlja09ZSHZVK1RaK0FlWmJF?= =?utf-8?B?NXFkcWlJaVVwMlk2Mm5ja0tmdzlhZmpxajNHOU5xWmdKUmFzdS91MHFFekI4?= =?utf-8?B?Tk9sU1dPR0JTRG01ajF3NkxPREI0d2lYMjl2OW52SlNuZVJkaG1rcklYTlRM?= =?utf-8?B?MEJBYlNOd2thdldHSVBveEtzWmkwRjM0WkRCSXU1QkhML0hqRXBIU3RWNnc1?= =?utf-8?B?NWh0Q3MyUk02Vmx2ZmJCemV2ZVQxVVQ3U3NjUWJOZG9IQjZwTmdPUkhiQWxr?= =?utf-8?B?K1JtejlrNERlcnZVWGZHUWEwRHVJeXlEcCtxWUNqTEhzeVp3eTNUMFpXWkJv?= =?utf-8?B?VzR4WG1LM0tpemVTMmgrMmZaY3doYWRiOVNCZmxUMEs1M3JIVkFXeURXaFZH?= =?utf-8?B?YjJLZ2JMN1oxbmVNMzdYcXBsUG5sMmY0ZVZ4dDNjNW1nVkFYNXBUZGNHYWdn?= =?utf-8?B?ZVVET1p3VHFKcHp2WkxFZGUxUnhLMzVWRVExcXduRUp2dWVBSUhTMUFRUzVT?= =?utf-8?B?L1czajBXM0lPTEd4UVlHbktHektpZFJpNTMvc3FQbDhkNlB3TEZjUlV5bEFl?= =?utf-8?B?OUp4WVh6VjhhYkRhTWhjS0VlSjBnc0VMR2ZSNWp1Y2xhd2IrS2NEU2xhYzcz?= =?utf-8?B?Y0puMGNkUk1HaitaK29vQXVoaG5RTFNjazY2QVB0aE5UZlNOV0UycUZ0YTlJ?= =?utf-8?B?UWNlMHZLZnViVlQ4OTB2aEpQYTZYUG5pMWlSMERqVExMWTdjMkl5YkhuQjFX?= =?utf-8?B?cjRRMzd4bVQ0MG5aeG13NmhxMGxjQkE1OS9lVUhoc1F5elcvYnlNWWt2WTgw?= =?utf-8?B?QTlFRFluMndmbGk1V1lmUDhnS2prM2R6ZU1LNStNblRTMWI1Rm1BWUxWYlRC?= =?utf-8?B?M1IzdytsNTZIN0ZNK1FPTjJCZmQ4c2lncVp4YTc2TU5OL0tEZlgzeUg2b1F2?= =?utf-8?B?TngvVXdtemZLMWYzeU44N3Q4Vld3Tm1JcndWc0hMUVd5aW9kMEVrRVdVcEJM?= =?utf-8?B?ZGI2QnlWRDhpWEcyck45ODBBSWVDOTlwWjg0YVg2M29wc0tXZGtJeFRySnZU?= =?utf-8?B?T2tXLytKRDVEeUdpUWhxalhXTHBWbDh0b2tiUElENENCYnZYMy9vZG4vTEZj?= =?utf-8?B?aTcwbEVzUVBZUUNIODRXT2szcG5BZG83cFpId2c3RkhoNER3VnZYQVhZTVdR?= =?utf-8?B?U0VyN242alVBOEcwYTJyQzk2TW1iMDM5Q1pRbm56WjlDd1F6WjJlaVBTOWNi?= =?utf-8?B?bGZsYVZEdTlDclNKYlZwY3hIUHZSQ1pvaGF6UzZqc1FOUVp5L1dFa2UwcHpG?= =?utf-8?B?MHhYMi8rNWZ1R0dFMHl2d0hlY3BJMTh4aEltL1JZQlFmTGJBVWFPOXF0d1pz?= =?utf-8?B?Y1grcEdhaFRiYXpoenkvd05UbGpHVjBBdTZmMERVNDRrYnozWSt3TEhic3dS?= =?utf-8?B?N3YyZCs0bnZGbTlFdzVsQ0tHWjVtbDRLcHpjYW45VldkeHZqVUo4YmRQWHJj?= =?utf-8?B?R3pUS1pMWmtNaktvUzhGNG5QQlJWQzFtVEw1ZUFMeTJJRW5PV2ErOUtRMjhG?= =?utf-8?Q?LaIxxm85xHBS9SWosXdfThtxu/3fjYzWuhjmu?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82176652-fcc5-4275-22e6-08def88f96cb X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB9079.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Aug 2026 16:34:33.2065 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lkDkUBeaVBn2ihdyoSpkoUnBE2ai0HeIVePVP8sunOxfV5H5NlCHaW4JxXQNg5JXvchWLbEQ5nzVCYZCJYd1i/5ywwwjDsDm3eDDBZNVFX8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9072 On 26/08/10 09:58AM, Miquel Raynal wrote: > Hello Han, > > On 07/08/2026 at 18:11:27 -05, han.xu@oss.nxp.com wrote: > > > From: Han Xu > > > > The QUAD ENABLE (QE) bit is stored in a per-die configuration > > register on some SPI-NAND devices. When a device contains multiple > > dies, updating the QE bit only on the currently selected die can > > leave the remaining dies operating in non-quad mode. > >   > > Iterate over all targets and update the QE setting on each die > > during initialization to ensure consistent quad I/O operation > > across the entire device. > > > > Tested on ISSI IS38SMW04G8B. > > > > Fixes: 7529df465248 ("mtd: nand: Add core infrastructure to support > > SPI NANDs") > > There was no ISSI device back then, but I guess this can be useful for > other devices. However this shall be backported, so Cc: stable. It should be a common issue, I will CC stable in v2 and try to upstream ISSI drivers. > > > Signed-off-by: Han Xu > > --- > > drivers/mtd/nand/spi/core.c | 22 ++++++++++++++++++++-- > > 1 file changed, 20 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c > > index 35365b67dd8e..744662533f37 100644 > > --- a/drivers/mtd/nand/spi/core.c > > +++ b/drivers/mtd/nand/spi/core.c > > @@ -281,8 +281,26 @@ static int spinand_init_cfg_cache(struct spinand_device *spinand) > > static int spinand_init_quad_enable(struct spinand_device *spinand, > > bool enable) > > { > > - return spinand_upd_cfg(spinand, CFG_QUAD_ENABLE, > > - enable ? CFG_QUAD_ENABLE : 0); > > + struct nand_device *nand = spinand_to_nand(spinand); > > + unsigned int target; > > + int ret; > > + > > + /* > > + * QE is a per-die setting on some devices. Program each target > > + * individually when enabling or disabling quad I/O mode. > > + */ > > + for (target = 0; target < nand->memorg.ntargets; target++) { > > + ret = spinand_select_target(spinand, target); > > + if (ret) > > + return ret; > > + > > + ret = spinand_upd_cfg(spinand, CFG_QUAD_ENABLE, > > + enable ? CFG_QUAD_ENABLE : 0); > > + if (ret) > > + return ret; > > If there is an issue in the middle of the loop, the chip will become > unusable. Perhaps we should reset the dies to the !QE state and return > an error to continue in degraded (single) mode if that happens? Single-lane is the most basic op - if the QE set_feature write fails, the link is broken and single-lane won't work anyway. And falling back needs the vendor's own 1S op stored somewhere, but those variant tables are discarded after probe. So it likely requires refactoring struct spinand_device to cache them. Given that, maybe just keep the current return-error implementation. > > Thanks, > Miquèl