From patchwork Thu Apr 6 06:18:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765864 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=tDtsryTb; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=PzZpfsU0; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZ13dZPz1yYs for ; Thu, 6 Apr 2023 16:19:53 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sr9uiQQdZOtGzKJQYM9A6URG4YbcgaHj91yzGxvW+dM=; b=tDtsryTbKBtG/E IxZHx6dSVQwbjRNhVRYN/TuW0SLLQ+Z3Orhf9qAR2anwV/QfQ4HIHpe5fuwAIEGMHsYa9ER5clE3n Zuk8fRyKZwJbvBKCrfDCaSyl5Wr/+XF19us6Y5DaQBx5r/7k1duSRzT7VggZkUH0QbMogwOGPxEnC kj2wDCQxl5LNnwe+pYZAeod+BGTV3UnbiMgctQ0B6T7bysRPURBKllMAzY3VeSjqeJP+gfVpUBJ1X FQbpQFQsC/TOeDH8jITdw0TVnZ7BcbzgNWV4CdyPFN3ZS1F6A0ErJ5duiv6oJgkgSz1NV2r94RZX9 UVyEqv2jYu2v4uFRQucA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIxx-006T1I-0M; Thu, 06 Apr 2023 06:19:25 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIxv-006Syz-0R for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:24 +0000 Received: by mail-pl1-x62d.google.com with SMTP id q2so536483pll.7 for ; Wed, 05 Apr 2023 23:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sty9Vva/GZquwXe+pkd6Nxrz8bwsIEDg04w2eW4GIY4=; b=PzZpfsU05I+yIXdyZ7fWa7xta9KGc9oRQ4jahd9ohMKKTIxrAVuyJ+ECtFOo3vY1AQ e3TQ+lyqEr9pk0e78nenNwDaq3HTgkxI04HFSoBzWYEOleTk/lZDsIQhTevS7Berac6M Gm+tUDuKncGHZhJfMFa/YD1XTrI2MuXaw7rvDxYVvnmnRxMFW3TPcK+N/MMNrjNDP8o1 2ide2uHM62MDMf9Wa1XxWCg0Oh4MbTN/YYI+SHyZH9a8ruZfnxWG690RZg82Os15UmIn j+ObSdTTP6GRoTd/KFj1SKP/J+DEQ3vPUDakq6pj8jW27V1XKH4XQZH8muA/HEtduaio NPBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sty9Vva/GZquwXe+pkd6Nxrz8bwsIEDg04w2eW4GIY4=; b=mn5rQe3ilYYP0zuhlznd0x3scoaZXgzgFV/ZFuEEaCFiwOvmNHfj4kYUEEymuvJF2x sVtJnrCxp+tfkJ80R6fyI9IenrhrKbY9giPNrFtyTxFhJscwSlWpwsN8VXVJJE6oW/Fp qVQy1CTZb0XBVaH+9ykg0xR8szCSeYSwmc/R9yvdg5B3akRALneNhuLj8dJHxN9OHJp3 zSERNFGwMXoB9AJbPcRe7XwFlns2Q5rqr0jeHA4pYZRD2zVoFcB+nVCSLJilSITyqkRh x7ecp22m+iUMMdLk5qyQTkrh41RUORZpstXum+NKUXuOdA4neqO8kyv7Es0S/MXIMqoV /o3w== X-Gm-Message-State: AAQBX9dEgPGGDG7fzM6LwtcXadybI1YZ1M3QJLk3Ce6Pr/BQ02HNIisx XUyv6iDFh5dYbdF8RRjJHAjXeUMbKOTDIA== X-Google-Smtp-Source: AKy350a5PmVYGieRzdbmwQIwu59hYwSdWrCJncTeD+IL3ETanYlqqZwNSr9YSJ0iVkF4Yhz+Rd9xVA== X-Received: by 2002:a05:6a20:c101:b0:de:5082:c9ec with SMTP id bh1-20020a056a20c10100b000de5082c9ecmr2101260pzb.2.1680761960242; Wed, 05 Apr 2023 23:19:20 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:19 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com Subject: [PATCH v3 1/8] mtd: spi-nor: spansion: Rename method to cypress_nor_get_page_size Date: Thu, 6 Apr 2023 15:18:52 +0900 Message-Id: <1dda9f6c85468e1af10b60d8be365efaf9c4f297.1680749577.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231923_173297_59D28DB6 X-CRM114-Status: GOOD ( 11.51 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Tudor Ambarus The method queries SPINOR_REG_CYPRESS_CFR3V to determine the page size. Rename the method accordingly, s/set/get. Signed-off-by: Tudor Ambarus --- drivers/mtd/spi-nor/spansion.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:62d listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Tudor Ambarus The method queries SPINOR_REG_CYPRESS_CFR3V to determine the page size. Rename the method accordingly, s/set/get. Signed-off-by: Tudor Ambarus --- drivers/mtd/spi-nor/spansion.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index ffeede78700d..c937f0ac61de 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -302,8 +302,7 @@ static int cypress_nor_set_addr_mode_nbytes(struct spi_nor *nor) } /** - * cypress_nor_set_page_size() - Set page size which corresponds to the flash - * configuration. + * cypress_nor_get_page_size() - Get flash page size configuration. * @nor: pointer to a 'struct spi_nor' * * The BFPT table advertises a 512B or 256B page size depending on part but the @@ -312,7 +311,7 @@ static int cypress_nor_set_addr_mode_nbytes(struct spi_nor *nor) * * Return: 0 on success, -errno otherwise. */ -static int cypress_nor_set_page_size(struct spi_nor *nor) +static int cypress_nor_get_page_size(struct spi_nor *nor) { struct spi_mem_op op = CYPRESS_NOR_RD_ANY_REG_OP(nor->params->addr_mode_nbytes, @@ -368,7 +367,7 @@ s25fs256t_post_bfpt_fixup(struct spi_nor *nor, if (nor->bouncebuf[0]) return -ENODEV; - return cypress_nor_set_page_size(nor); + return cypress_nor_get_page_size(nor); } static void s25fs256t_post_sfdp_fixup(struct spi_nor *nor) @@ -407,7 +406,7 @@ s25hx_t_post_bfpt_fixup(struct spi_nor *nor, /* Replace Quad Enable with volatile version */ nor->params->quad_enable = cypress_nor_quad_enable_volatile; - return cypress_nor_set_page_size(nor); + return cypress_nor_get_page_size(nor); } static void s25hx_t_post_sfdp_fixup(struct spi_nor *nor) @@ -502,7 +501,7 @@ static int s28hx_t_post_bfpt_fixup(struct spi_nor *nor, if (ret) return ret; - return cypress_nor_set_page_size(nor); + return cypress_nor_get_page_size(nor); } static void s28hx_t_late_init(struct spi_nor *nor) From patchwork Thu Apr 6 06:18:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765867 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=OWF7VQyg; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EDxYw/KV; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZ60ktFz1yYs for ; Thu, 6 Apr 2023 16:19:58 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ld1bkxfLMsvfPKoLy9St95h50l+PN93ar1iXiTU8274=; b=OWF7VQyg9kit+l DklXsKspdKjp/Sb4aK2k8jHIaLcYv8DpFcHVYWPzsU7dk3EmPeJhJrEXlD2PWm3FKIhBjj327n302 0iYFEFC/k5Qpn3WGZn5SyHVWWzB89MCjhQ5ZKxFU78YbBClrgMG9hBo2abdilh4hneeF0vKIMuvS4 UhA6R9v3V6iBPRb1/GM0y0RbZMtzUalSrQwjJCE4WeFOK4ytXOfOm1Ey6WwreujI61hakrj8qYQMD FQi41MD+9CvZ9XV8YsIKWGiPnUtweT1/uo0+Zhv9kmXX2HVdHbeeXiFgIkPWk1l9lpEz9Fe5cCy0Q 1sz4ueevwJMiMwmOmesQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIy2-006T3J-2g; Thu, 06 Apr 2023 06:19:30 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIxz-006T1P-2L for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:29 +0000 Received: by mail-pl1-x62c.google.com with SMTP id kq3so36604269plb.13 for ; Wed, 05 Apr 2023 23:19:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761965; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yBHyCJOU/UP6+q56hd9fFYGkU8/9335UL5tR847cfdc=; b=EDxYw/KVyyA8VU1ezWKoL9EbLtYU1SIK9feVbZE9+aNE4O4J/T72KSmkzgBDZNw3WI LgMSkkNpiEQbcVfSM/2J9tRvxhB1Mp/qKBhj40DoGk95tNET3e77FlWX+kscIJjXD1FB 6kiyqLh1y8HBFiX8SG/Mck4JFHYW3EdoZJmT3z6uLGzCdSEVyhAMf761gkMXXAQmejmt we8xcW3VNCtCaDBioDgaAcoubZBf0GDGAAT7GTmIIfZbc/Db7YnTukXSIOu2Ji5B/Yxf sGyUW4eL9+tvZfHei2ioOtZR/a1grk91XXhz7/XrzNH3qA0VRhVmKx5KhleOPaj04nsJ k6NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761965; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yBHyCJOU/UP6+q56hd9fFYGkU8/9335UL5tR847cfdc=; b=gnUKlIubVopfiIioRwrTtIkT4dvImS46BLLuB+5rP43OZBE8RxQ3jwIxoSB1Sni2V3 wfnJczi7IuTVRAYOdcLKeM1/WeArXnjMOvX82d+C0185waGCQTnASoCLD8fxmxvOEKbf 0zFrudSVkhCVGEv32vviIGCUNszUj5vCObl5Iw7Hhti3dV72BAoPmo6sbGLwNmjmuiMz P2EigUACZrafR498IXJO+HSjaR2O1TxJhcar2Fp7VALpq3S9+p3hp4lOEBzWptY+T6zD DK40Pq2zJGC6kTNIzegk0PE3tM8RzD4vfPvCAfkT4FcORPi6wG/RLZfrhC1qjxAx75vk iWxg== X-Gm-Message-State: AAQBX9cXMiYzFT2zPi906Z8oyIPHZQTrE6vCsYJMtwEtt9gZC60t+wK2 Rzvw4nb3ekKlLQnrckW0oDO71Lz6JFdFMA== X-Google-Smtp-Source: AKy350ZEONqm7R/TyHDfje/d16ILIMICKv/zNh9sCq3xJSoRyOrVkgNlYL1iCDS8s94eYGzDtLybyA== X-Received: by 2002:a05:6a20:4b21:b0:d9:a38d:3ec7 with SMTP id fp33-20020a056a204b2100b000d9a38d3ec7mr1860245pzb.29.1680761964741; Wed, 05 Apr 2023 23:19:24 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:24 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com Subject: [PATCH v3 2/8] mtd: spi-nor: Allow post_sfdp hook to return errors Date: Thu, 6 Apr 2023 15:18:53 +0900 Message-Id: <2b3469ef124ca85ce3f779291951abdc15ae7462.1680749577.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231927_766429_D6B18547 X-CRM114-Status: GOOD ( 16.52 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Tudor Ambarus Multi die flashes like s25hl02gt need to determine the page_size at run-time by querying a configuration register for each die. Since the number of dice is determined in an optional SFDP table, SCCR M [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:62c listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Tudor Ambarus Multi die flashes like s25hl02gt need to determine the page_size at run-time by querying a configuration register for each die. Since the number of dice is determined in an optional SFDP table, SCCR MC, the page size configuration must be done in the post_sfdp hook. Allow post_sfdp to return errors, as reading the configuration register might return errors. Signed-off-by: Tudor Ambarus --- drivers/mtd/spi-nor/core.h | 2 +- drivers/mtd/spi-nor/micron-st.c | 4 +++- drivers/mtd/spi-nor/sfdp.c | 17 ++++++++++++----- drivers/mtd/spi-nor/spansion.c | 12 +++++++++--- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index 8cfa82ed06c7..a9e5e091547d 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -426,7 +426,7 @@ struct spi_nor_fixups { int (*post_bfpt)(struct spi_nor *nor, const struct sfdp_parameter_header *bfpt_header, const struct sfdp_bfpt *bfpt); - void (*post_sfdp)(struct spi_nor *nor); + int (*post_sfdp)(struct spi_nor *nor); void (*late_init)(struct spi_nor *nor); }; diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c index a6f080112a51..4b919756a205 100644 --- a/drivers/mtd/spi-nor/micron-st.c +++ b/drivers/mtd/spi-nor/micron-st.c @@ -131,7 +131,7 @@ static void mt35xu512aba_default_init(struct spi_nor *nor) nor->params->octal_dtr_enable = micron_st_nor_octal_dtr_enable; } -static void mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor) +static int mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor) { /* Set the Fast Read settings. */ nor->params->hwcaps.mask |= SNOR_HWCAPS_READ_8_8_8_DTR; @@ -149,6 +149,8 @@ static void mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor) * disable it. */ nor->params->quad_enable = NULL; + + return 0; } static const struct spi_nor_fixups mt35xu512aba_fixups = { diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c index 69e47c9778a2..e184b67f3c9f 100644 --- a/drivers/mtd/spi-nor/sfdp.c +++ b/drivers/mtd/spi-nor/sfdp.c @@ -1260,14 +1260,21 @@ static int spi_nor_parse_sccr(struct spi_nor *nor, * Used to tweak various flash parameters when information provided by the SFDP * tables are wrong. */ -static void spi_nor_post_sfdp_fixups(struct spi_nor *nor) +static int spi_nor_post_sfdp_fixups(struct spi_nor *nor) { + int ret; + if (nor->manufacturer && nor->manufacturer->fixups && - nor->manufacturer->fixups->post_sfdp) - nor->manufacturer->fixups->post_sfdp(nor); + nor->manufacturer->fixups->post_sfdp) { + ret = nor->manufacturer->fixups->post_sfdp(nor); + if (ret) + return ret; + } if (nor->info->fixups && nor->info->fixups->post_sfdp) - nor->info->fixups->post_sfdp(nor); + return nor->info->fixups->post_sfdp(nor); + + return 0; } /** @@ -1477,7 +1484,7 @@ int spi_nor_parse_sfdp(struct spi_nor *nor) } } - spi_nor_post_sfdp_fixups(nor); + err = spi_nor_post_sfdp_fixups(nor); exit: kfree(param_headers); return err; diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index c937f0ac61de..519fdad79a19 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -370,7 +370,7 @@ s25fs256t_post_bfpt_fixup(struct spi_nor *nor, return cypress_nor_get_page_size(nor); } -static void s25fs256t_post_sfdp_fixup(struct spi_nor *nor) +static int s25fs256t_post_sfdp_fixup(struct spi_nor *nor) { struct spi_nor_flash_parameter *params = nor->params; @@ -379,6 +379,8 @@ static void s25fs256t_post_sfdp_fixup(struct spi_nor *nor) spi_nor_set_pp_settings(¶ms->page_programs[SNOR_CMD_PP_1_1_4], SPINOR_OP_PP_1_1_4_4B, SNOR_PROTO_1_1_4); + + return 0; } static void s25fs256t_late_init(struct spi_nor *nor) @@ -409,7 +411,7 @@ s25hx_t_post_bfpt_fixup(struct spi_nor *nor, return cypress_nor_get_page_size(nor); } -static void s25hx_t_post_sfdp_fixup(struct spi_nor *nor) +static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor) { struct spi_nor_erase_type *erase_type = nor->params->erase_map.erase_type; @@ -431,6 +433,8 @@ static void s25hx_t_post_sfdp_fixup(struct spi_nor *nor) break; } } + + return 0; } static void s25hx_t_late_init(struct spi_nor *nor) @@ -463,7 +467,7 @@ static int cypress_nor_octal_dtr_enable(struct spi_nor *nor, bool enable) cypress_nor_octal_dtr_dis(nor); } -static void s28hx_t_post_sfdp_fixup(struct spi_nor *nor) +static int s28hx_t_post_sfdp_fixup(struct spi_nor *nor) { /* * On older versions of the flash the xSPI Profile 1.0 table has the @@ -489,6 +493,8 @@ static void s28hx_t_post_sfdp_fixup(struct spi_nor *nor) * actual value for that is 4. */ nor->params->rdsr_addr_nbytes = 4; + + return 0; } static int s28hx_t_post_bfpt_fixup(struct spi_nor *nor, From patchwork Thu Apr 6 06:18:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765869 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=oIHKpNhL; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=p03/t9cA; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZC50lMz1yZT for ; Thu, 6 Apr 2023 16:20:03 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hgtbFElMO95wHWMRlo/FYQqLcsj5dU+lzK+RXqmRYFU=; b=oIHKpNhLawTQPF fIXxviaf8PlR2YUE7YIqYqnzlXkJsA0RVZTxyQSrIwHCWnTCQOm0Txo+8XQ0bJ+gYo4BLUG8L4SR1 TAkTxFaT3mRfn+KoldiLwfS3BQ3JuluaxhSd3bCijmpN6XO9pmHOxUjMBCMrkbKXeprfno4rT+kue oIXn3vMjQhVMTma0cDvrwjjdIpFCXiT9xo5cIZ/uONv0jEcs89QQ6KXccjYfi3n0546ug1hpZvvOi e/Zn+PgrsmXaSaym49TFhb5z8XdWEQXeweU7ayuBswxK/ONOwd4yaPahm8Q6IhvPwkyMhVICuf5dn P6ixrCnM/3p3zb/EzuSg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIy7-006T5q-1j; Thu, 06 Apr 2023 06:19:35 +0000 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIy4-006T33-1N for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:33 +0000 Received: by mail-pg1-x52d.google.com with SMTP id h31so23148434pgl.6 for ; Wed, 05 Apr 2023 23:19:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761969; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=un0jH+BvXUy8JZS2TFdi6Y5/mRYagcdDM2S4IrcnSzA=; b=p03/t9cAz/lkiGNVmkh1Fn7LBHdOG3dMneGhGPcPKyMfLMuCJTkktKtX9GeAb6fiuG eyDC9su2XnvY5zSxuaDVHYKYZf/YR7H4fjMkWvyB01WvUSnFBCCDII0970vREkA2Oi6W z+b9NXg6gRUpo6iscUrqhKAoB1b+2P05PHOXSV0n7l3N4l8j/hPjrYALnuO7NpP9JUnZ JP4S3+P3HMwNAsQ+EO3V15wNAINtJpPyhd0PsagzBQUfcMnf/OiPdN+SsgE8jhOlv1Vb YHeRVFXUmb1Hg5EEQNJwVtzyaQVuU3QNXOgAyT6GZX2aEfkLML/tx0ICUCpo1NjJ4GD8 v6pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761969; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=un0jH+BvXUy8JZS2TFdi6Y5/mRYagcdDM2S4IrcnSzA=; b=2D+rMUpd/I96lE/orzEjLwapoFNI4lvlkVQLaP7fN2Wgu5o7M1U/TeKgMzHEzMsx57 gFuBny5nXPK0kI+be9byEYNwJnniFxOoQru2qn2bDiisURfWW+DHVVDpmzBZojgkFR1c N8N49si4oTZFzathkhG4cFOt56aIQJZUwzz7FxpH2I2ONZxDHYA8/RU4OuB0d5lXg+Sn 1VMQkgOPyGx+VXDubthC6AvoA2cYyyzz3hkYbsDZGBNqWJsOsDCpUkGImte89FSdpvSG AkwBxsbac2602AWlMQ165JvR99oxtm58Bo7iIJtaExZqL9lRpCdGIe1kZPqkAyIHyywe bYtg== X-Gm-Message-State: AAQBX9dfEoHvmYr13hofPaMzGHoQtQDPZpVp1ocfqogWz3H15XT/L2Dx Nb3It+4sZRlHjLV6hMsMPl8s23MJa2jFwA== X-Google-Smtp-Source: AKy350b+UKL7QoNMTvfU7rAW2aFEtFkn7+X7GJucXP6ZlZoQ/vUR+SVqGw55LuhiPnCfCwI67xuBBw== X-Received: by 2002:a05:6a00:c91:b0:626:f690:e745 with SMTP id a17-20020a056a000c9100b00626f690e745mr6189504pfv.6.1680761969431; Wed, 05 Apr 2023 23:19:29 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:29 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 3/8] mtd: spi-nor: Extract volatile register offset from SCCR map Date: Thu, 6 Apr 2023 15:18:54 +0900 Message-Id: <3bf652eb87759e75503afa9ef713586abfc31736.1680749577.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231932_461686_23C5092F X-CRM114-Status: GOOD ( 14.96 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano In use of multi-chip devices, we need to access registers in each die for configuration and status check. The number of dice in the device and volatile register offsets for each die are essential to i [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:52d listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano In use of multi-chip devices, we need to access registers in each die for configuration and status check. The number of dice in the device and volatile register offsets for each die are essential to iterate register access ops. The volatile register offset for the first die resides in the 1st DWORD of SCCR map. Allocate the table and copy the offset value. The table may be allocated when the SCCR map for multi-chip is parsed. Since we cannot assume SCCR parse is always in ahead of SCCR multi-chip, we need to check if the table is already allocated or not. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/core.h | 4 ++++ drivers/mtd/spi-nor/sfdp.c | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index a9e5e091547d..fd61c4793a10 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -352,6 +352,8 @@ struct spi_nor_otp { * in octal DTR mode. * @rdsr_addr_nbytes: dummy address bytes needed for Read Status Register * command in octal DTR mode. + * @n_dice: number of dice in the flash memory. + * @vreg_offset: volatile register offset for each die. * @hwcaps: describes the read and page program hardware * capabilities. * @reads: read capabilities ordered by priority: the higher index @@ -385,6 +387,8 @@ struct spi_nor_flash_parameter { u8 addr_mode_nbytes; u8 rdsr_dummy; u8 rdsr_addr_nbytes; + u8 n_dice; + u32 *vreg_offset; struct spi_nor_hwcaps hwcaps; struct spi_nor_read_command reads[SNOR_CMD_READ_MAX]; diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c index e184b67f3c9f..9d43e18d3770 100644 --- a/drivers/mtd/spi-nor/sfdp.c +++ b/drivers/mtd/spi-nor/sfdp.c @@ -1226,6 +1226,7 @@ static int spi_nor_parse_profile1(struct spi_nor *nor, static int spi_nor_parse_sccr(struct spi_nor *nor, const struct sfdp_parameter_header *sccr_header) { + struct spi_nor_flash_parameter *params = nor->params; u32 *dwords, addr; size_t len; int ret; @@ -1242,6 +1243,18 @@ static int spi_nor_parse_sccr(struct spi_nor *nor, le32_to_cpu_array(dwords, sccr_header->length); + /* Address offset for volatile registers (die 0) */ + if (!params->vreg_offset) { + params->vreg_offset = devm_kmalloc(nor->dev, sizeof(*dwords), + GFP_KERNEL); + if (!params->vreg_offset) { + ret = -ENOMEM; + goto out; + } + } + params->vreg_offset[0] = dwords[SFDP_DWORD(1)]; + params->n_dice = 1; + if (FIELD_GET(SCCR_DWORD22_OCTAL_DTR_EN_VOLATILE, dwords[SFDP_DWORD(22)])) nor->flags |= SNOR_F_IO_MODE_EN_VOLATILE; From patchwork Thu Apr 6 06:18:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765907 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=r3Erp49w; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=dK7WMfOw; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsYBh6HZwz1yY8 for ; Thu, 6 Apr 2023 17:33:16 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ZOPYeFL1qPk03hiVYCuYJPqQ1gwJm38I+b+OG3qH+mM=; b=r3Erp49wnh7QJs sH71bkhBm3hJ+uUwpMKVqS3HPQuDszPp3pFUisQ/tF1BoRB65VN56U/DW4ZGRMRPCbLg8sPu3ObTW 8gjF56GH4L1Xxe/Exo2Wt87Cw5iLdxqAovqp2ImYeqGMmBP16vmA1Ave1X1h2kjf+Rp11GYbsNncM V3ClnEAR/fGkwPDmfjJqYIV15bEIqxJ03DW1WOPpPP4XOA0s9vQBrfVeuZiOgPWqIl3GDKmCvqqlU +4s2lAeGpLWY95mTe9EI2DK4IHM3vvVlHykVhg1oEBgIRfvk5e2yK2/Y6NuhLPaWZG8wA2u/xHF1m 8RY/G2U9lBVoajJe6R1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkK6n-006dX1-2G; Thu, 06 Apr 2023 07:32:37 +0000 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIy9-006T5c-1G for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:40 +0000 Received: by mail-pf1-x435.google.com with SMTP id q20so13967101pfs.2 for ; Wed, 05 Apr 2023 23:19:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761974; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oSP3he235YJq+sebkYxRm/FPH06fgXP7LoGZfMYU9z0=; b=dK7WMfOwD/Ws1ShwtnMKsOqkfQmtyFzz/w7xq5Imd2bhA/50H0A7//HThofQIavf5u xKZeVsSQ8RdNG75/KioWwPnkcva3h/6cW4vGHuXQYYVRN8D0WP4Bm199BzH/ZwBgimif A5mMa8axs6QHoHpzmPQI++DGvWKbxd6TtcdEFkZomxWphUKtwyJtCJcadUG91R3gvw8c Aa/oKVKfQhQi3ZsrCnxx1iwrMANLh+IdAGqwC+sakqNXRbcx1oPH3qFxPbmXbOLJus9c Xe/RSre3sBy8JaC+QNlLBs3RbznKNMLh+4f406t3WrxeGmQ7SXU1Q9LAqwypAih3cKD7 Rd0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761974; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oSP3he235YJq+sebkYxRm/FPH06fgXP7LoGZfMYU9z0=; b=UxYTe/FtwwEt7a9LLFbK1TjbJzNWZdjVYyb3U2HTqiV5z5/lBtfwFNt9oU70r5Na3S QZ456OnfJPRP8lLXtqLoaiEobLO/96dHz0dvnsmizYEZSE02dkxYPDvAPF8OVGvKDDAh 2BWmRqUYhbIM+eBpPX2jt03uabMyBo4Y+kezVfQWcMmftp6GV8cLlz7lTHTSSiv0slGh 0qNWzSrVgp78LL633YmEru8gEsirh+F+ZOS27UV9S7Z8BzAK8vHEwn+qnsX9CGMLJbRJ m3f+GCdDWjDIPc+3f8y9mNPseOCiulb7f8IcInfzDkNJbcKKJ51soBXDW3WvhFH8+9D8 0VTg== X-Gm-Message-State: AAQBX9fajKrG9YESx8cuJ7cZpS/Janydmq6JbmiCsoRL3YmKGgkKsDKY xLo7RbGDCGWQtrNp9lgb/HMw4M6hkrICSg== X-Google-Smtp-Source: AKy350aTipPoOBW87vZd+xBXbeoJ0yOxvDx71criMrHisXLHooVKS3xJvEGJ3NsQFrGxIUeqO+5ULA== X-Received: by 2002:a62:1bc3:0:b0:61d:e10f:4e70 with SMTP id b186-20020a621bc3000000b0061de10f4e70mr7795400pfb.0.1680761974297; Wed, 05 Apr 2023 23:19:34 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:34 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 4/8] mtd: spi-nor: sfdp: Add support for SCCR map for multi-chip device Date: Thu, 6 Apr 2023 15:18:55 +0900 Message-Id: <89b7eb9508b28a48c4d0a8b1ef46983202a0d360.1680749578.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231937_428586_0D42C5A4 X-CRM114-Status: GOOD ( 16.60 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano SCCR map for multi-chip devices contains the number of additional dice in the device and register offset values for each additional dice. spi_nor_parse_sccr_mc() is added to determine the number of dice and volatile register offset for each die. The volatile register offset table may already be allocated and contains offset value for di [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:435 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano SCCR map for multi-chip devices contains the number of additional dice in the device and register offset values for each additional dice. spi_nor_parse_sccr_mc() is added to determine the number of dice and volatile register offset for each die. The volatile register offset table may already be allocated and contains offset value for die-0 via SCCR map parse. So, we should use devm_krealloc() to expand the table with preserving die-0 offset. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/sfdp.c | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c index 9d43e18d3770..00a40bd8aa1e 100644 --- a/drivers/mtd/spi-nor/sfdp.c +++ b/drivers/mtd/spi-nor/sfdp.c @@ -26,6 +26,11 @@ * Status, Control and Configuration * Register Map. */ +#define SFDP_SCCR_MAP_MC_ID 0xff88 /* + * Status, Control and Configuration + * Register Map Offsets for Multi-Chip + * SPI Memory Devices. + */ #define SFDP_SIGNATURE 0x50444653U @@ -1264,6 +1269,70 @@ static int spi_nor_parse_sccr(struct spi_nor *nor, return ret; } +#define SCCR_MC_MAX_DICE 255 + +/** + * spi_nor_parse_sccr_mc() - Parse the Status, Control and Configuration + * Register Map Offsets for Multi-Chip SPI Memory + * Devices. + * @nor: pointer to a 'struct spi_nor' + * @sccr_mc_header: pointer to the 'struct sfdp_parameter_header' describing + * the SCCR Map offsets table length and version. + * + * Return: 0 on success, -errno otherwise. + */ +static int spi_nor_parse_sccr_mc(struct spi_nor *nor, + const struct sfdp_parameter_header *sccr_mc_header) +{ + struct spi_nor_flash_parameter *params = nor->params; + u32 *dwords, addr; + u8 i, n_dice; + size_t len; + int ret; + + len = sccr_mc_header->length * sizeof(*dwords); + dwords = kmalloc(len, GFP_KERNEL); + if (!dwords) + return -ENOMEM; + + addr = SFDP_PARAM_HEADER_PTP(sccr_mc_header); + ret = spi_nor_read_sfdp(nor, addr, len, dwords); + if (ret) + goto out; + + le32_to_cpu_array(dwords, sccr_mc_header->length); + + /* + * Pair of DOWRDs (volatile and non-volatile register offsets) per + * additional die. Hence, length = 2 * (number of additional dice). + */ + n_dice = 1 + sccr_mc_header->length / 2; + if (params->n_dice > SCCR_MC_MAX_DICE) { + dev_dbg(nor->dev, "Improbable number of dice defined in SCCR MC table, use one die.\n"); + ret = -EINVAL; + goto out; + } + + /* Address offset for volatile registers of additional dice */ + params->vreg_offset = + devm_krealloc(nor->dev, params->vreg_offset, + n_dice * sizeof(*dwords), + GFP_KERNEL); + if (!params->vreg_offset) { + ret = -ENOMEM; + goto out; + } + + for (i = 1; i < n_dice; i++) + params->vreg_offset[i] = dwords[SFDP_DWORD(i) * 2]; + + params->n_dice = n_dice; + +out: + kfree(dwords); + return ret; +} + /** * spi_nor_post_sfdp_fixups() - Updates the flash's parameters and settings * after SFDP has been parsed. Called only for flashes that define JESD216 SFDP @@ -1480,6 +1549,10 @@ int spi_nor_parse_sfdp(struct spi_nor *nor) err = spi_nor_parse_sccr(nor, param_header); break; + case SFDP_SCCR_MAP_MC_ID: + err = spi_nor_parse_sccr_mc(nor, param_header); + break; + default: break; } From patchwork Thu Apr 6 06:18:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765870 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=4o1CsZ6Z; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=EumRptPJ; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZN1lkYz1yZF for ; Thu, 6 Apr 2023 16:20:12 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=D/DpWLxO13oTVmFVZwZWPZu7zpUFjoEDo6lGSm5udNY=; b=4o1CsZ6Z3QdPN/ Dz4K510TMAbz6nYhE+GvgKGyUry6USZy/ZZPLupDvLSnn3IJkOdj8axIHJ8fkjKGiexE0VJNVmkZp I9y82RZMBuDkuOd4dT6BLQJ/R30UhTDsDnZ2B59QiNCCN7MebO8EY6o1NB4yP6aXdvfGk8cJh6fq2 LM5SPCypyeh+lJRlCK8Ot0w9EejJ8+EzxtTFZn9LQalgXbzt/w8Rb59856pP9fEMm42cpWt+jGOjS 2yqo0bZEFKOGUwZOlCtIxTyDUKHR8OpH7R0sWB3wyAscky8hhf8fFwfeni+q3wJIIqiGK4O9iSboT H9e84ajCQmRdzJA+K/gQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyG-006TAN-2u; Thu, 06 Apr 2023 06:19:44 +0000 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyC-006T7k-31 for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:42 +0000 Received: by mail-pg1-x52b.google.com with SMTP id y35so23151358pgl.4 for ; Wed, 05 Apr 2023 23:19:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761979; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XnSHTFD4uRsM0lzl57imWTCj74kIJT04d5SDVOL0sCs=; b=EumRptPJRe9xReY3mj1AWM+1PHVl3dKewHjCw/gBWtHnEM0Kmc28fqF6slAL2Z20kw URKZNLC6GPosXU7WNV6bN0gmjmeYzcgJNsU4uCiz2sPdhfzl4W56he9BFa5UwmQ73HSI vlURM9ByETvcyAWi3od3qkjyv7mClS0nkZfJNhC5cVdrp9XIKILmbkah68yLtwK+wIUc LbFrJ1jNhOJ+PkQLHPuyRfZJFC4ehVlH7ol6gqpz6DeP940EYuk03IN02lnWchKE9gqU q2+ou9DjPD8ez6+DlO3fJ4h0rg68CpfIPfU7BYqc4i1JYrkuBLRgAH2XsvCc+YKqy/Km AINQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761979; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XnSHTFD4uRsM0lzl57imWTCj74kIJT04d5SDVOL0sCs=; b=CwyHPGX7BW5WZH3cuJcevRQXECUo39Nm1prB6UqBd2gJUvhvCQTOypKtFZbLCin7lh lZet+Lo8OpE93HJQcsJNN9+ZLL7R9k3wj26UGFJa2qXXjEeQtBNnG6YXJBtzh4sXsoUs 5wFEmSjdwD7IYNFnba30J18se8zrUIBUrm2nEoaApzK+DNGIwzddDFQKcM14pfyIYv8D wlOzw0+SYLOmOGmhFS8d7wgdkWPUkbBndVpOx+myWYrMUs1dQuMBe8joQ5JsJf+UbkFZ F7DxWZNusw3v9xTweSiHnY5sgNegXcw+i3s8bt4XvLPOBBH+06TK7ir5ks1uCJElIJWJ kVeQ== X-Gm-Message-State: AAQBX9du4fdIIGWwF/jBqRy2C54dOM73mZzmajGQueDbORkwnTqEdW52 2q6C3IeWB6NNtmt/NQb7Mon0f1sWgzNY/Q== X-Google-Smtp-Source: AKy350bnt7F3otUAQKLC/CL8VDh63okVPL9Yd1sQhuJt/451q23GS+MGT9O9AYNHtPwMAxvMECs5SA== X-Received: by 2002:aa7:9793:0:b0:5a8:8535:18b with SMTP id o19-20020aa79793000000b005a88535018bmr7678308pfp.11.1680761979153; Wed, 05 Apr 2023 23:19:39 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:38 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 5/8] mtd: spi-nor: spansion: Rework cypress_nor_get_page_size() for multi-chip device support Date: Thu, 6 Apr 2023 15:18:56 +0900 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231940_981654_E46A3570 X-CRM114-Status: GOOD ( 20.12 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano For multi-chip devices, we can use 512B page only when the all dice are configured as 512B page size. The volatile register address is calculated by using the volatile register addresses retrieved fro [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:52b listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano For multi-chip devices, we can use 512B page only when the all dice are configured as 512B page size. The volatile register address is calculated by using the volatile register addresses retrieved from the SCCR tables and the (configuration) register offset. The location of cypress_nor_set_page_size() call is moved from post_bfpt_fixup() to post_sfdp_fixup(), because the number of dice and volatile register offset are parsed in the optional SCCR tables. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 89 ++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 20 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index 519fdad79a19..5e021e20497b 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -14,15 +14,26 @@ #define SPINOR_OP_CLSR 0x30 /* Clear status register 1 */ #define SPINOR_OP_RD_ANY_REG 0x65 /* Read any register */ #define SPINOR_OP_WR_ANY_REG 0x71 /* Write any register */ -#define SPINOR_REG_CYPRESS_STR1V 0x00800000 -#define SPINOR_REG_CYPRESS_CFR1V 0x00800002 +#define SPINOR_REG_CYPRESS_VREG 0x00800000 +#define SPINOR_REG_CYPRESS_STR1 0x0 +#define SPINOR_REG_CYPRESS_STR1V \ + (SPINOR_REG_CYPRESS_VREG + SPINOR_REG_CYPRESS_STR1) +#define SPINOR_REG_CYPRESS_CFR1 0x2 +#define SPINOR_REG_CYPRESS_CFR1V \ + (SPINOR_REG_CYPRESS_VREG + SPINOR_REG_CYPRESS_CFR1) #define SPINOR_REG_CYPRESS_CFR1_QUAD_EN BIT(1) /* Quad Enable */ -#define SPINOR_REG_CYPRESS_CFR2V 0x00800003 +#define SPINOR_REG_CYPRESS_CFR2 0x3 +#define SPINOR_REG_CYPRESS_CFR2V \ + (SPINOR_REG_CYPRESS_VREG + SPINOR_REG_CYPRESS_CFR2) #define SPINOR_REG_CYPRESS_CFR2_MEMLAT_11_24 0xb #define SPINOR_REG_CYPRESS_CFR2_ADRBYT BIT(7) -#define SPINOR_REG_CYPRESS_CFR3V 0x00800004 +#define SPINOR_REG_CYPRESS_CFR3 0x4 +#define SPINOR_REG_CYPRESS_CFR3V \ + (SPINOR_REG_CYPRESS_VREG + SPINOR_REG_CYPRESS_CFR3) #define SPINOR_REG_CYPRESS_CFR3_PGSZ BIT(4) /* Page size. */ -#define SPINOR_REG_CYPRESS_CFR5V 0x00800006 +#define SPINOR_REG_CYPRESS_CFR5 0x6 +#define SPINOR_REG_CYPRESS_CFR5V \ + (SPINOR_REG_CYPRESS_VREG + SPINOR_REG_CYPRESS_CFR5) #define SPINOR_REG_CYPRESS_CFR5_BIT6 BIT(6) #define SPINOR_REG_CYPRESS_CFR5_DDR BIT(1) #define SPINOR_REG_CYPRESS_CFR5_OPI BIT(0) @@ -301,17 +312,7 @@ static int cypress_nor_set_addr_mode_nbytes(struct spi_nor *nor) return 0; } -/** - * cypress_nor_get_page_size() - Get flash page size configuration. - * @nor: pointer to a 'struct spi_nor' - * - * The BFPT table advertises a 512B or 256B page size depending on part but the - * page size is actually configurable (with the default being 256B). Read from - * CFR3V[4] and set the correct size. - * - * Return: 0 on success, -errno otherwise. - */ -static int cypress_nor_get_page_size(struct spi_nor *nor) +static int cypress_nor_get_page_size_single_chip(struct spi_nor *nor) { struct spi_mem_op op = CYPRESS_NOR_RD_ANY_REG_OP(nor->params->addr_mode_nbytes, @@ -331,6 +332,54 @@ static int cypress_nor_get_page_size(struct spi_nor *nor) return 0; } + +static int cypress_nor_get_page_size_mcp(struct spi_nor *nor) +{ + struct spi_mem_op op = + CYPRESS_NOR_RD_ANY_REG_OP(nor->params->addr_mode_nbytes, + 0, 0, nor->bouncebuf); + struct spi_nor_flash_parameter *params = nor->params; + int ret; + u8 i; + + /* + * Use the minimum common page size configuration. Programming 256-byte + * under 512-byte page size configuration is safe. + */ + params->page_size = 256; + for (i = 0; i < params->n_dice; i++) { + op.addr.val = params->vreg_offset[i] + SPINOR_REG_CYPRESS_CFR3; + + ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + if (!(nor->bouncebuf[0] & SPINOR_REG_CYPRESS_CFR3_PGSZ)) + return 0; + } + + params->page_size = 512; + + return 0; +} + +/** + * cypress_nor_get_page_size() - Get flash page size configuration. + * @nor: pointer to a 'struct spi_nor' + * + * The BFPT table advertises a 512B or 256B page size depending on part but the + * page size is actually configurable (with the default being 256B). Read from + * CFR3V[4] and set the correct size. + * + * Return: 0 on success, -errno otherwise. + */ +static int cypress_nor_get_page_size(struct spi_nor *nor) +{ + if (nor->params->n_dice) + return cypress_nor_get_page_size_mcp(nor); + return cypress_nor_get_page_size_single_chip(nor); +} + static void cypress_nor_ecc_init(struct spi_nor *nor) { /* @@ -408,7 +457,7 @@ s25hx_t_post_bfpt_fixup(struct spi_nor *nor, /* Replace Quad Enable with volatile version */ nor->params->quad_enable = cypress_nor_quad_enable_volatile; - return cypress_nor_get_page_size(nor); + return 0; } static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor) @@ -434,7 +483,7 @@ static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor) } } - return 0; + return cypress_nor_get_page_size(nor); } static void s25hx_t_late_init(struct spi_nor *nor) @@ -494,7 +543,7 @@ static int s28hx_t_post_sfdp_fixup(struct spi_nor *nor) */ nor->params->rdsr_addr_nbytes = 4; - return 0; + return cypress_nor_get_page_size(nor); } static int s28hx_t_post_bfpt_fixup(struct spi_nor *nor, @@ -507,7 +556,7 @@ static int s28hx_t_post_bfpt_fixup(struct spi_nor *nor, if (ret) return ret; - return cypress_nor_get_page_size(nor); + return 0; } static void s28hx_t_late_init(struct spi_nor *nor) From patchwork Thu Apr 6 06:18:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765884 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=FlqhHC25; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=desiato.20200630 header.b=dm/h/SXA; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=Sghkqw9v; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsX8N2Rdbz1yZF for ; Thu, 6 Apr 2023 16:46:12 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7FUWdRwSusR4Me4CSCs4U5lM+7ildSrvTJL2Gct6SEw=; b=FlqhHC25L0HPKY x1HIHenQWcFDd9hlJyh2no2YDUnTSnNMj5tjQyfssV0ngY1HFJIeQ9ozq48rOmTptwRsFxLOL4J0o Hp218UK+nQHyr5S/Aevr3AcfnWAPAQewjKEVsRCTaO4wdMqwvw3dMnkp5sR5bptlArh9BqvGHBVeZ yT5gCFz6S/fFJJ7VqYJsXDxEJl1no5X9a+uSFWba9p6ekBxGDOfpyOv1IXd9O+CYzAPHpUun1N7Ks pDKRmNfdTMVAeFx/wh5Cj8IM3IbEsChyoZx4lCEIvgx6/RDIQYfpsuG4x0v44srNGzrTNI/q6QP4L /ZlShxaP04FRN1KgJXFA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkJN9-006WZx-12; Thu, 06 Apr 2023 06:45:27 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkJN8-006WZj-0N for linux-mtd@bombadil.infradead.org; Thu, 06 Apr 2023 06:45:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=6WsaAzMK7NsfVaQbDoNPOvf2AK+4muKRB7TYhUL83ko=; b=dm/h/SXAi4maQDKlfjjUcX9U3u AovtL0eI5HW3VgQ1oBxvgrY+60jxcj5eE+FaFt/orf4xghfKAgSRFTJuspS1zh3TU3lcQH0lpylmX gUq9vGXDOU8YTtJ+TkNVP+geRidCT+Av4y1U+OosZ0k3O+nbUELWNi4xgTP13zN8metvCakxAhddI /wIeDiYDOmIoBLMZhOeJrLk/OFVl+DBp+C+CRCp8fCdCVMKEtpYF6sqnFLf/sJ7Goq1aR7GzgI92E LMosFiQJJ6St6BK0xw1x/0kO/15fch/dma5jlYg6NIhROlW112bsq4pVptWCoGIMuGu93zIiALI2J jEm28kuQ==; Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by desiato.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyL-00ARK0-1R for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:52 +0000 Received: by mail-pj1-x1033.google.com with SMTP id om3-20020a17090b3a8300b0023efab0e3bfso41916393pjb.3 for ; Wed, 05 Apr 2023 23:19:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6WsaAzMK7NsfVaQbDoNPOvf2AK+4muKRB7TYhUL83ko=; b=Sghkqw9vEDGT8GmdBHwNcLbJb/szTywUqRYSQAQZtqg17Ny3YoxTh5bMLMqBTXBR7Q UjUG+dW2PhQZ73KgZLR6HA14x/3X0PvPOmc2MV4tTMWSXr2OKFjxrOY/+z2s5Dht2kbS 9X9FV/wjFaFi0tqEb/QTumeXhYmIcvRqPrCjtnI6EjvhRD1CccOyjAwRq3C12OAOnmKr gecV8e9ZPF3gmb2bo4DVKqRonmMPj9xKQqizzhnhhXCKia5I4uvP1J2srscpNs6WXYi7 dG4kJUwmJZ21mcCsUoQ6MGPO3KgnP2y6p2hec0rVuCX81l+ATouhn4Hc8SiKdQtmm2iK S8Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6WsaAzMK7NsfVaQbDoNPOvf2AK+4muKRB7TYhUL83ko=; b=kWq03iLc8QLZGHxKQIkEzWS46gjtI1qqIdyGCXpHkUURhQCW/NHMgmdw6m5Z/JQqnM H7U9fR0GpGVIZrED/sPCgRTgh0nG9ouOrIWcFdlD/bOLsO/jZ9u+WvEuBf3DMT5HRQcH L0xyLzCVlauTIb9B/BJhDb0TL0Eirkuiv8B0dj0t7rbYUwww/TSlNh/X3+MFV1QqJRhf c/R5K3bNyvevS1Xng0rdPqPCFlttUuAvjLrUpAUyz2CXn8Ic3e6J4ZK5RSioFF2NVl8S //GMbTfC+D1simD5KSXt87j2fJSeNl9S67TKK7R0V10N2gkui0gskf9Xw01DT/M9u1u1 IO2A== X-Gm-Message-State: AAQBX9dq2E3yKe2d33Qa9+HzGaXKk2FLhA9JMrQedx+5/0iT5+9tuCPh 8t6LDn5GIPKUp1cBTlkydZy1LgzK+kwlXw== X-Google-Smtp-Source: AKy350YpHY2mDXnA2eDUvRAHbPhXNQ8vYj8RbCUn7W0b3BXyBGRCyxJKvufHXV0PTdU75FyWyB5oFg== X-Received: by 2002:a05:6a20:4b05:b0:cc:eb3b:56e9 with SMTP id fp5-20020a056a204b0500b000cceb3b56e9mr1994664pzb.1.1680761984112; Wed, 05 Apr 2023 23:19:44 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:43 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 6/8] mtd: spi-nor: spansion: Rework cypress_nor_quad_enable_volatile() for multi-chip device support Date: Thu, 6 Apr 2023 15:18:57 +0900 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230406_071949_846549_D8FB1582 X-CRM114-Status: GOOD ( 16.51 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "desiato.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano Rework quad method for multi-chip devices by updating CFR1V in all dice in the device. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 60 ++++++++++++++++++++++ 1 file changed, 39 insertions(+), 21 deletions(-) Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:1033 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano Rework quad method for multi-chip devices by updating CFR1V in all dice in the device. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 60 ++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index 5e021e20497b..91bc0aace516 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -139,21 +139,7 @@ static int cypress_nor_octal_dtr_dis(struct spi_nor *nor) return 0; } -/** - * cypress_nor_quad_enable_volatile() - enable Quad I/O mode in volatile - * register. - * @nor: pointer to a 'struct spi_nor' - * - * It is recommended to update volatile registers in the field application due - * to a risk of the non-volatile registers corruption by power interrupt. This - * function sets Quad Enable bit in CFR1 volatile. If users set the Quad Enable - * bit in the CFR1 non-volatile in advance (typically by a Flash programmer - * before mounting Flash on PCB), the Quad Enable bit in the CFR1 volatile is - * also set during Flash power-up. - * - * Return: 0 on success, -errno otherwise. - */ -static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) +static int cypress_nor_quad_enable_volatile_reg(struct spi_nor *nor, u64 addr) { struct spi_mem_op op; u8 addr_mode_nbytes = nor->params->addr_mode_nbytes; @@ -161,8 +147,7 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) int ret; op = (struct spi_mem_op) - CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes, - SPINOR_REG_CYPRESS_CFR1V, 0, + CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes, addr, 0, nor->bouncebuf); ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); @@ -175,8 +160,7 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) /* Update the Quad Enable bit. */ nor->bouncebuf[0] |= SPINOR_REG_CYPRESS_CFR1_QUAD_EN; op = (struct spi_mem_op) - CYPRESS_NOR_WR_ANY_REG_OP(addr_mode_nbytes, - SPINOR_REG_CYPRESS_CFR1V, 1, + CYPRESS_NOR_WR_ANY_REG_OP(addr_mode_nbytes, addr, 1, nor->bouncebuf); ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); if (ret) @@ -186,8 +170,7 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) /* Read back and check it. */ op = (struct spi_mem_op) - CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes, - SPINOR_REG_CYPRESS_CFR1V, 0, + CYPRESS_NOR_RD_ANY_REG_OP(addr_mode_nbytes, addr, 0, nor->bouncebuf); ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); if (ret) @@ -201,6 +184,41 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) return 0; } +/** + * cypress_nor_quad_enable_volatile() - enable Quad I/O mode in volatile + * register. + * @nor: pointer to a 'struct spi_nor' + * + * It is recommended to update volatile registers in the field application due + * to a risk of the non-volatile registers corruption by power interrupt. This + * function sets Quad Enable bit in CFR1 volatile. If users set the Quad Enable + * bit in the CFR1 non-volatile in advance (typically by a Flash programmer + * before mounting Flash on PCB), the Quad Enable bit in the CFR1 volatile is + * also set during Flash power-up. + * + * Return: 0 on success, -errno otherwise. + */ +static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) +{ + struct spi_nor_flash_parameter *params = nor->params; + u64 addr; + u8 i; + int ret; + + if (!params->n_dice) + return cypress_nor_quad_enable_volatile_reg(nor, + SPINOR_REG_CYPRESS_CFR1V); + + for (i = 0; i < params->n_dice; i++) { + addr = params->vreg_offset[i] + SPINOR_REG_CYPRESS_CFR1; + ret = cypress_nor_quad_enable_volatile_reg(nor, addr); + if (ret) + return ret; + } + + return 0; +} + /** * cypress_nor_determine_addr_mode_by_sr1() - Determine current address mode * (3 or 4-byte) by querying status From patchwork Thu Apr 6 06:18:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765871 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=eLV1cv7c; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=QyjU5S3/; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZg365Jz1yZF for ; Thu, 6 Apr 2023 16:20:27 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zc+F1MlPDsp3nWQfAWJY6EO64r71F8b2wC7wY39XI1w=; b=eLV1cv7cXFwAkl h2oMvnHJiIyme955A3G/SSvMEdhCV18q/3KzTLsCJSYnf98Qvb2R7X+DpTYZmPWaa7UdfkPgdDM7G Asa0MnU9HVWFxzx6PBtrC2NuOzrqwvDr5byj3+xBVXqE9RiAmZkprZbMmyRsZet3AoLj6yYr26F6M j0+CmACr6OI5pJNX5OV/EKT3LgNH/IaLPMz6m0b8onHr4dS9fZG/VuCXpvS0c+aze1112X3jhizqT n20rEvLJt7EaF4IhAP9xDKeBv72aJuJxHqXfZ7PnFziMUTSc3n8Morj6XXHRlO4n5v32KM5oyVv+B jjAle2vjNwKhQuo/Nd6w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyR-006THF-0G; Thu, 06 Apr 2023 06:19:55 +0000 Received: from mail-pl1-f177.google.com ([209.85.214.177]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyN-006TDa-0r for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:19:52 +0000 Received: by mail-pl1-f177.google.com with SMTP id o2so36639100plg.4 for ; Wed, 05 Apr 2023 23:19:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761989; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=l5qNLrlyHyG7Nplbz8tqvhzEVmTmr0S/5njiSbBjBAI=; b=QyjU5S3/26S5ZZk90Q0QqmB/XWMPeiKcE60Mw3IWUedci2kdsXZa/7Wgl4GDumkt1v Z+gn5CXo6C/lTiMzbSqkdype+7hjAd1Aqo0XvbfzrC7RngWiHdfvXQcWJrYfTmsPnKLE vYUjAFJVrN7fnv+zLABMm7fFOuSxATRgIqwyFH9R57kvtGtw6hyU1RualZBQiw7hqCEz GczSdhXmKLirWLnubVDNVgKzTsYCOZqP0PvP5C3Rd6kH/L5qYkfijrqo4pSqCVDXORHC fdrQfVorRx9qHPgrxCVHIeLxHlgE/Oda/SW9fUKkpKC6LJuv0ehVxWYWuzYTZjzuk56C BXow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761989; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l5qNLrlyHyG7Nplbz8tqvhzEVmTmr0S/5njiSbBjBAI=; b=EVGumUeNzxToNUqtnFKv+waHRexKgcHqs9wRIr3Ci8+vzqCcUW2fHtP6pXTpvqkciu WrCIKRQvZSqkBmSbTIpuKAtIz1sX8DNR4Q+hcV4/NPs1VkhdfAsqVYagjl772XGOxyQf D2t3MTkXgaLgPMQFfFejDHkgrBSwG+YSJWek0142dsMJd/HKug+mO0Fqx5dSlQEJl3kt enhSQ01CnWduwSfXOPJzXyA7HlAT2kF90KpQzXvlfuxHh+BMuv8IWfIXD6njbwnXfyon OUde/LuOrsSaPfIH+654AI56ZnSRa4x/8hkK6gftmtnpMkA7PaGAXIzuuVkap3H2EQbv krag== X-Gm-Message-State: AAQBX9e+k6PeghK7Q0IZ2VHDv/zcWbmaK90SAf830OB1lgkDjnb9aWnD zv5XudB/DvH0xO8/Lou1nKUV9Ejd4Xv1iw== X-Google-Smtp-Source: AKy350Yc6C5o5uoa0sVGJCf53VAOQABNJQLO6bTSS4eParHdu78W5v/7aEfzss42HYtsqlK4yVQR+g== X-Received: by 2002:a05:6a20:2d98:b0:e7:4f8a:d04d with SMTP id bf24-20020a056a202d9800b000e74f8ad04dmr1871897pzb.57.1680761989129; Wed, 05 Apr 2023 23:19:49 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:48 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 7/8] mtd: spi-nor: spansion: Add a new ->ready() hook for multi-chip device Date: Thu, 6 Apr 2023 15:18:58 +0900 Message-Id: <8c76ab26451241f6940ec29ac7280b2339c1d1cb.1680749578.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231951_316441_1E5905CF X-CRM114-Status: GOOD ( 22.90 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano For multi-chip devices, we need to make sure the all dice in the device are ready. The cypress_nor_sr_ready_and_clear() reads SR in each die and returns true only when all dice are ready. This functio [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.214.177 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.214.177 listed in wl.mailspike.net] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano For multi-chip devices, we need to make sure the all dice in the device are ready. The cypress_nor_sr_ready_and_clear() reads SR in each die and returns true only when all dice are ready. This function also takes care for program or erase error handling by reusing spansion_nor_clear_sr(). To do that, spansion_nor_clear_sr() is moved to top. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 109 +++++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 24 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index 91bc0aace516..deb93ab6fe98 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -63,6 +63,84 @@ SPI_MEM_OP_NO_DUMMY, \ SPI_MEM_OP_NO_DATA) +/** + * spansion_nor_clear_sr() - Clear the Status Register. + * @nor: pointer to 'struct spi_nor'. + */ +static void spansion_nor_clear_sr(struct spi_nor *nor) +{ + int ret; + + if (nor->spimem) { + struct spi_mem_op op = SPANSION_CLSR_OP; + + spi_nor_spimem_setup_op(nor, &op, nor->reg_proto); + + ret = spi_mem_exec_op(nor->spimem, &op); + } else { + ret = spi_nor_controller_ops_write_reg(nor, SPINOR_OP_CLSR, + NULL, 0); + } + + if (ret) + dev_dbg(nor->dev, "error %d clearing SR\n", ret); +} + +static int cypress_nor_sr_ready_and_clear_reg(struct spi_nor *nor, u64 addr) +{ + struct spi_mem_op op = + CYPRESS_NOR_RD_ANY_REG_OP(nor->params->addr_mode_nbytes, addr, + 0, nor->bouncebuf); + int ret; + + ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + if (nor->bouncebuf[0] & (SR_E_ERR | SR_P_ERR)) { + if (nor->bouncebuf[0] & SR_E_ERR) + dev_err(nor->dev, "Erase Error occurred\n"); + else + dev_err(nor->dev, "Programming Error occurred\n"); + + spansion_nor_clear_sr(nor); + + ret = spi_nor_write_disable(nor); + if (ret) + return ret; + + return -EIO; + } + + return !(nor->bouncebuf[0] & SR_WIP); +} +/** + * cypress_nor_sr_ready_and_clear() - Query the Status Register of each die by + * using Read Any Register command to see if the whole flash is ready for new + * commands and clear it if there are any errors. + * @nor: pointer to 'struct spi_nor'. + * + * Return: 1 if ready, 0 if not ready, -errno on errors. + */ +static int cypress_nor_sr_ready_and_clear(struct spi_nor *nor) +{ + struct spi_nor_flash_parameter *params = nor->params; + u64 addr; + int ret; + u8 i; + + for (i = 0; i < params->n_dice; i++) { + addr = params->vreg_offset[i] + SPINOR_REG_CYPRESS_STR1; + ret = cypress_nor_sr_ready_and_clear_reg(nor, addr); + if (ret < 0) + return ret; + else if (ret == 0) + return 0; + } + + return 1; +} + static int cypress_nor_octal_dtr_en(struct spi_nor *nor) { struct spi_mem_op op; @@ -506,10 +584,16 @@ static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor) static void s25hx_t_late_init(struct spi_nor *nor) { + struct spi_nor_flash_parameter *params = nor->params; + /* Fast Read 4B requires mode cycles */ - nor->params->reads[SNOR_CMD_READ_FAST].num_mode_clocks = 8; + params->reads[SNOR_CMD_READ_FAST].num_mode_clocks = 8; cypress_nor_ecc_init(nor); + + /* Replace ready() with multi die version */ + if (params->n_dice) + params->ready = cypress_nor_sr_ready_and_clear; } static struct spi_nor_fixups s25hx_t_fixups = { @@ -741,29 +825,6 @@ static const struct flash_info spansion_nor_parts[] = { }, }; -/** - * spansion_nor_clear_sr() - Clear the Status Register. - * @nor: pointer to 'struct spi_nor'. - */ -static void spansion_nor_clear_sr(struct spi_nor *nor) -{ - int ret; - - if (nor->spimem) { - struct spi_mem_op op = SPANSION_CLSR_OP; - - spi_nor_spimem_setup_op(nor, &op, nor->reg_proto); - - ret = spi_mem_exec_op(nor->spimem, &op); - } else { - ret = spi_nor_controller_ops_write_reg(nor, SPINOR_OP_CLSR, - NULL, 0); - } - - if (ret) - dev_dbg(nor->dev, "error %d clearing SR\n", ret); -} - /** * spansion_nor_sr_ready_and_clear() - Query the Status Register to see if the * flash is ready for new commands and clear it if there are any errors. From patchwork Thu Apr 6 06:18:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1765872 X-Patchwork-Delegate: tudor.ambarus@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=LlR1P2Mf; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=DNgX+45q; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PsWZj6DBkz1yZF for ; Thu, 6 Apr 2023 16:20:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qEDsobKtN1ueBJP9+yI8TfgoSBuksAhHJfeIrnobEx4=; b=LlR1P2MfGiZOEA 2iDLFpbFy6WtsFmtp2Bmpsfh1wluWE9Hd17o93bGGl3YSSl2SolAU6nFP9pKcenY9XY75tgjhWv0M DenrICSVDf5R0aV7yzPmjejs9gIpvtLkxGqME7po9FgJ/gZIsTf/Lr5HP6uuqbr491QfaoZa/yZvE LnDltO8tNPDNAaK0gUihXuBfDkF9tEakU5/ASsv9Cctx05WGGQBsyvXzV+Q0bCqTvcCMjmvSLEr8G XPeYplMa62OTqTg4YwqrmsWB5UfTybl9jwkw2oLl+KbU+roGPXBVgRKMXvT9BFFuwOzqQxmfe1n3Q AWkG6DQYt8Sjxwoq6VPA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyY-006TMl-1P; Thu, 06 Apr 2023 06:20:02 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkIyT-006TH1-0H for linux-mtd@lists.infradead.org; Thu, 06 Apr 2023 06:20:00 +0000 Received: by mail-pg1-x530.google.com with SMTP id d22so23143301pgw.2 for ; Wed, 05 Apr 2023 23:19:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680761994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rvgjszv7qkNvEncCzwl0KVYudw8TWRShvYmCZby+Eo0=; b=DNgX+45qgPpyFmgmWDWWlb8zbXvkDkR/eL1iBbIXA4sLZPAdz3ko5wWlhCJNqQNWQr Duhb4M6lYW5MbmnBtK0ISNBIyGcGhpYcBdd2ptlEZjfy453zD4bcdHisrKxx/FarcZol k3qszg28fldSr4khYc4/mNEmoZXoEWl9TKvLawGMzk56iRchkH1i5e+DLKhzpOs0NAuI ymfxzmZEPF7Q1jKlUMQ5yHhqVduBd0aknv520UlMygju9Fo2jw9cpQSiAlKJpJKh+yhN 8jvI/Ur/RGs3UfdUrW3oYQ5VdoRO9HsL0DfmGwyTlppF8Frq8W3/1sZvrUf7uv+Zit2P 7xLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680761994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rvgjszv7qkNvEncCzwl0KVYudw8TWRShvYmCZby+Eo0=; b=wPtuPrSJTbaqnI01udctVYDR4V+hQ45IukBxxU5aAbkZgNpYFybSzpFrsDuzMUmVe8 ONjIwiALVvis6/hbb7fn+KpTQpBXHh6bfLaM91fV+03om9G9cU6CqJmgaju5fuXM4pem FJCIXezGn/JWI85086GTBhd0Qyq3u1diWLsILlcFvfXG1HXaAqfPdW5dlTiOMFswvWKW 07khAz+9YNpZJtNK70fDdICXQM2UVsCjViTPZTeOvGqsbhfcicQR/yVPXoKfa1w+eTap UK3uK8iIhrKgYVTLzAXEmsrDFoaS0z1tXk8L+Sd/jsKdicdEgjn5KyrjuK8ckj+AZ0iT mBSQ== X-Gm-Message-State: AAQBX9cauAdJEZ7CuoZtodV59cxWK+OPEl2Tv7PH9pGPx+K0BaUyk9Mk Pm5oO3k3x7580uKN9HTU+T3TUjZce+j/xg== X-Google-Smtp-Source: AKy350bG6uysMzRioeTbzt3vOsUAuX79ySBIPkcxuSFKl4EQHgAqSbmGpv4eINRY1QVej5e2n2tDqg== X-Received: by 2002:a62:1c0a:0:b0:625:cf03:e8cb with SMTP id c10-20020a621c0a000000b00625cf03e8cbmr5595358pfc.4.1680761993968; Wed, 05 Apr 2023 23:19:53 -0700 (PDT) Received: from ISCN5CG2520RPD.infineon.com (sp49-98-38-119.msd.spmode.ne.jp. [49.98.38.119]) by smtp.gmail.com with ESMTPSA id 18-20020aa79152000000b0062dbafd2980sm450542pfi.65.2023.04.05.23.19.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 23:19:53 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@linaro.org, pratyush@kernel.org, michael@walle.cc, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, d-gole@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v3 8/8] mtd: spi-nor: spansion: Add support for Infineon Date: Thu, 6 Apr 2023 15:18:59 +0900 Message-Id: <6b55d2284b55c6de88e5722bb756fad85487d3db.1680749578.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230405_231957_139116_DFA044FA X-CRM114-Status: GOOD ( 12.77 ) X-Spam-Score: 0.1 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Takahiro Kuwano s25hl02gt and s25hs02gt Add ID, flags, and fixup for s25hl02gt and s25hs02gt. These parts are - Dual-die package parts - Not support chip erase - 4-byte addressing mode by default - Wrong param in SCCR map that needs to be f [...] Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:530 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [tkuw584924[at]gmail.com] 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit [tkuw584924[at]gmail.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Takahiro Kuwano s25hl02gt and s25hs02gt Add ID, flags, and fixup for s25hl02gt and s25hs02gt. These parts are - Dual-die package parts - Not support chip erase - 4-byte addressing mode by default - Wrong param in SCCR map that needs to be fixed Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index deb93ab6fe98..15f9a80c10b9 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -579,6 +579,10 @@ static int s25hx_t_post_sfdp_fixup(struct spi_nor *nor) } } + /* The 2 Gb parts duplicate info and advertise 4 dice instead of 2. */ + if (nor->params->size == SZ_256M) + nor->params->n_dice = 2; + return cypress_nor_get_page_size(nor); } @@ -797,6 +801,10 @@ static const struct flash_info spansion_nor_parts[] = { PARSE_SFDP MFR_FLAGS(USE_CLSR) .fixups = &s25hx_t_fixups }, + { "s25hl02gt", INFO6(0x342a1c, 0x0f0090, 0, 0) + PARSE_SFDP + FLAGS(NO_CHIP_ERASE) + .fixups = &s25hx_t_fixups }, { "s25hs512t", INFO6(0x342b1a, 0x0f0390, 256 * 1024, 256) PARSE_SFDP MFR_FLAGS(USE_CLSR) @@ -805,6 +813,10 @@ static const struct flash_info spansion_nor_parts[] = { PARSE_SFDP MFR_FLAGS(USE_CLSR) .fixups = &s25hx_t_fixups }, + { "s25hs02gt", INFO6(0x342b1c, 0x0f0090, 0, 0) + PARSE_SFDP + FLAGS(NO_CHIP_ERASE) + .fixups = &s25hx_t_fixups }, { "cy15x104q", INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1) FLAGS(SPI_NOR_NO_ERASE) }, { "s28hl512t", INFO(0x345a1a, 0, 256 * 1024, 256)