Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216532/?format=api
{ "id": 2216532, "url": "http://patchwork.ozlabs.org/api/patches/2216532/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20260326-winbond-v7-0-rc1-cadence-cont-read-v1-4-0d626e1dfb2b@bootlin.com/", "project": { "id": 3, "url": "http://patchwork.ozlabs.org/api/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, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260326-winbond-v7-0-rc1-cadence-cont-read-v1-4-0d626e1dfb2b@bootlin.com>", "list_archive_url": null, "date": "2026-03-26T16:47:18", "name": "[4/4] spi: cadence-qspi: Prevent SPI NAND continuous reads", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "7c8895c46a82866d2228c38014b07e22b0d6ef9f", "submitter": { "id": 73368, "url": "http://patchwork.ozlabs.org/api/people/73368/?format=api", "name": "Miquel Raynal", "email": "miquel.raynal@bootlin.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-mtd/patch/20260326-winbond-v7-0-rc1-cadence-cont-read-v1-4-0d626e1dfb2b@bootlin.com/mbox/", "series": [ { "id": 497624, "url": "http://patchwork.ozlabs.org/api/series/497624/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-mtd/list/?series=497624", "date": "2026-03-26T16:47:14", "name": "spi: spi-mem/mtd: spinand: Prevent SPI NAND continuous reads on am65/am62", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497624/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216532/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216532/checks/", "tags": {}, "related": [], "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=K9v2s35r;\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=f13qncox;\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 4fhV7m4jrVz1yGD\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 03:47:48 +1100 (AEDT)", "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w5nrz-00000005svj-4BFs;\n\tThu, 26 Mar 2026 16:47:43 +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 1w5nrt-00000005sq6-07Ac\n\tfor linux-mtd@lists.infradead.org;\n\tThu, 26 Mar 2026 16:47:41 +0000", "from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233])\n\tby smtpout-04.galae.net (Postfix) with ESMTPS id C828CC566BF;\n\tThu, 26 Mar 2026 16:48:03 +0000 (UTC)", "from mail.galae.net (mail.galae.net [212.83.136.155])\n\tby smtpout-01.galae.net (Postfix) with ESMTPS id 840E8601FA;\n\tThu, 26 Mar 2026 16:47:35 +0000 (UTC)", "from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)\n with ESMTPSA id 7D95F10450CCF;\n\tThu, 26 Mar 2026 17:47:33 +0100 (CET)" ], "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:In-Reply-To:References:Message-Id\n\t:MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=hWCrlpAp+xZ8Fd8BQBWyafS7CNtEa7SAZRCudJ5zDOE=; b=K9v2s35r/Nuymz\n\tBIMbV1XOYIM/ANQcco1+5Wp7mHDM5hB0k/Ke32qxm+sSMZ4ThQLn6MBnNP7/+tKYwe2NmRi18sShP\n\tfRje7OYIdvNKMx+I8fIILa76mrcgw2RhMnVjMLS58/urhpwdTxZBGENFQGl8jmz5dU8I05dumjsGF\n\t9gsdwwTtXaxYIsF5Q3RZOqMRkDv6O3+YV7Dni3WDzZwsQ235l+Qv33u/LYs6fOV9rEecqU5/m7+OJ\n\takL8rhLTCuXi0Yp+UgCP0I/g50UKlw0zpSDVgztAV9FUsqhG/ceofSP7S6W35fiDtRvxn9fTgqzVr\n\tGbptBOjXt3R1wOhHEa8Q==;", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim;\n\tt=1774543654; h=from:subject:date:message-id:to:cc:mime-version:content-type:\n\t content-transfer-encoding:in-reply-to:references;\n\tbh=oi9vHPgZ6TQ8sWVxiBtvclwkIMonxdZq7gPFy31C+DI=;\n\tb=f13qncoxoULR4Z6zD7IG2dWYwE0ImXS4pJrZVzifYdfpGuM2TAObnWGnhtHJLZhxhbbAF1\n\tkKxdYaV9LMajndQnLm5arTfIjj8xeDw9bfEEEq4h87fqCrzrg1ewe10XOVUFfBT3cQw9gt\n\t+RqUbj+zOCz6qgFQn8mJClzvsNZIygZfTGt8uqSk3dK692h+eRx/nXkLtZsM/5fdY4hByE\n\t8hYCgxpeqXeCtrzzWUL7uW/rfigawivze800C8LqWXyOIwyB/BxRhbeuFHnejfJDiJyqgC\n\taWYf46VKmIwUnFgEHUVBmdL9tiydFMZnoFNIP3+4wx8BeCn3CMLK0oEOlHHN2Q==" ], "From": "Miquel Raynal <miquel.raynal@bootlin.com>", "Date": "Thu, 26 Mar 2026 17:47:18 +0100", "Subject": "[PATCH 4/4] spi: cadence-qspi: Prevent SPI NAND continuous reads", "MIME-Version": "1.0", "Message-Id": "\n <20260326-winbond-v7-0-rc1-cadence-cont-read-v1-4-0d626e1dfb2b@bootlin.com>", "References": "\n <20260326-winbond-v7-0-rc1-cadence-cont-read-v1-0-0d626e1dfb2b@bootlin.com>", "In-Reply-To": "\n <20260326-winbond-v7-0-rc1-cadence-cont-read-v1-0-0d626e1dfb2b@bootlin.com>", "To": "Mark Brown <broonie@kernel.org>, Richard Weinberger <richard@nod.at>,\n Vignesh Raghavendra <vigneshr@ti.com>", "Cc": "Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-mtd@lists.infradead.org, Michael Walle <mwalle@kernel.org>,\n Takahiro Kuwano <takahiro.kuwano@infineon.com>,\n Pratyush Yadav <pratyush@kernel.org>, Steam Lin <STLin2@winbond.com>,\n Santhosh Kumar K <s-k6@ti.com>, Miquel Raynal <miquel.raynal@bootlin.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-20260326_094737_211487_941C1039 ", "X-CRM114-Status": "GOOD ( 17.31 )", "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: TI AM62Ax errata i2351,\n entitled \"OSPI: Direct Access Controller\n (DAC) does not support Continuous Read mode with NAND Flash\",\n explains that\n the CS can be deasserted almost at any time during a transf [...]\n Content analysis details: (-2.1 points, 5.0 required)\n pts rule name description\n ---- ----------------------\n --------------------------------------------------\n 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [185.171.202.116 listed in\n bl.score.senderscore.com]\n 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The\n query to Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [185.171.202.116 listed in\n sa-trusted.bondedsender.org]\n 0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to\n Validity was blocked. See\n https://knowledge.validity.com/hc/en-us/articles/20961730681243\n for more information.\n [185.171.202.116 listed in\n sa-accredit.habeas.com]\n -0.0 SPF_HELO_PASS SPF: HELO matches SPF record\n -0.0 SPF_PASS SPF: sender 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_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 0.1 DKIM_SIGNED Message has a DKIM or DK signature,\n not necessarily valid\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=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Sender": "\"linux-mtd\" <linux-mtd-bounces@lists.infradead.org>", "Errors-To": "linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "TI AM62Ax errata i2351, entitled \"OSPI: Direct Access Controller (DAC)\ndoes not support Continuous Read mode with NAND Flash\", explains that\nthe CS can be deasserted almost at any time during a transfer (basically\nthere is an interconnect arbitration every 1023 byte). This is an\nexpected internal behaviour of the controller, but this leads to\nspurious CS deasserts. These are totally forbidden during SPI NAND\ncontinuous read transfers, because they indicate an end of transfer and\nthe continuous read is then stopped on the flash side.\n\nI initially tried to query the flash type and geometry to decide whether\nto apply a spi message size limit (there is a spi helper for that) but\nwe cannot reliably get up to the MTD structure to discriminate if it is\na NOR or a NAND we are playing with (it is not relevant to limit SPI NOR\ntransfers, they are not affected). If we actually take this path, what\nlimitation shall we enforce? The errata mentions 1023B, this is super\nlow, less than a typical page size (about 2k or 4k, for most of them),\nso this is not usable. On my side, I only observed this problem on a\n2-page read in octal DTR mode with more than 12 dummy cycles. The\nwritesize summed with the oobsize could be a relevant boundary, but it\nis still quite arbitrary. Hence, I opted for implementing a controller\ncapability flag, which then is used to decide whether the SPI NAND\ncontinuous read feature can be enabled.\n\nSigned-off-by: Miquel Raynal <miquel.raynal@bootlin.com>\n---\nI do not know if all flavours of this controller have the same\nlimitation, or whether it is integration specific. As I only found\nmention of this errata for the AM62 processor, I opted for limiting the\nflag to a single compatible.\n---\n drivers/spi/spi-cadence-quadspi.c | 8 ++++++++\n 1 file changed, 8 insertions(+)", "diff": "diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c\nindex 649ff55333f0..9f9b3013aa5d 100644\n--- a/drivers/spi/spi-cadence-quadspi.c\n+++ b/drivers/spi/spi-cadence-quadspi.c\n@@ -1740,6 +1740,12 @@ static const struct spi_controller_mem_caps cqspi_mem_caps = {\n \t.per_op_freq = true,\n };\n \n+static const struct spi_controller_mem_caps cqspi_am654_mem_caps = {\n+\t.dtr = true,\n+\t.per_op_freq = true,\n+\t.no_cs_assertion = true,\n+};\n+\n static int cqspi_setup_flash(struct cqspi_st *cqspi)\n {\n \tstruct platform_device *pdev = cqspi->pdev;\n@@ -1797,6 +1803,8 @@ static int cqspi_probe(struct platform_device *pdev)\n \thost->mode_bits = SPI_RX_QUAD | SPI_RX_DUAL;\n \thost->mem_ops = &cqspi_mem_ops;\n \thost->mem_caps = &cqspi_mem_caps;\n+\tif (of_device_is_compatible(pdev->dev.of_node, \"ti,am654-ospi\"))\n+\t\thost->mem_caps = &cqspi_am654_mem_caps;\n \n \tcqspi = spi_controller_get_devdata(host);\n \tif (of_device_is_compatible(pdev->dev.of_node, \"starfive,jh7110-qspi\"))\n", "prefixes": [ "4/4" ] }