From patchwork Thu Apr 21 06:40:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619964 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=i/+u/Kyw; 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=fATmXXt0; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdX3PZWz9sCq for ; Thu, 21 Apr 2022 16:42:24 +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=Rb86QyQqxBxgO+wxvj+nRnUA9ZD28uoqcQLW2br914s=; b=i/+u/KywUmD28U CZb4yXzvZVTG4e+My1L4o9+LZ5z7johnWWO2oNmw0njFQfzG5DhyuV5nO+NsMBs22/KNJ5Kx+tsTi P7m1Goyz2prQmBcUkWIJBT3GluG5eaKPPOjMSUGXTB9RWImDLuuwOpWDwpO8FLLla/EFUghtrfGTi D+UumPiXBW4lI5MSCf6X4bms8by8wzEH4XBWpPHKgAbfx3XxoCEx0gyDiV6GHfZn+pLTagdCfTUYc 3F8DCpH3/ryFEtrPJCVvyoFmDiKOH0l1Tt3CJuiFvJFYso8TQRbMVJbaSwtb0DNPud8OdlKNxG99u vmybyr9EXAwvoplL7SJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVV-00Bmtv-DR; Thu, 21 Apr 2022 06:41:37 +0000 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVO-00BmpK-3I for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:31 +0000 Received: by mail-pj1-x1032.google.com with SMTP id bx5so4082893pjb.3 for ; Wed, 20 Apr 2022 23:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=c/9WLo3GEcH1x9DQwW9Dg4T+6FbmlcyVJaIOrmn5cbg=; b=fATmXXt0SizcXafhqKP+QKA5eCf+ykOBEGmhXRKtd44paEMDW8qdmuG6fcOOsMPIwG cFsqzcBAqHpDbydksZ4rZvI+TNZ0tAICCUSuGfM4+tjpQ+kzYaLzoShpdFnAXs+6sSTM ZLR83MR0HW/1OzbFJ7ZemCfqTSoC70NIA7xZE/6fnFG7qh/PHvEke75+MX1MrYEwEGIt xVrbX4iqzhCZsEdvkavY6TTUQtMbxfD5X0AAxNz1aemR5NZlRCWG8QYOhJ/jabJWQV6S xNJuRJM5pICJCMv/Pzn4s2gWplhuMxnXs5LfwZrsDGn3gT8ZCJAuqe7jcFY8jPcjdhML PZqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=c/9WLo3GEcH1x9DQwW9Dg4T+6FbmlcyVJaIOrmn5cbg=; b=hX4NU6g2iwANBHDNLzlh3jiCslxF58WFQ0dZ0WbfWJerLIg0s08b1rQFJPZrETrXbI /B2SkH2eWqb+iAnX9ko5naSd3wF0OG6sIZKsF22og5pC3tJ150OvcO6StTdPh9qZT2WY PjvAR54HF34Lee/AYPa42rieB8yDonzsgBq3VmI/9jXtXfimWXXhkdRkUeS8VSkmni12 irqG7Jxt+EiKha+suVbvbaYaeagFXwCXO1t2NDmh2O4vReFopYExoPufD6HDsff42Ihr i9jPVHh3EbUb3okeikN+jo0ZKkBD6rbsvoFkh/ZxEtVtT0eG01cInU+ExMKM1HrOblNT 9zTQ== X-Gm-Message-State: AOAM531Fx1p0CJinfm0BkV7R+/JofGjTeRMDPj6F8P6mRdl2EmEXZRv4 X2oTdpKf/Hhgmk9s6LLBav++6WHdnh0= X-Google-Smtp-Source: ABdhPJxQLTbzlp0bdyjVYHNhAD2nsjmVPd+PTDqx1vYdPZG0qNsTb4TvqydYHd5DnRzcGAfccetwZw== X-Received: by 2002:a17:90b:4a49:b0:1d2:adce:8a89 with SMTP id lb9-20020a17090b4a4900b001d2adce8a89mr8734448pjb.43.1650523286355; Wed, 20 Apr 2022 23:41:26 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:26 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 1/6] mtd: spi-nor: Retain nor->addr_width at 4BAIT parse Date: Thu, 21 Apr 2022 15:40:51 +0900 Message-Id: X-Mailer: git-send-email 2.25.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-20220420_234130_194807_4EE1154C X-CRM114-Status: GOOD ( 14.53 ) 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 nor->addr_width may be used as current address mode in SMPT parse. If nor->addr_width is set to 4 in 4BAIT parse, correct erase map cannot be obtained in Cypress SEMPER Flash family. Retain nor->addr_ [...] 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:1032 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 nor->addr_width may be used as current address mode in SMPT parse. If nor->addr_width is set to 4 in 4BAIT parse, correct erase map cannot be obtained in Cypress SEMPER Flash family. Retain nor->addr_width value at 4BAIT parse and set it to 4 later by using SNOR_F_HAS_4BAIT flag. Signed-off-by: Takahiro Kuwano --- Background information: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201212115817.5122-1-vigneshr@ti.com/ drivers/mtd/spi-nor/core.c | 7 ++++++- drivers/mtd/spi-nor/sfdp.c | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 40ba45328975..87603a99938f 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2210,7 +2210,12 @@ static int spi_nor_default_setup(struct spi_nor *nor, static int spi_nor_set_addr_width(struct spi_nor *nor) { if (nor->addr_width) { - /* already configured from SFDP */ + /* + * Already configured from SFDP. Use an address width of 4 in + * case the device has 4byte opcodes. + */ + if (nor->addr_width == 3 && nor->flags & SNOR_F_HAS_4BAIT) + nor->addr_width = 4; } else if (nor->read_proto == SNOR_PROTO_8_8_8_DTR) { /* * In 8D-8D-8D mode, one byte takes half a cycle to transfer. So diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c index c5dd79ef75c8..9aeefd070475 100644 --- a/drivers/mtd/spi-nor/sfdp.c +++ b/drivers/mtd/spi-nor/sfdp.c @@ -1211,7 +1211,6 @@ static int spi_nor_parse_4bait(struct spi_nor *nor, * Spansion memory. However this quirk is no longer needed with new * SFDP compliant memories. */ - nor->addr_width = 4; nor->flags |= SNOR_F_4B_OPCODES | SNOR_F_HAS_4BAIT; /* fall through */ From patchwork Thu Apr 21 06:40:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619965 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=yuCj8qFL; 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=K8jV/Ep9; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdX3TPGz9sDX for ; Thu, 21 Apr 2022 16:42:24 +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=AM2q2bbImJO+RgU0XOdImBQsTCrjPk1ZQe3nXko+TFQ=; b=yuCj8qFLoztEKI cj9sEI/w4/NUlr8bF82GYEkvOhDITKCONaeGZ4xwitIykpUTc+I3k9QTZkZJQ16xvyACifLavccRX MT8dA0R0ZOFWnmAz62H8AbFOTAOsTkZDd/Riy4AclaiZN70QxnJpNgRa/B2oB8DdFxAuqUjNVTsxy bf0h80lopTMkFv2n//lu+w7/gbK4jxIwgyG4ump+wCls58Lo1mL3T/daMI9ypAXSBHBsfH8fS/i0h hCCGvy2VM0zusIdmUGHwHwJj4WiQDaTkrbw3qkQtRdvf/a/qT260RTFc4Okmb8FAR/xvF8BhKewUx L5DIEynIF27P6awYUD4Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVY-00BmvZ-Oi; Thu, 21 Apr 2022 06:41:40 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVP-00BmqH-G2 for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:33 +0000 Received: by mail-pj1-x102a.google.com with SMTP id z5-20020a17090a468500b001d2bc2743c4so4323135pjf.0 for ; Wed, 20 Apr 2022 23:41:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2A+1DEfCchk9zvWcRwhnR8b183L6jYdN5Jr/HZUvMnk=; b=K8jV/Ep9y7ECvTdXneUCvuSG9z968BJvmY0QtXk7baOnViu2esHZ8kMWAYlPxt3QTa V915AzOoQNU0/3vNCjBhOXnPVoeDh2oWITchImWUKr6pu9H5WeTNJgRXdEb2b9GB1G7p F0OGu7H4Go1Prwbfpa6eaUXQga5dTRfmNpnfrXsyIMfBU+vcHQ5ZfRyjeXrbIDC6os7u oG4pko5USGGSUN07vN6w0zGfCjdg2iHtkj52BV8eRK2kcgFYYtTw+1OMBpPmvRk0s6eg MQpVfDy6O9GR7lmIhhB8znO9t7Grk3eSV9fHqn7FNiLkJ+VQ/mUHHWhRBjf+dC/vl6AW /OmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2A+1DEfCchk9zvWcRwhnR8b183L6jYdN5Jr/HZUvMnk=; b=eacFw5MKWTmKYEiwDvqwBEDrXx6hzKTjfDhkQNBKtKyCpAStKGRq27CtL5QLf8WkXq zvCQHH/AMzxV8+vG6n4t7ROdFRKa1T7w6h9xVZUjgS1ue+h28gs5uvWITeoznxeveOJY MVpf8LxUgWAHxIsmaQrYq6trDdrqUQhNqypwMnNoSgRf1ALfU4rbtQKlYxOPpbDylNFd VXyOvYVFfBGN0k2OjMFXlUTHC2jVMxiLQ95U2S4TAq6lphAFmkKTEtZXI9ZWNQ3u/wXO awwQxRKFxhwDDszqDIMJgMNF4y3/OumC5/5DqvepxnNFXLwoznmjo0uHVBCcv0A74K/k EZpA== X-Gm-Message-State: AOAM530k9JhqTxSj6cHrfhhUnIFboSVE5BpgR7Zm/B16m9Hm7vsYy56g ib1y65EquTjA3Doz0ZZZPOsmjWO9/mw= X-Google-Smtp-Source: ABdhPJxnXOVHf99FsI6buJg1whvrUsYPshPZIZRh34TeFNZ8uNp+blFUmo6OCnSHrihLcwBZTKy3Zw== X-Received: by 2002:a17:903:1105:b0:154:c850:860b with SMTP id n5-20020a170903110500b00154c850860bmr24079132plh.12.1650523288552; Wed, 20 Apr 2022 23:41:28 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:28 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 2/6] mtd: spi-nor: core: Call set_4byte_addr_mode() before spi_nor_quad_enalbe() Date: Thu, 21 Apr 2022 15:40:52 +0900 Message-Id: X-Mailer: git-send-email 2.25.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-20220420_234131_584420_427670BE X-CRM114-Status: GOOD ( 14.06 ) 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 The part specific quad_enable method for s25hl-t and s25hs-t relies on address mode. Flash's address mode needs to be set before spi_nor_quad_enable() call. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/core.c | 30 +++++++++++++++ 1 file changed, 15 insertions(+), 15 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:102a 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 The part specific quad_enable method for s25hl-t and s25hs-t relies on address mode. Flash's address mode needs to be set before spi_nor_quad_enable() call. Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/core.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 87603a99938f..748b77eb7841 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -2665,6 +2665,21 @@ static int spi_nor_init(struct spi_nor *nor) return err; } + if (nor->addr_width == 4 && + nor->read_proto != SNOR_PROTO_8_8_8_DTR && + !(nor->flags & SNOR_F_4B_OPCODES)) { + /* + * If the RESET# pin isn't hooked up properly, or the system + * otherwise doesn't perform a reset command in the boot + * sequence, it's impossible to 100% protect against unexpected + * reboots (e.g., crashes). Warn the user (or hopefully, system + * designer) that this is bad. + */ + WARN_ONCE(nor->flags & SNOR_F_BROKEN_RESET, + "enabling reset hack; may not recover from unexpected reboots\n"); + nor->params->set_4byte_addr_mode(nor, true); + } + err = spi_nor_quad_enable(nor); if (err) { dev_dbg(nor->dev, "quad mode not supported\n"); @@ -2686,21 +2701,6 @@ static int spi_nor_init(struct spi_nor *nor) nor->flags & SNOR_F_SWP_IS_VOLATILE)) spi_nor_try_unlock_all(nor); - if (nor->addr_width == 4 && - nor->read_proto != SNOR_PROTO_8_8_8_DTR && - !(nor->flags & SNOR_F_4B_OPCODES)) { - /* - * If the RESET# pin isn't hooked up properly, or the system - * otherwise doesn't perform a reset command in the boot - * sequence, it's impossible to 100% protect against unexpected - * reboots (e.g., crashes). Warn the user (or hopefully, system - * designer) that this is bad. - */ - WARN_ONCE(nor->flags & SNOR_F_BROKEN_RESET, - "enabling reset hack; may not recover from unexpected reboots\n"); - nor->params->set_4byte_addr_mode(nor, true); - } - return 0; } From patchwork Thu Apr 21 06:40:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619963 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=RHn+YjMh; 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=S52+/nUw; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdX2VVHz9sBy for ; Thu, 21 Apr 2022 16:42:24 +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=96wgIUsnb4PYkRsRGXtz9cBWRFCuzLrgzZoyEMgxOzk=; b=RHn+YjMhieZ/QE 9uZRJLc+Ls9nKFfETcjJlDIYcK31/Z2puEFcSEWwcC70hleHNx8jF3pFk8XQIwlVbuuNPnx3vmeRa ENykdSyf7SXrAPITMWAgvt58qqNUjxnp3ONtsTfgnqoo2OIX4duBQmABqNBRLXgX0RBWAOtk7S2Zp zg9QQ8gjMyIUGQrOHCX0U9D56zbFBO/DUlfgp6fmukCgbYUg/I1kaBcfvq1ok4kWx/em1K1zKXVwd 4N8mjFc2xegKGg38YUsTgYsWY/zGswbO9HnjIpK/saQEopd04cnphzFj9JhVkjCrZ7TVx0TgUiJ9T FMGWGVGnCv29rvoYxLfg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVb-00Bmx5-RK; Thu, 21 Apr 2022 06:41:43 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVS-00Bmr4-Gc for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:36 +0000 Received: by mail-pl1-x62a.google.com with SMTP id c23so3996001plo.0 for ; Wed, 20 Apr 2022 23:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LONb1mnj7dnIeWFnJ99f0HXGVnTcXh45wVb4OBVyhJk=; b=S52+/nUwgJIWiuOTIjMtyklP7VuVqJKZciM2Juc4T+WDIgy7MYzeMK7scCQIQaO8fc 6E+tgNKIqxAxdExtMuk/5YxLks8/14WhWaQGkmd/XqsbDA4RggqoLg5ekfWWAxnSyXcG SnVroAhYyEQlhSFlYr/Z+0MRCqpFwgnqRnbYrCHwqWKb6HD8v9GNDWdcwNgFl9RRI8Ts Uypjz1aDOv7Bkg3KGBq0u8W9Npcyc25OIi9ZoQQztjtO/R5vLRqs10gLbBk/ORfk94MI xxVlzPM1gRK8DAhNdVJjpToGqeVqIk+n7XQgJ109XkcHJM9Wjt0mMq9fm+oF8YuuhPkP BKJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LONb1mnj7dnIeWFnJ99f0HXGVnTcXh45wVb4OBVyhJk=; b=BcXTPQ73IpvPjO4bRXvkYx2BpAxKqWMkNeDyrdIivr8OvhTzrWSRGJN+w+Ypwuarr2 FiYOSpjpbJL0TXM4gmQ4X3jYj8U8iGRk5i2nEdEr0LkmMJJi2YkOD2+gJQP8T/0527ul /7e+b6r5XV9E3rVJ5IDmm2knrWAlkPWuz/FTI4/5C+AdktarEvu8GqSJDbClMJflrtZS sJwzX8717pJbKkSB1EeF8cmMVaMfm7P0j8g+G3ASXDt5Rm/TqpiNCe566ZBmfXNsXPBm Ufl8xDQlKmZp3fmLFOnCIm7Xwz4bhd/Q0BOFV8D2zy4VA0bS0BUgUWkvEz93X+1olSsC x7Cg== X-Gm-Message-State: AOAM5335QYQS0cXSGdePMvaY+46dwaM6JLrlq4I0CvpJXevYCpJkhdPv Poe6eLgkruHWbPoWKVQaJVj4zvfr/CE= X-Google-Smtp-Source: ABdhPJzzCRVfWZVo5n1WhEYduUTwS5oGcUvaK0sA6zrSFJZd8EEWif7RNX8M0VBSSWmdivjPmnKU5A== X-Received: by 2002:a17:902:b103:b0:156:c7bb:a852 with SMTP id q3-20020a170902b10300b00156c7bba852mr23663661plr.29.1650523290787; Wed, 20 Apr 2022 23:41:30 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:30 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 3/6] mtd: spi-nor: spansion: Rename local macros Date: Thu, 21 Apr 2022 15:40:53 +0900 Message-Id: X-Mailer: git-send-email 2.25.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-20220420_234134_629646_292E2EE8 X-CRM114-Status: GOOD ( 18.40 ) 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 Use CYPRESS_NOR_ prefix for local macros Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 78 +++++++++++++++++ 1 file changed, 40 insertions(+), 38 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:62a 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 Use CYPRESS_NOR_ prefix for local macros Signed-off-by: Takahiro Kuwano --- drivers/mtd/spi-nor/spansion.c | 78 +++++++++++++++++----------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index 43cd6cd92537..c8abe46e63fe 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -9,35 +9,36 @@ #include "core.h" /* flash_info mfr_flag. Used to clear sticky prorietary SR bits. */ -#define USE_CLSR BIT(0) - -#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_CFR2V 0x00800003 -#define SPINOR_REG_CYPRESS_CFR2V_MEMLAT_11_24 0xb -#define SPINOR_REG_CYPRESS_CFR3V 0x00800004 -#define SPINOR_REG_CYPRESS_CFR3V_PGSZ BIT(4) /* Page size. */ -#define SPINOR_REG_CYPRESS_CFR5V 0x00800006 -#define SPINOR_REG_CYPRESS_CFR5V_OCT_DTR_EN 0x3 -#define SPINOR_REG_CYPRESS_CFR5V_OCT_DTR_DS 0 -#define SPINOR_OP_CYPRESS_RD_FAST 0xee +#define CYPRESS_NOR_USE_CLSR BIT(0) + +#define CYPRESS_NOR_OP_CLSR 0x30 /* Clear status register 1 */ +#define CYPRESS_NOR_OP_RD_ANY_REG 0x65 /* Read any register */ +#define CYPRESS_NOR_OP_WR_ANY_REG 0x71 /* Write any register */ +#define CYPRESS_NOR_OP_RD_FAST 0xee + +#define CYPRESS_NOR_REG_CFR2V 0x00800003 +#define CYPRESS_NOR_REG_CFR2V_MEMLAT_11_24 0xb +#define CYPRESS_NOR_REG_CFR3V 0x00800004 +#define CYPRESS_NOR_REG_CFR3V_PGSZ BIT(4) /* Page size. */ +#define CYPRESS_NOR_REG_CFR5V 0x00800006 +#define CYPRESS_NOR_REG_CFR5V_OCT_DTR_EN 0x3 +#define CYPRESS_NOR_REG_CFR5V_OCT_DTR_DS 0 /* Cypress SPI NOR flash operations. */ #define CYPRESS_NOR_WR_ANY_REG_OP(naddr, addr, ndata, buf) \ - SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WR_ANY_REG, 0), \ + SPI_MEM_OP(SPI_MEM_OP_CMD(CYPRESS_NOR_OP_WR_ANY_REG, 0), \ SPI_MEM_OP_ADDR(naddr, addr, 0), \ SPI_MEM_OP_NO_DUMMY, \ SPI_MEM_OP_DATA_OUT(ndata, buf, 0)) #define CYPRESS_NOR_RD_ANY_REG_OP(naddr, addr, buf) \ - SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RD_ANY_REG, 0), \ + SPI_MEM_OP(SPI_MEM_OP_CMD(CYPRESS_NOR_OP_RD_ANY_REG, 0), \ SPI_MEM_OP_ADDR(naddr, addr, 0), \ SPI_MEM_OP_NO_DUMMY, \ SPI_MEM_OP_DATA_IN(1, buf, 0)) -#define SPANSION_CLSR_OP \ - SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_CLSR, 0), \ +#define CYPRESS_NOR_CLSR_OP \ + SPI_MEM_OP(SPI_MEM_OP_CMD(CYPRESS_NOR_OP_CLSR, 0), \ SPI_MEM_OP_NO_ADDR, \ SPI_MEM_OP_NO_DUMMY, \ SPI_MEM_OP_NO_DATA) @@ -49,9 +50,9 @@ static int cypress_nor_octal_dtr_en(struct spi_nor *nor) int ret; /* Use 24 dummy cycles for memory array reads. */ - *buf = SPINOR_REG_CYPRESS_CFR2V_MEMLAT_11_24; + *buf = CYPRESS_NOR_REG_CFR2V_MEMLAT_11_24; op = (struct spi_mem_op) - CYPRESS_NOR_WR_ANY_REG_OP(3, SPINOR_REG_CYPRESS_CFR2V, 1, buf); + CYPRESS_NOR_WR_ANY_REG_OP(3, CYPRESS_NOR_REG_CFR2V, 1, buf); ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); if (ret) @@ -60,9 +61,9 @@ static int cypress_nor_octal_dtr_en(struct spi_nor *nor) nor->read_dummy = 24; /* Set the octal and DTR enable bits. */ - buf[0] = SPINOR_REG_CYPRESS_CFR5V_OCT_DTR_EN; + buf[0] = CYPRESS_NOR_REG_CFR5V_OCT_DTR_EN; op = (struct spi_mem_op) - CYPRESS_NOR_WR_ANY_REG_OP(3, SPINOR_REG_CYPRESS_CFR5V, 1, buf); + CYPRESS_NOR_WR_ANY_REG_OP(3, CYPRESS_NOR_REG_CFR5V, 1, buf); ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); if (ret) @@ -92,10 +93,10 @@ static int cypress_nor_octal_dtr_dis(struct spi_nor *nor) * in 8D-8D-8D mode. Since there is no register at the next location, * just initialize the value to 0 and let the transaction go on. */ - buf[0] = SPINOR_REG_CYPRESS_CFR5V_OCT_DTR_DS; + buf[0] = CYPRESS_NOR_REG_CFR5V_OCT_DTR_DS; buf[1] = 0; op = (struct spi_mem_op) - CYPRESS_NOR_WR_ANY_REG_OP(4, SPINOR_REG_CYPRESS_CFR5V, 2, buf); + CYPRESS_NOR_WR_ANY_REG_OP(4, CYPRESS_NOR_REG_CFR5V, 2, buf); ret = spi_nor_write_any_volatile_reg(nor, &op, SNOR_PROTO_8_8_8_DTR); if (ret) return ret; @@ -143,7 +144,7 @@ static void s28hs512t_post_sfdp_fixup(struct spi_nor *nor) */ if (nor->params->reads[SNOR_CMD_READ_8_8_8_DTR].opcode == 0) nor->params->reads[SNOR_CMD_READ_8_8_8_DTR].opcode = - SPINOR_OP_CYPRESS_RD_FAST; + CYPRESS_NOR_OP_RD_FAST; /* This flash is also missing the 4-byte Page Program opcode bit. */ spi_nor_set_pp_settings(&nor->params->page_programs[SNOR_CMD_PP], @@ -227,51 +228,51 @@ static const struct flash_info spansion_nor_parts[] = { NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "s25fl128s0", INFO6(0x012018, 0x4d0080, 256 * 1024, 64) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fl128s1", INFO6(0x012018, 0x4d0180, 64 * 1024, 256) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fl256s0", INFO6(0x010219, 0x4d0080, 256 * 1024, 128) NO_SFDP_FLAGS(SPI_NOR_SKIP_SFDP | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fl256s1", INFO6(0x010219, 0x4d0180, 64 * 1024, 512) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fl512s", INFO6(0x010220, 0x4d0080, 256 * 1024, 256) FLAGS(SPI_NOR_HAS_LOCK) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fs128s1", INFO6(0x012018, 0x4d0181, 64 * 1024, 256) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) .fixups = &s25fs_s_nor_fixups, }, { "s25fs256s0", INFO6(0x010219, 0x4d0081, 256 * 1024, 128) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fs256s1", INFO6(0x010219, 0x4d0181, 64 * 1024, 512) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fs512s", INFO6(0x010220, 0x4d0081, 256 * 1024, 256) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) .fixups = &s25fs_s_nor_fixups, }, { "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64) }, { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256) }, { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256) NO_SFDP_FLAGS(SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) - MFR_FLAGS(USE_CLSR) + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) }, { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8) }, { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16) }, @@ -328,13 +329,14 @@ static void spansion_nor_clear_sr(struct spi_nor *nor) int ret; if (nor->spimem) { - struct spi_mem_op op = SPANSION_CLSR_OP; + struct spi_mem_op op = CYPRESS_NOR_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, + ret = spi_nor_controller_ops_write_reg(nor, + CYPRESS_NOR_OP_CLSR, NULL, 0); } @@ -390,7 +392,7 @@ static void spansion_nor_late_init(struct spi_nor *nor) nor->mtd.erasesize = nor->info->sector_size; } - if (nor->info->mfr_flags & USE_CLSR) + if (nor->info->mfr_flags & CYPRESS_NOR_USE_CLSR) nor->params->ready = spansion_nor_sr_ready_and_clear; } From patchwork Thu Apr 21 06:40:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619967 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=zf+y/de6; 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=aDjbFMES; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdY65bwz9sFx for ; Thu, 21 Apr 2022 16:42:25 +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=1j71/lZpBg4WEoDPynUJ/IB4keJWR/5IcVh2kACK9CE=; b=zf+y/de6I5Ejzf u1mHOh2bk4AAGoy08dnK5l6wlU6oFq+LEhNdZg5vCdahvrIuYE5qumNUqyUX1FYSjyENoryMMm+eD nIcD3dPmtLTm+VaPcUSx8KpVwEUs/NHmeS3iGU6NWBCP9kLtN7t7wKcb++NRbV9xGMNDW4KsVgPT8 F9+k61oSDXQMKrYfmQfnUzYx58v5JrV5yHxztqvcZaWtHZwYH77VQKNkNc1IuEXl5Zwza+nD9QZqf Qs0wtgrpjnCfukL47TsiNFpvIZDRrYx4nC0WrpWzImnds19nyTp+yIZYOJsY1lqwJeVMa4Vhg6xgq G1L2hSfVyLU06FRDa44A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVe-00BmyU-Na; Thu, 21 Apr 2022 06:41:46 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVU-00Bms6-M7 for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:38 +0000 Received: by mail-pg1-x530.google.com with SMTP id t4so3867496pgc.1 for ; Wed, 20 Apr 2022 23:41:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eA9Fy5Z27l80HvEwZeLJ4RtzUIrtM/90b9HA0NlFVU0=; b=aDjbFMESTKTEEOIX8WXpYXnnClSHDabS4Kp7pVYFOB6YDtz16s0AwQVka+EdC5e465 r/vghGMYgjWqE/OA0ligufWNvuNz+040vHEU5amQ2btuTbVexq81J8E6XqckcmSWKPrY Dd0Cgtcfzz17uO5/1HxKj0bfKgc9Dw38Bo68s+ugtZOrL7U9SlHH4hRlzL1Wqgl8e0f2 GAjOh1ZauGaD6DAKV7N/oh937+Gcx0aKlfpuI39ye1YnU0QXCObxcEZRgzTak1TUwOrq Sm0WpzqvCoFVURE2/qnmbDz1Sn4YFGsGVg2D51/jas4BGxFvw0T36U2tXOEc/XqAbwPB XswA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eA9Fy5Z27l80HvEwZeLJ4RtzUIrtM/90b9HA0NlFVU0=; b=DwG5cH2M5L9Wz2tbCiGz1o5oj7uSkViItY7lJHJcYhXfpmOth+oD7yN/1zRWpIspEm niu/EnbNzsbMTXE8QW1sKzmGS/4GfgOwgDS5ZbO5dg/n/BdweapqSOEO0+A0UHxEXeX3 io+L5n6vrP09gT8uUALP0X3Rar7sH/IS05sA4umksDq/anRlkSREvdEhWwexNdaZmj/l ktimHa3MIodAwG8lM2nQuv6hjKKXuL8zVE06IoXX0OjpkbFawUcN1n9KHiXjni/wlUMb R3P255TFCEjRtvY9LeYw7fO4tjcmLb+W4+dVtLvmkIIQA1QiQQFEBz+VlVOmpvfgupIU 3P8w== X-Gm-Message-State: AOAM533Np2pMaLEpGGvLUujzzZy4hQBlNclYel4/KexVm+2V/ogSbqZm PVfTBkq8PoUM+0dD0kGU7Cy2pb1gqbs= X-Google-Smtp-Source: ABdhPJxzdQGQfmU91eLyOeWeFexMi+OQtWbIcbFW1wTxxVoFuWfKHuBSuHUftbdI+xScqdykj0bCpQ== X-Received: by 2002:a63:1117:0:b0:399:2df0:7fb9 with SMTP id g23-20020a631117000000b003992df07fb9mr23407411pgl.40.1650523292979; Wed, 20 Apr 2022 23:41:32 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:32 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 4/6] mtd: spi-nor: spansion: Add support for volatile QE bit Date: Thu, 21 Apr 2022 15:40:54 +0900 Message-Id: <61f548acb4ea6924b91e44925e770934180b4323.1650519576.git.Takahiro.Kuwano@infineon.com> X-Mailer: git-send-email 2.25.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-20220420_234136_750808_20BD500A X-CRM114-Status: GOOD ( 17.84 ) 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 Some of Infineon chips support volatile version of configuration registers and it is recommended to update volatile registers in the field application due to a risk of the non-volatile registers corru [...] 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 Some of Infineon chips support volatile version of configuration registers and it is recommended to update volatile registers in the field application due to a risk of the non-volatile registers corruption by power interrupt. Signed-off-by: Takahiro Kuwano Reviewed-by: Tudor Ambarus --- Changes in v12: - Rebase on top of Tudor's series https://patchwork.ozlabs.org/project/linux-mtd/list/?series=295933 - Use macro directly instead of local variable - Use nor->reg_proto instead of SNOR_PROTO_1_1_1 Changes in v11: - Rebase on top of Tudor's series https://patchwork.ozlabs.org/project/linux-mtd/list/?series=294490 Changes in v10: - Remove dependencies on other series Changes in v9: - Rename function per mwalle's series Changes in v8: - Use spi_nor_read/write_reg() functions - Use nor->bouncebuf instead of a variable on stack Changes in v7: - Add missing macro definitions in v6 Changes in v6: - Remove multi die package support Changes in v5: - No change Changes in v4: - No change Changes in v3: - Add multi-die package parts support drivers/mtd/spi-nor/spansion.c | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index c8abe46e63fe..dce5fe7498b1 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -16,6 +16,8 @@ #define CYPRESS_NOR_OP_WR_ANY_REG 0x71 /* Write any register */ #define CYPRESS_NOR_OP_RD_FAST 0xee +#define CYPRESS_NOR_REG_CFR1V 0x00800002 +#define CYPRESS_NOR_REG_CFR1V_QUAD_EN BIT(1) /* Quad Enable */ #define CYPRESS_NOR_REG_CFR2V 0x00800003 #define CYPRESS_NOR_REG_CFR2V_MEMLAT_11_24 0xb #define CYPRESS_NOR_REG_CFR3V 0x00800004 @@ -114,6 +116,66 @@ 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) +{ + struct spi_mem_op op; + u8 cfr1v_written; + int ret; + + op = (struct spi_mem_op) + CYPRESS_NOR_RD_ANY_REG_OP(nor->addr_width, + CYPRESS_NOR_REG_CFR1V, + nor->bouncebuf); + ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + if (nor->bouncebuf[0] & CYPRESS_NOR_REG_CFR1V_QUAD_EN) + return 0; + + /* Update the Quad Enable bit. */ + nor->bouncebuf[0] |= CYPRESS_NOR_REG_CFR1V_QUAD_EN; + op = (struct spi_mem_op) + CYPRESS_NOR_WR_ANY_REG_OP(nor->addr_width, + CYPRESS_NOR_REG_CFR1V, 1, + nor->bouncebuf); + ret = spi_nor_write_any_volatile_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + cfr1v_written = nor->bouncebuf[0]; + + /* Read back and check it. */ + op = (struct spi_mem_op) + CYPRESS_NOR_RD_ANY_REG_OP(nor->addr_width, + CYPRESS_NOR_REG_CFR1V, + nor->bouncebuf); + ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + if (nor->bouncebuf[0] != cfr1v_written) { + dev_err(nor->dev, "CFR1: Read back test failed\n"); + return -EIO; + } + + return 0; +} + /** * cypress_nor_octal_dtr_enable() - Enable octal DTR on Cypress flashes. * @nor: pointer to a 'struct spi_nor' From patchwork Thu Apr 21 06:40:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619968 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=jLJ9wETF; 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=NVTbdlQG; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdb5VGCz9sBy for ; Thu, 21 Apr 2022 16:42: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=rJZoSRNe+bnPwZMrfcA0GemuF6bEWG6VlTIDrEolj2U=; b=jLJ9wETFgwCSLT LplkNccds+kXQEedr7RkIVVLVwnBAkD63tZtrvDBWW1i5l71BA1YeHz1C61Lf4dg1UCIn4zLUY3XV yz15U/qYvkCwdA7+eF/M5lLoWz/laCfaW0FJJBrGvGaD7+nWztY7gBIFjOkfPXFq8y0/3OIfNyp3c qBV4HW2F2sQxfkii2belmvkVIbkFfAW2/1TdaVZ0XMRd4qX1o2D44424kVLfthPQ/F00wula692e+ q2sfqph8JJM3m2U3iOdadP6Vtexg7yDpt4hImDL+maYXNuzQZapScNBqR3kB+oUEzcMBir83JhRuv c//eCELD8lqafkIjpkzQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVh-00Bmzo-QP; Thu, 21 Apr 2022 06:41:49 +0000 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVV-00Bmsu-JX for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:39 +0000 Received: by mail-pg1-x52b.google.com with SMTP id i63so3832945pge.11 for ; Wed, 20 Apr 2022 23:41:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i+5jq0K+JkOdh8wu8Lpj3bWT8rSKlgSozUX72nbpSQg=; b=NVTbdlQGHv685oHmakMB4/9iU75sIjZTPvDbPkDti3gdzI+r5amAyhwM2S0+zgBHrk gtah6NmmowtmyD7SpqG6Pag+MMSlT24OcIcqi6TTOyQoQwc5rNXxWVf/gEV3hWYCBtxY NZB4bJzPj4ECi4NsE9KuwmTWvxhXirrDDhAsZcfvmRpyMNC1aDlKSGm5H9V6yuMYHccc 6xzDePgCecx7Hpk3fKjq5zoQ4m0yp/aCIrz4EWjtlQjMH5SZIQcgsYTdBvtkRIRYMDob jWFRfxJRlTAfJ8gpjQOYJO1CgA7CIF/2LLtJzkmg1W2VHpbBRetdq70H8utySlb4oHkf O+ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i+5jq0K+JkOdh8wu8Lpj3bWT8rSKlgSozUX72nbpSQg=; b=EnTzKbQVp8nxY6AssYKKYYVCbjuDytuZLFkrSm25e40OnVJrGOh2fvwiJX9KoEur9d MuAVBv0MVLD3PSESdIOlcppJommhjGXAoSte6PAHw5HLawS1YbJ2cXwXyKR7wKB7Mtxg H0ceCrdW810736Che5QGNp2QHnfa11CqAtexJeEO4m0lzYJVtw4x/8Xouk8ib1wO44z3 i4v3WeByaYu+wb0PHHi23u/+MWfQXHPtICrDlgiaRCmeAkoW2jx2dgiLLr8TXwy9yVz6 q6UGWaGTy+kZfqlvmx93TLJFxkE6Huz1Pf5i1if+FD24r1zsCXRroMo2vyLZKK7Ttl1O PKmw== X-Gm-Message-State: AOAM533pBm26jCvXGS2unQre/nc/j87NaG2dTzyq2MHDLIUW3qN6MlCE Qp8clTEQ4PLZo1Aht81n5Q004eQIQn8= X-Google-Smtp-Source: ABdhPJzjPqTsPhHxnZ4TOw1j+ulVNiTCTy5Ea2OGVcUM0YNC8xRNggOdfGNtpNj1vaESo4MnsSDMMg== X-Received: by 2002:a63:484f:0:b0:3aa:3f25:25a0 with SMTP id x15-20020a63484f000000b003aa3f2525a0mr10246586pgk.559.1650523295210; Wed, 20 Apr 2022 23:41:35 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:34 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 5/6] mtd: spi-nor: spansion: Add local function to discover page size Date: Thu, 21 Apr 2022 15:40:55 +0900 Message-Id: X-Mailer: git-send-email 2.25.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-20220420_234137_715515_1D45C3B3 X-CRM114-Status: GOOD ( 17.11 ) 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 The page size check in s28hs512t fixup can be used for s25hs/hl-t as well. Move that to a newly created local function. Signed-off-by: Takahiro Kuwano Reviewed-by: Tudor Ambarus --- Changes in v12: - Rebase on top of Tudor's series https://patchwork.ozlabs.org/project/linux-mtd/list/?series=295933 - Remove addr_wid [...] 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 The page size check in s28hs512t fixup can be used for s25hs/hl-t as well. Move that to a newly created local function. Signed-off-by: Takahiro Kuwano Reviewed-by: Tudor Ambarus --- Changes in v12: - Rebase on top of Tudor's series https://patchwork.ozlabs.org/project/linux-mtd/list/?series=295933 - Remove addr_width param. Use nor->addr_width instead. Changes in v11: - Rebase on top of Tudor's series https://patchwork.ozlabs.org/project/linux-mtd/list/?series=294490 - Add addr_width param drivers/mtd/spi-nor/spansion.c | 54 ++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index dce5fe7498b1..248fe1b221fd 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -176,6 +176,37 @@ static int cypress_nor_quad_enable_volatile(struct spi_nor *nor) return 0; } +/** + * cypress_nor_set_page_size() - Set page size which corresponds to the flash + * 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_set_page_size(struct spi_nor *nor) +{ + struct spi_mem_op op = + CYPRESS_NOR_RD_ANY_REG_OP(nor->addr_width, + CYPRESS_NOR_REG_CFR3V, + nor->bouncebuf); + int ret; + + ret = spi_nor_read_any_reg(nor, &op, nor->reg_proto); + if (ret) + return ret; + + if (nor->bouncebuf[0] & CYPRESS_NOR_REG_CFR3V_PGSZ) + nor->params->page_size = 512; + else + nor->params->page_size = 256; + + return 0; +} + /** * cypress_nor_octal_dtr_enable() - Enable octal DTR on Cypress flashes. * @nor: pointer to a 'struct spi_nor' @@ -230,28 +261,7 @@ static int s28hs512t_post_bfpt_fixup(struct spi_nor *nor, const struct sfdp_parameter_header *bfpt_header, const struct sfdp_bfpt *bfpt) { - /* - * The BFPT table advertises a 512B page size but the page size is - * actually configurable (with the default being 256B). Read from - * CFR3V[4] and set the correct size. - */ - struct spi_mem_op op = - CYPRESS_NOR_RD_ANY_REG_OP(3, SPINOR_REG_CYPRESS_CFR3V, - nor->bouncebuf); - int ret; - - spi_nor_spimem_setup_op(nor, &op, nor->reg_proto); - - ret = spi_mem_exec_op(nor->spimem, &op); - if (ret) - return ret; - - if (nor->bouncebuf[0] & SPINOR_REG_CYPRESS_CFR3V_PGSZ) - nor->params->page_size = 512; - else - nor->params->page_size = 256; - - return 0; + return cypress_nor_set_page_size(nor); } static const struct spi_nor_fixups s28hs512t_fixups = { From patchwork Thu Apr 21 06:40:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takahiro Kuwano X-Patchwork-Id: 1619969 X-Patchwork-Delegate: p.yadav@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.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=LGNrOb6p; 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=JM+O9jgO; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KkSdq1kJpz9sCq for ; Thu, 21 Apr 2022 16:42:39 +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=MxrEj42kWIWl5o5ZXGqS9zAAOVttaDRM4CpFgfp22PM=; b=LGNrOb6pODAXTY SSvM9tep8Dnmf/k7ZGCfyNt8+TXPFZW2ZjL1kmvL5KQD5ylGmBS1XJkdoo6uxB92vEIlgFQf3asNR HNg/ufP6aXrqxeyDy4YvStj6gOfbeys4Ptt4bAj76/2lrJbiKUFlsMNTlagWBDDr8ZsZvzkvVePSt vMykUvIaIW4POLjp/eLgRm4Kpxa9lsowiug2ZP2y9HfoBc/QpCm3KAfq+bM9RFtL0+CfiSvbZ9Yf5 bLwkA3wUPKFOhe+qj46Lcm+TB8ux+rd794YTRxp+/QiEuP0FQzi0oKemC3cTZpqtFeJXyDP+qqgOi ZXXFzCgHvYjad/j/EI8w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVn-00Bn3V-Ba; Thu, 21 Apr 2022 06:41:55 +0000 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhQVV-00BmuI-SG for linux-mtd@lists.infradead.org; Thu, 21 Apr 2022 06:41:40 +0000 Received: by mail-pj1-x102a.google.com with SMTP id 2so4103972pjw.2 for ; Wed, 20 Apr 2022 23:41:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xiLQl9Fbw/dgmyWu+dMxxxgEtAz4zruKJrdWl24hovc=; b=JM+O9jgOIQlTF+N1Qx5hwiyc9kfvhNmsVI7AwxDAH2nUGQ3Wt52p1ZyTscPcqF+V9w zG/ExB2Jnb6hVbp7ecXd7TpMJxnWSEeUvcbv94RW7/azHE3V3sczCnyD6L+IAFdJ2gCQ 9Kh8dnvk3W2cFTcc32NPYZUqDiE7EUqIsiLHqzWSGy0ijKdJHB68QS6jq8VyHVLBsTxe sL0jmnG0qZjikDyUSxfJ0Qn2DPanpxwfytZm6IPblx0tOtNqTR4IG1R0EbiyG7RXeK6p 9Cn9+NkLiSdyLgHCCAl5F9IQ1iUQZd+qxUrLfsB414f9hddNoHS6qFIC49ZMaBgejA76 iyBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xiLQl9Fbw/dgmyWu+dMxxxgEtAz4zruKJrdWl24hovc=; b=SvRkldJPSbWES4+6lftkUGpWKp595T9YAa/x2PljpOdvXXcObXtVPeyatV3ZxM7OZD FF5qsvdsX23BRjvx/hR8GMlW3JNmeXS8YyQNZTYy1b8DluMaYZXJgiaOdyqVnIlNHyN6 TUnPOVA182DZva6Tj5hQD8nF9z/5MO7cLo4MQquye8JL3joXZ/YUUEO5q6K36XPcOGUc iauTamdHnT7OXOCMitXBP3gr7Y056S0M8rMIu+APDuEP9HuQbnPt7D6mVxuDNpr4EP8y P+99T16f0qte8ZOid+tersiFN4RfMF5sSMH82bj9fyLydziSGmwsBpWpiDyt0VKYq9Ks 0sXA== X-Gm-Message-State: AOAM530GIxmWnBkY/d9yGvYiIKsLEwbXlBuZrQCSfFGQ4YWx6bCZpnkq wvHK0GRyruKG0dCokMpqHezDYwWyXvs= X-Google-Smtp-Source: ABdhPJypXsiT+Gy7PNjLN4VNnykMMfwXUG2YNFPZMynmDhbefgHdZt3uSk9uPG9w5eu0GwslISPvSw== X-Received: by 2002:a17:902:9b95:b0:151:533b:9197 with SMTP id y21-20020a1709029b9500b00151533b9197mr24490165plp.66.1650523297392; Wed, 20 Apr 2022 23:41:37 -0700 (PDT) Received: from ISCNPF1JZGWX.infineon.com (fp76ee264d.knge102.ap.nuro.jp. [118.238.38.77]) by smtp.gmail.com with ESMTPSA id x184-20020a6286c1000000b0050ad3051f53sm2075037pfd.147.2022.04.20.23.41.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 23:41:37 -0700 (PDT) From: tkuw584924@gmail.com X-Google-Original-From: Takahiro.Kuwano@infineon.com To: linux-mtd@lists.infradead.org Cc: tudor.ambarus@microchip.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, p.yadav@ti.com, tkuw584924@gmail.com, Bacem.Daassi@infineon.com, Takahiro Kuwano Subject: [PATCH v12 6/6] mtd: spi-nor: spansion: Add s25hl-t/s25hs-t IDs and fixups Date: Thu, 21 Apr 2022 15:40:56 +0900 Message-Id: X-Mailer: git-send-email 2.25.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-20220420_234137_975599_BBC11456 X-CRM114-Status: GOOD ( 19.61 ) 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 The S25HL-T/S25HS-T family is the Infineon SEMPER Flash with Quad SPI. For the single-die package parts (512Mb and 1Gb), only bottom 4KB and uniform sector sizes are supported. This is due to missing or incorrect entries in SMPT. Fixup for other sector sizes configuratio [...] 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:102a 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 The S25HL-T/S25HS-T family is the Infineon SEMPER Flash with Quad SPI. For the single-die package parts (512Mb and 1Gb), only bottom 4KB and uniform sector sizes are supported. This is due to missing or incorrect entries in SMPT. Fixup for other sector sizes configurations will be followed up as needed. Tested on Xilinx Zynq-7000 FPGA board. Signed-off-by: Takahiro Kuwano --- Changes in v12: - Cleanup fixups based on other patches in this series - Add part specific set_4byte_addr_mode() - Unset SNOR_F_4B_OPCODES flag to let core to call set_4byte_addr_mode Changes in v11: - Cleanup fixups based on other patches in this series Changes in v10: - Cleanup fixups and ID table based on other patches in this series Changes in v9: - Use late_init() hook to fix mode clocks and writesize - Use PARSE_SFDP instead of NO_SFDP_FLAGS - Use MFR_FLAGS for USE_CLSR - Add comment block to explain about addr mode in post_bfpt_fixups() Changes in v8: - Call write_disable in error case only - Use spi_nor_read_reg() helper - Use nor->bouncebuf instead of variable on stack - Update ID table to use FLAGS macro Changes in v7: - Add missing device info table in v6 Changes in v6: - Remove 2Gb multi die pacakge support Changes in v5: - Add NO_CHIP_ERASE flag to S25HL02GT and S25HS02GT Changes in v4: - Merge block comments about SMPT in s25hx_t_post_sfdp_fixups() - Remove USE_CLSR flags from S25HL02GT and S25HS02GT Changes in v3: - Remove S25HL256T and S25HS256T - Add S25HL02GT and S25HS02GT - Add support for multi-die package parts support - Remove erase_map fix for top/split sector layout - Set ECC data unit size (16B) to writesize drivers/mtd/spi-nor/spansion.c | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/drivers/mtd/spi-nor/spansion.c b/drivers/mtd/spi-nor/spansion.c index 248fe1b221fd..a1f6631a3449 100644 --- a/drivers/mtd/spi-nor/spansion.c +++ b/drivers/mtd/spi-nor/spansion.c @@ -14,6 +14,7 @@ #define CYPRESS_NOR_OP_CLSR 0x30 /* Clear status register 1 */ #define CYPRESS_NOR_OP_RD_ANY_REG 0x65 /* Read any register */ #define CYPRESS_NOR_OP_WR_ANY_REG 0x71 /* Write any register */ +#define CYPRESS_NOR_OP_EX4B 0xB8 /* Exit 4B Addr Mode */ #define CYPRESS_NOR_OP_RD_FAST 0xee #define CYPRESS_NOR_REG_CFR1V 0x00800002 @@ -45,6 +46,13 @@ SPI_MEM_OP_NO_DUMMY, \ SPI_MEM_OP_NO_DATA) +#define CYPRESS_NOR_EN4B_EX4B_OP(enable) \ + SPI_MEM_OP(SPI_MEM_OP_CMD(enable ? SPINOR_OP_EN4B : \ + CYPRESS_NOR_OP_EX4B, 0), \ + SPI_MEM_OP_NO_ADDR, \ + SPI_MEM_OP_NO_DUMMY, \ + SPI_MEM_OP_NO_DATA) + static int cypress_nor_octal_dtr_en(struct spi_nor *nor) { struct spi_mem_op op; @@ -207,6 +215,46 @@ static int cypress_nor_set_page_size(struct spi_nor *nor) return 0; } +static int s25hx_t_set_4byte_addr_mode(struct spi_nor *nor, bool enable) +{ + struct spi_mem_op op = CYPRESS_NOR_EN4B_EX4B_OP(enable); + + spi_nor_spimem_setup_op(nor, &op, nor->reg_proto); + + return spi_mem_exec_op(nor->spimem, &op); +} + +static int +s25hx_t_post_bfpt_fixups(struct spi_nor *nor, + const struct sfdp_parameter_header *bfpt_header, + const struct sfdp_bfpt *bfpt) +{ + /* EX4B(E9h) is not supported. Use part specific method */ + nor->params->set_4byte_addr_mode = s25hx_t_set_4byte_addr_mode; + + /* Replace Quad Enable with volatile version */ + nor->params->quad_enable = cypress_nor_quad_enable_volatile; + + return cypress_nor_set_page_size(nor); +} + +static void s25hx_t_late_init(struct spi_nor *nor) +{ + /* Fast Read 4B requires mode cycles */ + nor->params->reads[SNOR_CMD_READ_FAST].num_mode_clocks = 8; + + /* The writesize should be ECC data unit size */ + nor->params->writesize = 16; + + /* Read and Write Any Reg ops take 3B or 4B address */ + nor->flags &= ~SNOR_F_4B_OPCODES; +} + +static struct spi_nor_fixups s25hx_t_fixups = { + .post_bfpt = s25hx_t_post_bfpt_fixups, + .late_init = s25hx_t_late_init, +}; + /** * cypress_nor_octal_dtr_enable() - Enable octal DTR on Cypress flashes. * @nor: pointer to a 'struct spi_nor' @@ -383,6 +431,22 @@ static const struct flash_info spansion_nor_parts[] = { { "s25fl256l", INFO(0x016019, 0, 64 * 1024, 512) NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) FIXUP_FLAGS(SPI_NOR_4B_OPCODES) }, + { "s25hl512t", INFO6(0x342a1a, 0x0f0390, 256 * 1024, 256) + PARSE_SFDP + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) + .fixups = &s25hx_t_fixups }, + { "s25hl01gt", INFO6(0x342a1b, 0x0f0390, 256 * 1024, 512) + PARSE_SFDP + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) + .fixups = &s25hx_t_fixups }, + { "s25hs512t", INFO6(0x342b1a, 0x0f0390, 256 * 1024, 256) + PARSE_SFDP + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) + .fixups = &s25hx_t_fixups }, + { "s25hs01gt", INFO6(0x342b1b, 0x0f0390, 256 * 1024, 512) + PARSE_SFDP + MFR_FLAGS(CYPRESS_NOR_USE_CLSR) + .fixups = &s25hx_t_fixups }, { "cy15x104q", INFO6(0x042cc2, 0x7f7f7f, 512 * 1024, 1) FLAGS(SPI_NOR_NO_ERASE) }, { "s28hs512t", INFO(0x345b1a, 0, 256 * 1024, 256)