Show a cover letter.

GET /api/1.1/covers/2230385/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2230385,
    "url": "http://patchwork.ozlabs.org/api/1.1/covers/2230385/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/cover/20260429-winbond-v6-18-rc1-cont-read-v3-0-0f38b3c229ad@bootlin.com/",
    "project": {
        "id": 3,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/3/?format=api",
        "name": "Linux MTD development",
        "link_name": "linux-mtd",
        "list_id": "linux-mtd.lists.infradead.org",
        "list_email": "linux-mtd@lists.infradead.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null
    },
    "msgid": "<20260429-winbond-v6-18-rc1-cont-read-v3-0-0f38b3c229ad@bootlin.com>",
    "date": "2026-04-29T17:56:37",
    "name": "[v3,00/11] mtd: spinand: Winbond continuous read support",
    "submitter": {
        "id": 73368,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/73368/?format=api",
        "name": "Miquel Raynal",
        "email": "miquel.raynal@bootlin.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-mtd/cover/20260429-winbond-v6-18-rc1-cont-read-v3-0-0f38b3c229ad@bootlin.com/mbox/",
    "series": [
        {
            "id": 502120,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/502120/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/list/?series=502120",
            "date": "2026-04-29T17:56:40",
            "name": "mtd: spinand: Winbond continuous read support",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/502120/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2230385/comments/",
    "headers": {
        "Return-Path": "\n <linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=EwbY0zpW;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256\n header.s=dkim header.b=Wg4UW4g2;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5Q544TBXz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 03:57:57 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wI9AO-000000040M0-0PMg;\n\tWed, 29 Apr 2026 17:57:44 +0000",
            "from smtpout-04.galae.net ([185.171.202.116])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wI9AK-000000040Ka-0GSn;\n\tWed, 29 Apr 2026 17:57:42 +0000",
            "from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233])\n\tby smtpout-04.galae.net (Postfix) with ESMTPS id 78636C5CD5D;\n\tWed, 29 Apr 2026 17:58:19 +0000 (UTC)",
            "from mail.galae.net (mail.galae.net [212.83.136.155])\n\tby smtpout-01.galae.net (Postfix) with ESMTPS id 1FD8C5FD43;\n\tWed, 29 Apr 2026 17:57:35 +0000 (UTC)",
            "from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)\n with ESMTPSA id 430B71072B158;\n\tWed, 29 Apr 2026 19:57:20 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:Cc:To:MIME-Version:Message-Id:Date:\n\tSubject:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:\n\tResent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:\n\tList-Owner; bh=PCyiw7UUWV/jscXZgrdrX38l2xjqkPf7qVdN06BlnWM=; b=EwbY0zpWEk3mtm\n\tZlUYrlSHptd1ogpX7NPvDXktKU2w/oH/TbUBCB4rfK+sHiCs7m+OJ9YTBnVNMycZSRI804FzhwqIR\n\twQEstYJuGoqllLFDrCwdtZKAnmtVf9UqCliT5MCDf7xS+1ODtOh7sBjfhXgunaKKXeLUxvf6hTwBF\n\tMCoHREx2ECj+zDoj/Mf7G3fXI8eLFsORhqQGc6iOVlW2VCdnxTtIWweWvq9p4n4zqdaHJjdO2LRUB\n\trIWpn2RyYpb+BbNpvoTyMCN+AcGNV2WwtPKx+yXdJvNPXKHwxSSgayI+g8sCRB40E5PQhDgA8NOmt\n\tXelHRdtRqv4SnxSaHitA==;",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim;\n\tt=1777485452; h=from:subject:date:message-id:to:cc:mime-version:content-type:\n\t content-transfer-encoding; bh=0Vum2Qfx5+SoYzasekNBMQ+YiKVnGlZJ3ij44o9Xlgc=;\n\tb=Wg4UW4g2WGpQe+FXph6tsBHWFD0BECvRL8NLGhZLbAiM0dLXtALl0yBqIrD+0Lawp02qRd\n\tL/DUtmJwUhFvT/7i6dVkrYjSR0i2aqxl97NpsmKlJePMUStXMKAKuFLrdElmd6uDrZQMrW\n\tDN2MVcdBKW/CmE3V63+VSy0oolOIh9vMJaN/cxw17hZkc97U0ZfuUAPZ4yGanlQWOoatGq\n\tqp6FDwvx+tvn2k6kj4NlTu0PZO5c6zF2pim5Qlv9CB37AYmDKTUNUAVKAIQsbmXwa4RuM/\n\t89ov9iKbcYD//Z7K/Ck/zA6aLDSk0p904Hc5ZMnNQ2ekegrqYQiQ3Q5SeoRwvw=="
        ],
        "From": "Miquel Raynal <miquel.raynal@bootlin.com>",
        "Subject": "[PATCH v3 00/11] mtd: spinand: Winbond continuous read support",
        "Date": "Wed, 29 Apr 2026 19:56:37 +0200",
        "Message-Id": "\n <20260429-winbond-v6-18-rc1-cont-read-v3-0-0f38b3c229ad@bootlin.com>",
        "MIME-Version": "1.0",
        "X-B4-Tracking": "v=1; b=H4sIAAAAAAAC/33NSw6CMBSF4a2Qjr2mLy7gyH0YB/ShNNHWtKRqC\n Hu3kDBxwPA/g+9MJNnobCKnaiLRZpdc8CXEoSJ66P3dgjOlCae8ZpxKeDuvgjeQEVgLUTPQwY8\n QbW8AUTYdM0ZxFKQIr2hv7rPql2vpwaUxxO96ltmybm6962YGFChTWrYomG7EWYUwPpw/6vAki\n 5z5piEVHPc1XjSUwtiu6bHt/7R5nn8RUI1yFgEAAA==",
        "X-Change-ID": "20251204-winbond-v6-18-rc1-cont-read-664791ddb263",
        "To": "Mark Brown <broonie@kernel.org>, Richard Weinberger <richard@nod.at>,\n  Vignesh Raghavendra <vigneshr@ti.com>, Michael Walle <mwalle@kernel.org>,\n  Miquel Raynal <miquel.raynal@bootlin.com>,\n  Takahiro Kuwano <takahiro.kuwano@infineon.com>,\n  Lorenzo Bianconi <lorenzo@kernel.org>, Ray Liu <ray.liu@airoha.com>,\n  Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>, =?utf-8?q?C=C3=A9dric_Le_Goa?=\n\t=?utf-8?q?ter?= <clg@kaod.org>,  Joel Stanley <joel@jms.id.au>,\n Andrew Jeffery <andrew@codeconstruct.com.au>,\n  Avi Fishman <avifishman70@gmail.com>, Tomer Maimon <tmaimon77@gmail.com>,\n  Tali Perry <tali.perry1@gmail.com>, Patrick Venture <venture@google.com>,\n  Nancy Yuen <yuenn@google.com>, Benjamin Fair <benjaminfair@google.com>,\n  Maxime Coquelin <mcoquelin.stm32@gmail.com>,\n  Alexandre Torgue <alexandre.torgue@foss.st.com>, =?utf-8?q?Jonathan_Neusch?=\n\t=?utf-8?q?=C3=A4fer?= <j.neuschaefer@gmx.net>",
        "Cc": "Pratyush Yadav <pratyush@kernel.org>,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Steam Lin <STLin2@winbond.com>, Santhosh Kumar K <s-k6@ti.com>,\n linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org,\n linux-aspeed@lists.ozlabs.org, openbmc@lists.ozlabs.org,\n linux-stm32@st-md-mailman.stormreply.com",
        "X-Mailer": "b4 0.14.3",
        "X-Last-TLS-Session-Version": "TLSv1.3",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260429_105740_387785_D69C9EF6 ",
        "X-CRM114-Status": "GOOD (  22.55  )",
        "X-Spam-Score": "-2.1 (--)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  Hello, TLDR: I dropped v2 from my tree due to build issues\n    with SPI controllers which I forgot about due to my testing configuration\n    being minimal. This is just a respin of the same series, fixing the spi co\n    [...]\n Content analysis details:   (-2.1 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -0.0 SPF_PASS               SPF: sender matches SPF record\n -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]",
        "X-BeenThere": "linux-mtd@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "Linux MTD discussion mailing list <linux-mtd.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-mtd>,\n <mailto:linux-mtd-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/linux-mtd/>",
        "List-Post": "<mailto:linux-mtd@lists.infradead.org>",
        "List-Help": "<mailto:linux-mtd-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-mtd>,\n <mailto:linux-mtd-request@lists.infradead.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "base64",
        "Sender": "\"linux-mtd\" <linux-mtd-bounces@lists.infradead.org>",
        "Errors-To": "linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "Hello,\n\nTLDR: I dropped v2 from my tree due to build issues with SPI\ncontrollers which I forgot about due to my testing configuration being\nminimal. This is just a respin of the same series, fixing the spi\ncontroller drivers which I initially missed.\n\nSPI NAND continuous read support has already been added a few releases\nago, but only Macronix chips were benefiting from this support. Winbond\nchips also have a continuous read feature, which is slightly more\ncomplex to use in the scope of the Linux kernel, because they these\nchips expect a different read from cache operation once in continuous\nmode.\n\nIn order to be more flexible, this series changes the logic behind\ndirmaps. Direct mappings used to be very static, not flexible. I am\nproposing to change this and turn them in to slightly more dynamic\ninterfaces, where for instance we can:\n- Enable/disable the correction (was previously handled by creating yet\n  another pair of direct mappings per target).\n- Select one or another variant for the cache operations.\n\nI propose to name the variants available in a direct mapping \"primary\"\nand \"secondary\", and let the upper layer (SPI NOR or SPI NAND) point to\nthe one that needs to be used for the operation. Controller drivers\nshould not really care about this change, expect the fact that they\nshould not keep a static representation of the template on their\nside. Because of that, I am creating a capability boolean to flag\ndrivers that support this capability (the flag is ignored in the\nnodirmap case).\n\nThis series is now sent as v2 following a former RFC (link below).\n\nHere is a benchmark with the faster Winbond chip I have, W35N02JW on a\nTI AM62a7 LP SK featuring the Cadence QSPI controller, clocked at\n25MHz. Speed gain for a 10-page read is about +32% in octal SDR mode,\n+47% for a 10-page read in octal DTR mode and up to +83% for a entire\nblock read!\n\n    1S-8S-8S, no continuous read:\n\n       64 page read speed is 15058 KiB/s\n\n    1S-8S-8S, with continuous reads:\n\n       1 page read speed is 15058 KiB/s\n       2 page read speed is 15058 KiB/s\n       3 page read speed is 16800 KiB/s\n       4 page read speed is 17066 KiB/s\n       5 page read speed is 18461 KiB/s\n       6 page read speed is 18461 KiB/s\n       7 page read speed is 19384 KiB/s\n       8 page read speed is 19692 KiB/s\n       9 page read speed is 19384 KiB/s\n       10 page read speed is 20000 KiB/s\n       11 page read speed is 20000 KiB/s\n       12 page read speed is 20000 KiB/s\n       13 page read speed is 20800 KiB/s\n       14 page read speed is 20363 KiB/s\n       15 page read speed is 20000 KiB/s\n       16 page read speed is 19692 KiB/s\n       32 page read speed is 19692 KiB/s\n       64 page read speed is 19692 KiB/s\n\n    8D-8D-8D, no continuous read:\n\n       64 page read speed is 23272 KiB/s\n\n    8D-8D-8D, with continuous read:\n\n       1 page read speed is 23272 KiB/s\n       2 page read speed is 23272 KiB/s\n       3 page read speed is 28000 KiB/s\n       4 page read speed is 32000 KiB/s\n       5 page read speed is 34285 KiB/s\n       6 page read speed is 34285 KiB/s\n       7 page read speed is 36000 KiB/s\n       8 page read speed is 36571 KiB/s\n       9 page read speed is 36000 KiB/s\n       10 page read speed is 34285 KiB/s\n       11 page read speed is 36666 KiB/s\n       12 page read speed is 40000 KiB/s\n       13 page read speed is 41600 KiB/s\n       14 page read speed is 37333 KiB/s\n       15 page read speed is 40000 KiB/s\n       16 page read speed is 36571 KiB/s\n       32 page read speed is 42666 KiB/s\n       64 page read speed is 42666 KiB/s\n\nOn the Nuvoton platform, the speed gain is real, even though it is less\nimpressive:\n\n       1 page read speed is 1802 KiB/s\n       2 page read speed is 1882 KiB/s\n       3 page read speed is 1938 KiB/s\n       4 page read speed is 1939 KiB/s\n       5 page read speed is 1935 KiB/s\n       6 page read speed is 1967 KiB/s\n       7 page read speed is 1968 KiB/s\n       8 page read speed is 1969 KiB/s\n       9 page read speed is 1968 KiB/s\n       10 page read speed is 2000 KiB/s\n       11 page read speed is 2000 KiB/s\n       12 page read speed is 2000 KiB/s\n       13 page read speed is 2000 KiB/s\n       14 page read speed is 2000 KiB/s\n       15 page read speed is 2000 KiB/s\n       16 page read speed is 2000 KiB/s\n       32 page read speed is 2000 KiB/s\n       64 page read speed is 2000 KiB/s\n\nThanks!\nMiquèl\n\n---\nChanges in v3:\n- The API change in spi-mem has been applied to all SPI controller drivers\n  (fixing build failures on drivers I was not building in my test\n  config).\n  That is the only change.\n- Link to v2: https://lore.kernel.org/r/20260326-winbond-v6-18-rc1-cont-read-v2-0-643de97a68a3@bootlin.com\n\nChanges in v2:\n- Rebased on v7.0-rc1.\n- Collected tags.\n- I manually tested the integrity of the data by manually disabling all\n  possible variants one after the other using a 2 page read scenario. All\n  worked except the fastest 8D-8D-8D variant (the first one in the list)\n  which triggered the CS deassert issue on the Cadence controller. This\n  issue is orthogonal to this patchset, a follow-up series will be sent\n  to disable continuous reads on this controller.\n- All continuous read variants for the W25NxxJW chips have been tested\n  on the MA35D1 platform (which lead to several fixes) and the\n  W35NxxJW chips have been tested on TI AM62a7 LP SK.\n- Several changes have been operated in the core to stabilize the\n  feature when a secondary op is used.\n- A couple of helpers have been created to cleanup the winbond.c driver.\n- Link to v1: https://lore.kernel.org/r/20251205-winbond-v6-18-rc1-cont-read-v1-0-01bc48631c73@bootlin.com\n\n---\nMiquel Raynal (11):\n      mtd: spinand: Drop a too strong limitation\n      mtd: spinand: Expose spinand_op_is_odtr()\n      mtd: spinand: Drop ECC dirmaps\n      spi: spi-mem: Transform the read operation template\n      spi: spi-mem: Create a secondary read operation\n      mtd: spinand: Use secondary ops for continuous reads\n      mtd: spinand: winbond: Ensure chips are ordered by density\n      mtd: spinand: winbond: Add support for continuous reads on W35NxxJW\n      mtd: spinand: winbond: Create a helper to write the HS bit\n      mtd: spinand: winbond: Create a helper to detect the need for the HS bit\n      mtd: spinand: winbond: Add support for continuous reads on W25NxxJW\n\n drivers/mtd/nand/spi/core.c    | 135 ++++++++++++------\n drivers/mtd/nand/spi/winbond.c | 317 ++++++++++++++++++++++++++++++++---------\n drivers/mtd/spi-nor/core.c     |  22 +--\n drivers/spi/spi-airoha-snfi.c  |   6 +-\n drivers/spi/spi-aspeed-smc.c   |   4 +-\n drivers/spi/spi-intel.c        |   6 +-\n drivers/spi/spi-mem.c          |  32 ++++-\n drivers/spi/spi-mxic.c         |  18 +--\n drivers/spi/spi-npcm-fiu.c     |  16 +--\n drivers/spi/spi-rpc-if.c       |   8 +-\n drivers/spi/spi-stm32-ospi.c   |   6 +-\n drivers/spi/spi-stm32-qspi.c   |   6 +-\n drivers/spi/spi-wpcm-fiu.c     |   2 +-\n include/linux/mtd/spinand.h    |  16 ++-\n include/linux/spi/spi-mem.h    |   8 +-\n 15 files changed, 435 insertions(+), 167 deletions(-)\n---\nbase-commit: 1e0fe839f8c4bade7b9dc358fb8eef5b2f43af49\nchange-id: 20251204-winbond-v6-18-rc1-cont-read-664791ddb263\n\nBest regards,"
}