From nobody Tue Sep 29 00:36:44 2026 Received: from gw2.atmark-techno.com (gw2.atmark-techno.com [35.74.137.57]) (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 56C053515DA for ; Fri, 14 Aug 2026 08:16:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=35.74.137.57 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786695381; cv=none; b=psTp/mS/yFAcQW16lbyNpcIZOsEgQd89bPvKRmxXRYlIv71aCaMrWqIU1euwW5rKJ7fkQKdA24YYBlJ4qeOn1CaBJMcucqKinVh1/SzuOIvGXR5kyzhonhUkqbuR4Qnqg1AMh94c/EyAn9B5BC2aRB3Duw37894lT85bgkeAS44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786695381; c=relaxed/simple; bh=SYk2jvmCIRtwNpXyEndM5dF0jL/F42Tf0xqZ49dKTPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=C4YSvuduNqZGBjMWLvh/G0ggtk6WIXQKyzRoMVuOpI8kp5C2kaTQetb8Xs4vPy8NmtV3r0MUAB1BGWDfMl/TbCjjTy2YgLmTURuYX7skc0Lh+duwtcn9+rXburJhVwIymqKvzIFZTKg95YZ0+/dqHQas7tAamSrn7FzTnvydP3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com; spf=pass smtp.mailfrom=atmark-techno.com; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=mHX3HgeU; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b=J0qk2wfA; arc=none smtp.client-ip=35.74.137.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atmark-techno.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="mHX3HgeU"; dkim=pass (2048-bit key) header.d=atmark-techno.com header.i=@atmark-techno.com header.b="J0qk2wfA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=atmark-techno.com; s=gw2_bookworm; t=1786695376; bh=SYk2jvmCIRtwNpXyEndM5dF0jL/F42Tf0xqZ49dKTPY=; h=From:Date:Subject:To:Cc:From; b=mHX3HgeUCGLzC9fro0wYeMMdKTEgqtDDERW4DejWnTzT3BRqfYsHz7KZldvFc794W SFSHiBzmO062cHkftyi0tXKkOviI8Z1uzipQxbHv+D7yEK1FrNkpBkfd+O4TXXnu9H gA5sYM2Nh6anpKBd/BncF06U8M19NzeJbCRzPdO/hZkKrog9pSEboI5sUEP0WB1N0T BkBZ4HdRwlaCtFukys4mIk4Z+TbKhSeUq7BYNpf94T55QohdwXZgdVcB6PlydFA9ze 0FXYq632nkw9p/v19ibRcyvThR1fuQPQe6Wsq6byOLhbg2/ajq8Ap6+4YuITwYcD0P +DaRolzRXguZw== Received: from gw2.atmark-techno.com (localhost [127.0.0.1]) by gw2.atmark-techno.com (Postfix) with ESMTP id DDE766B8 for ; Fri, 14 Aug 2026 17:16:16 +0900 (JST) Authentication-Results: gw2.atmark-techno.com; dkim=pass (2048-bit key; unprotected) header.d=atmark-techno.com header.i=@atmark-techno.com header.a=rsa-sha256 header.s=google header.b=J0qk2wfA; dkim-atps=neutral Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by gw2.atmark-techno.com (Postfix) with ESMTPS id 91F06329 for ; Fri, 14 Aug 2026 17:16:16 +0900 (JST) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2cfe48ca1efso9810875ad.0 for ; Fri, 14 Aug 2026 01:16:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atmark-techno.com; s=google; t=1786695375; x=1787300175; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=l+a1HHuceYnWDLRxnCKGr+NZPKuWd1/Y9/oQSG5Bpfs=; b=J0qk2wfAYbYV11+8qnREaCBoKchIIk30I/3aJqK8dPhzCMudPmqVhYAJvPDBlG/dlm zTrVehUIFtSEuv6l1Gcb6bL071U90WB7JJBR349ksPeTOyGNaJzp5lUGPsrWZLJor5Bl vBEYokSHM1A6uyVQ/g8I5wjMsUjEqwQUI8PnWEa+LVfPyk+wHQGvEDPra9ywI7zuYbkz 2rdUSj+WUmQFWRc9RSFCeVsfOuqbWxOLelZbRcDJpzRk4ljlKIZwCMSwPo2onWf94LIZ hWiv9PqFy6HUZhxUhgS3ZA5I/MQQ837W0tp13FaiZiwavyUDESFVbAMuRi/4Du4Dty23 2ntg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786695375; x=1787300175; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=l+a1HHuceYnWDLRxnCKGr+NZPKuWd1/Y9/oQSG5Bpfs=; b=MOVBegyqzGP/2DDkHij+TJ89wX53nMWyamoiFwq1gZSDRJedFjjCDK8vz7uKNwcwDi IcxaMwUj0cOHPgNDPaAIpO9KlOkSfH43PtlUNdFoxC3oyN7mQ2h0SWi/4UPDBDWoeXjL 6A4f/sD/1rB00upuk3hZYCkwnXbiJe0aMR9pE/wc1dRIrQWk91IHYGcgJeNJT4/NeG+r O56g2LTErC3Rok0oGwM+5sXKPb/Wa/sT+53FWm4YH52xUF/PhnjrsZYTL3k4+zoGYCq6 pMhy8WhdI8V3uicwVkPCztbOmttS2kuVgazxKvqcT3kHczoPcItUOxaKjuNzz7pV6wmk g4rQ== X-Forwarded-Encrypted: i=1; AHgh+RpYEpmU96iuvjAb7etLV9PBIrkP/W4pzSwrbsKsHsmE41UP209EJv3FpDnD7gGdpKNpMJEMHIl1tz1Noig=@vger.kernel.org X-Gm-Message-State: AOJu0Ywpb++BjGXiVMG2BHWk7jlBBg2szM+tmwWBwksNDze3HP0XQm6w 1AHFY+XsNCRSDmJX5mA99W45CNPPkoJCtES1jYV4icVgSpIlgp8UXlDrM4f4mstzHkl34Mk+gZz 2mRecKSFD9quwCyOp0XWI6G1DcfmUqmeV/vKYVz7BzKvRK9Y3OfWiKctQunmCXm5UhLI= X-Gm-Gg: AR+sD13Y/3LYPm0Ap9Q5LesERU46ERhWS0NhOVlnulYagT6p4FFi87x5ZQmLxXm3vFH AzgoVJuYkIo6kkcreYRzlTZl5R3aaM6DdcBqXX6k9b8JFwIJ4PjrJa9pOJ9U7DcL/sCs5fdOjHr yIPpG16DdQ6Gx03maC4k4JkBxtUu/hO0IxdPs7IbtZWLrkF5JBmb9mRb/0gxN+iWjHNUuZCsLaL 5ugiqAglvhr/SUeCM9prNiTingyA+NhixHmc4erRZmTNF5jBO+JHe/u3Eg2b0tDYKlCS528AIBq iqN3GXL1705G2ognJXVQpmOQaXZBaoO/zD/0yAeqoguMak1hsz9FwKvhBMziyTt9aFdcdWF3IX4 HMASR7yiprEqUFHWz4sr4wyWJNSM0b56mlfDhI7itkaWzISVA X-Received: by 2002:a17:903:1b23:b0:2c9:ff29:3f91 with SMTP id d9443c01a7336-2d3b08727e4mr49756205ad.6.1786695375603; Fri, 14 Aug 2026 01:16:15 -0700 (PDT) X-Received: by 2002:a17:903:1b23:b0:2c9:ff29:3f91 with SMTP id d9443c01a7336-2d3b08727e4mr49755535ad.6.1786695375124; Fri, 14 Aug 2026 01:16:15 -0700 (PDT) Received: from localhost (sodcd-04p2-40.ppp11.odn.ad.jp. [203.139.65.40]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-2d3ae7da3d8sm6380515ad.30.2026.08.14.01.16.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Aug 2026 01:16:14 -0700 (PDT) From: Dominique Martinet Date: Fri, 14 Aug 2026 08:15:58 +0000 Subject: [PATCH RFC] mtd: spinand: winbond: enable continuous read for W25N04LW Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260814-w25n04lw-contread-v1-1-2968b07c962d@atmark-techno.com> X-B4-Tracking: v=1; b=H4sIAL3OfmoC/0WNywrCMBREf6XctYG8GmK3gh/gVrqoya1GJNUkb YXSfzdq0OUZZuYsEDE4jNBUCwScXHSDz8A2FZhL589InM0MnHJFNZNk5rWn8jYTM/gUsLOECql rVNRojZB394C9e34+j3DY76D9hnE8XdGk91upBXyM2ZhK9ydsqqLjf53ALZPKaiFp30wC2nV9A XVUJf29AAAA X-Change-ID: 20260814-w25n04lw-contread-03485e60c88e To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Dominique Martinet X-Mailer: b4 0.16-dev-a9e92 X-Developer-Signature: v=1; a=openpgp-sha256; l=3706; i=dominique.martinet@atmark-techno.com; h=from:subject:message-id; bh=SYk2jvmCIRtwNpXyEndM5dF0jL/F42Tf0xqZ49dKTPY=; b=owEBbQKS/ZANAwAKAfKKYH/WjHEHAcsmYgBqfs7N8ZJymqdIHDBK3Th24JwLfVjEV6WH3g985 YkZOf9q8VCJAjMEAAEKAB0WIQQoFSiLMD+txr0veJbyimB/1oxxBwUCan7OzQAKCRDyimB/1oxx B6I7D/40Iv0Wfp9s04/LUaxfpxm0ljaQrgrpsylPyi3MeDXK/Ha38dZGijMS9JXz+nyY/qV5qS2 zKNP7BjXL3pfFUZpzgOGqSYoaeIWBLBq0pjy2XPqXUf+ZTv0gLAJq0M3lw7IXIVjVRFwtlG8jYQ jA0lqcUJCSqcLzKYcCChpFslFdtPvROkcLeVOZrZXcSyblJNk/1geIo1kQPB9SvfsTizlAMzEpk 72YgmbGzofut627PIg1gF9bgn18z+ViPLO6EsVBAzNy+PDUlOXvM7f6zbb0HYZLCzrGh1Jt7Na/ inNFAAl92u59PE2XAz7WX7r3j7mTAu0SZF8DGQ3u2/JCCiM5QV/6SpdDds4eFyYbsVj9ic01SAm YUOYQtqhL05uiQCotoajIRLnfnJxOlaM5uquERMQQVhfxX8/b1AHZakOcOQOq1kG1hwsBFQ2pkb sJ1cLi94S89zqvfJjFdUSgwqzGaqLd+eXIa+TdfOmIahTFZwJtuL0EZndwXcRk63zinRBwcn+Ks 0KsxBMicS32qy7lWswHiFtxbrYKi9nLNNSvbyZn8AF64RGoKlhfH7hhthA6nAtA0rtfLLVCI329 +xJbxCEitB4hka3pH7SZLSrKal8wHmRkj1aEmxZBXWgAlsZX/80sDRKD0vYcHQLdOad+emNbFPl IauZeGr8CWRuieA== X-Developer-Key: i=dominique.martinet@atmark-techno.com; a=openpgp; fpr=2815288B303FADC6BD2F7896F28A607FD68C7107 This enables continuous read for W25N04LW: - The ops are basically the same as cont_read_cache_dual_quad_dtr_variants without the speed limit (this chip has no HFREQ flag that would change the required delays) and without DTR ops (not supported) - w25n0xjw_set_cont_read() can be reused Unfortunately on my system (i.MX 8ULP LPSPI) the first time continuous read is used spinand_read_from_cache_op() falls into this if and disables continuous read, so this didn't go any further: /* * Dirmap accesses are allowed to toggle the CS. * Toggling the CS during a continuous read is forbidden. */ if (nbytes && req->continuous) { /* * Spi controller with broken support of continuous * reading was detected. Disable future use of * continuous reading and return -EAGAIN to retry * reading within regular mode. */ spinand->cont_read_possible =3D false; return -EAGAIN; } I'm leaving this patch for anyone who could have hardware for this (or eventually myself after I have time to check the SPI driver...) Fun fact: nanddump -C is about 9% faster than nanddump on large data (tried 10MB) even if continuous read is not supported. Signed-off-by: Dominique Martinet --- drivers/mtd/nand/spi/winbond.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c index 171f4c264220..ad735f73945b 100644 --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c @@ -203,6 +203,13 @@ static SPINAND_OP_VARIANTS(cont_read_cache_dual_quad_d= tr_variants, /* The 1S_1D_1D variant would require 4.5 dummy bytes, this is not possi= ble */ WINBOND_CONT_READ_FROM_CACHE_FAST_1S_1S_1S_OP(4, NULL, 0, 0)); =20 +static SPINAND_OP_VARIANTS(cont_read_cache_variants, + WINBOND_CONT_READ_FROM_CACHE_1S_4S_4S_OP(6, NULL, 0, 0), + WINBOND_CONT_READ_FROM_CACHE_1S_1S_4S_OP(4, NULL, 0, 0), + WINBOND_CONT_READ_FROM_CACHE_1S_2S_2S_OP(4, NULL, 0, 0), + WINBOND_CONT_READ_FROM_CACHE_1S_1S_2S_OP(4, NULL, 0, 0), + WINBOND_CONT_READ_FROM_CACHE_FAST_1S_1S_1S_OP(4, NULL, 0, 0)); + static SPINAND_OP_VARIANTS(read_cache_variants, SPINAND_PAGE_READ_FROM_CACHE_1S_4S_4S_OP(0, 2, NULL, 0, 0), SPINAND_PAGE_READ_FROM_CACHE_1S_1S_4S_OP(0, 1, NULL, 0, 0), @@ -780,11 +787,13 @@ static const struct spinand_info winbond_spinand_tabl= e[] =3D { SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xb2, 0x23), NAND_MEMORG(1, 4096, 256, 64, 2048, 40, 1, 1, 1), NAND_ECCREQ(8, 512), - SPINAND_INFO_OP_VARIANTS(&read_cache_variants, - &write_cache_variants, - &update_cache_variants), + SPINAND_INFO_OP_VARIANTS_WITH_CONT(&read_cache_variants, + &write_cache_variants, + &update_cache_variants, + &cont_read_cache_variants), 0, - SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), + SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status), + SPINAND_CONT_READ(w25n0xjw_set_cont_read)), SPINAND_INFO("W35N04JW", /* 1.8V */ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xdf, 0x23), NAND_MEMORG(1, 4096, 128, 64, 512, 10, 1, 4, 1), --- base-commit: 0f1b5abff55b580facccc16324ede60b048bd23c change-id: 20260814-w25n04lw-contread-03485e60c88e prerequisite-change-id: 20260812-w25n04lw-3e9146d8340f:v3 prerequisite-patch-id: 3fbc1f74bfc7bbcd5dd7ecf62a7e5b0352cacbb2 Best regards, -- =20 Dominique Martinet