Message ID | 20221128172455.159787-1-nathan.morrison@timesys.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp5836220wrr; Mon, 28 Nov 2022 09:38:49 -0800 (PST) X-Google-Smtp-Source: AA0mqf5U5+Snkltwto8PfK01yKyJD3CxAeqznf3RKhvDFX8+itmAfpQhMghdkqKIuSgp5P0Cs5/y X-Received: by 2002:aa7:cf03:0:b0:46b:35dc:cf4d with SMTP id a3-20020aa7cf03000000b0046b35dccf4dmr5162367edy.423.1669657128724; Mon, 28 Nov 2022 09:38:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669657128; cv=none; d=google.com; s=arc-20160816; b=zT+8k8MnDfOJUk9ekGsO4W3Yh6T+QAkld5zcSLnx9srPdTn/8zjb2zNAjP7MVyxy5n rSd7faOZRVUFRIfUl6kFKV+k+6p+P21qKwZKjwWwAhnrlNv7QWZKXuzg9IAT9/W99cUV xDvYNhkhIJhZHOOs2gaHYFHHr9ghIw93Yv3LEMZFz/ycLYRyCYiKbWUqDyjOjNEOZ+4Q JoDkek6R9WHMWwIOBCmUXMqfzNUommpYKOzw95T9A651M+p3E51vWKJUmUYJ0FMCP+EN QyJJKRQcH/dU5USsdrtm0Tlgqrs1jgm+ZYsVjcdmFtUFxpmfylEg8AZ9K47dUiW6Wr78 2iKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:content-transfer-encoding:mime-version :message-id:date:subject:cc:from:dkim-signature; bh=WISYZ1L8dfjkhr9HPz2HhCPMd5gq2zqE5S/0zz5aWa0=; b=RCMTiSereljxGTrg9+CEpm2gEtfC5NhxmtvHcjGtfTSD6wYKS0A5DMCPnYUKaFqOpL kBAqnf8waGH7pLZNMYibjByC1IeoJugNlAxFFEIOP8PuujstC5jlFBgXo1YS/6NrjxSR 0ltKoTKJ/8g0ikZZ6WdN92BwYsmuyR5SsclasqiNohYl6pl5OJmDYTmjadDNZMVLJyIl r1aISglYQxTF7iPlgMRGvXoMBL0NnngX+ucp+hNv9chWgA/zwXukY95HWc6cx5VTK/5B WCl57OUzjRMH0/BSSI4GehaAJK5taY8ITYYgHqEoVf3dezRYQMofaAkgBozsg4EqGcWk +7kQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@timesys-com.20210112.gappssmtp.com header.s=20210112 header.b=hcx970gP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hg2-20020a1709072cc200b007ae9abf1994si10878864ejc.837.2022.11.28.09.38.25; Mon, 28 Nov 2022 09:38:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=fail header.i=@timesys-com.20210112.gappssmtp.com header.s=20210112 header.b=hcx970gP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232926AbiK1RZG (ORCPT <rfc822;gah0developer@gmail.com> + 99 others); Mon, 28 Nov 2022 12:25:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232429AbiK1RZE (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 28 Nov 2022 12:25:04 -0500 Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A176D1EAEE for <linux-kernel@vger.kernel.org>; Mon, 28 Nov 2022 09:25:03 -0800 (PST) Received: by mail-qk1-x730.google.com with SMTP id x18so7783095qki.4 for <linux-kernel@vger.kernel.org>; Mon, 28 Nov 2022 09:25:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timesys-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=WISYZ1L8dfjkhr9HPz2HhCPMd5gq2zqE5S/0zz5aWa0=; b=hcx970gPX8djEoRWtYW0NHM3NG3c5io9Z9ad1LPZUPufe2wTe0GoeT1ULY2q0sjog7 NncYkw5V+5VopZJInbOAWSlwue7xv6ssNaSdX5RMpm1CWKFEwvqeHvqNdotA32Ug6/Nj SCcBemXPE/DvCahfHVNKFZFrtEMLnF1hGcWuMS0qjtL5qMTkRQabXULrNw40xHY6K0T/ hnooEZ1UjrCmv3U+mNOldEaKxF8/sDX5HYBFXeaKHCnSOzlmbTe+GNfXB5Jly9q66nfZ OElGWiZxz02rWn3kQW5D0ru7zZEKl1aYBwyt3LAk17NUxUAW604R1mCCo9WnT4cwTO/G xKPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=WISYZ1L8dfjkhr9HPz2HhCPMd5gq2zqE5S/0zz5aWa0=; b=srBDIKg1JJATVWW3qzNdqEqnb4goCYldoLO2lABQiaihM6L5cnRuTTDnqBn1tLnL2C BD41oxPZL6z80Q0mHbgCO1pmTGLbASNUxv/csvTXblkMehNkBgMAYHL+i2Umwgmp44yU dwCbBdHhdHh/uCd1pTYVlQSsUcicQh2Lb6oGyy13cBDzEYmSOnXPWBJlrzry0aW362fq SMi/fBXPQFa6dAKKKZ6Y/x+PXfrOC2aAk41f3dN2T5pHe05+6Venbo2FmbDsJz4R9H7N /+iKecgTjdB1UX5+xlLDsm8KU/cWDvB2cWM+7vDc3iOUleqLz425W6buAeeJjSxxRsDp 2fkQ== X-Gm-Message-State: ANoB5pkIEEThaOPCNQZUgRLl/Pogv3uOp7W4LpIcwCaHoKuVSMtzR9yS R00hCdpm1KY6PpNtdE/jZ8N4eg== X-Received: by 2002:a05:620a:271f:b0:6fc:15c2:c4a8 with SMTP id b31-20020a05620a271f00b006fc15c2c4a8mr27490322qkp.174.1669656302813; Mon, 28 Nov 2022 09:25:02 -0800 (PST) Received: from nathan-ideapad.. (d-75-76-18-234.oh.cpe.breezeline.net. [75.76.18.234]) by smtp.gmail.com with ESMTPSA id r9-20020a05622a034900b003a526675c07sm7322712qtw.52.2022.11.28.09.25.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Nov 2022 09:25:02 -0800 (PST) From: Nathan Barrett-Morrison <nathan.morrison@timesys.com> Cc: nathan.morrison@timesys.com, greg.malysa@timesys.com, Tudor Ambarus <tudor.ambarus@microchip.com>, Pratyush Yadav <pratyush@kernel.org>, Michael Walle <michael@walle.cc>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, linux-mtd@lists.infradead.org (open list:SPI NOR SUBSYSTEM), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] mtd: spi-nor: issi: Add in support for IS25LX256 chip, operating in 1S-1S-8S mode. Date: Mon, 28 Nov 2022 12:24:54 -0500 Message-Id: <20221128172455.159787-1-nathan.morrison@timesys.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750762393137609606?= X-GMAIL-MSGID: =?utf-8?q?1750762393137609606?= |
Series |
mtd: spi-nor: issi: Add in support for IS25LX256 chip, operating in 1S-1S-8S mode.
|
|
Commit Message
Nathan Barrett-Morrison
Nov. 28, 2022, 5:24 p.m. UTC
Adds the is25lx256 entry to the nor_parts table along with the additional
fixup logic to operate in 1S-1S-8S mode while programming.
Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
---
drivers/mtd/spi-nor/issi.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
Comments
Am 2022-11-28 18:24, schrieb Nathan Barrett-Morrison: > Adds the is25lx256 entry to the nor_parts table along with the > additional > fixup logic to operate in 1S-1S-8S mode while programming. > > Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com> > --- > drivers/mtd/spi-nor/issi.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/mtd/spi-nor/issi.c b/drivers/mtd/spi-nor/issi.c > index 89a66a19d754..e9b32b726bf3 100644 > --- a/drivers/mtd/spi-nor/issi.c > +++ b/drivers/mtd/spi-nor/issi.c > @@ -29,6 +29,21 @@ static const struct spi_nor_fixups is25lp256_fixups > = { > .post_bfpt = is25lp256_post_bfpt_fixups, > }; > > +static void is25lx256_post_sfdp_fixup(struct spi_nor *nor) > +{ > + /* Fixup page program command to 1S-1S-8S */ > + nor->params->hwcaps.mask |= SNOR_HWCAPS_PP_1_1_8; > + spi_nor_set_pp_settings(&nor->params->page_programs[SNOR_CMD_PP_1_1_8], > + SPINOR_OP_PP_1_1_8, SNOR_PROTO_1_1_8); Does this flash have SFDP data? If possible, this should be derived from that. Could you dump the SFDP table and post it here [1]. > + > + /* Disable quad_enable */ > + nor->params->quad_enable = NULL; why? > +} > + > +static struct spi_nor_fixups is25lx256_fixups = { > + .post_sfdp = is25lx256_post_sfdp_fixup, > +}; > + > static void pm25lv_nor_late_init(struct spi_nor *nor) > { > struct spi_nor_erase_map *map = &nor->params->erase_map; > @@ -74,6 +89,10 @@ static const struct flash_info issi_nor_parts[] = { > NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) > FIXUP_FLAGS(SPI_NOR_4B_OPCODES) > .fixups = &is25lp256_fixups }, > + { "is25lx256", INFO(0x9d5a19, 0, 128 * 1024, 256) > + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_OCTAL_READ) > + FIXUP_FLAGS(SPI_NOR_4B_OPCODES) > + .fixups = &is25lx256_fixups }, > > /* PMC */ > { "pm25lv512", INFO(0, 0, 32 * 1024, 2) -michael [1] https://lore.kernel.org/linux-mtd/4304e19f3399a0a6e856119d01ccabe0@walle.cc/
Hi Michael, > Does this flash have SFDP data? If possible, this should be > derived from that. Could you dump the SFDP table and > post it here [1]. # hexdump sfdp 0000000 4653 5044 0106 ff01 0600 1001 0030 ff00 0000010 0084 0201 0080 ff00 ffff ffff ffff ffff 0000020 ffff ffff ffff ffff ffff ffff ffff ffff 0000030 20e5 ff8a ffff 0fff 0000 0000 0000 0000 0000040 fffe ffff ffff ff00 ffff 0000 200c d811 0000050 520f ff00 2224 00a9 8e8b d103 01ac 3827 0000060 757a 757a bdfb 5cd5 0000 ff70 b081 2238 0000070 ffff ffff ffff ffff ffff ffff ffff ffff 0000080 0e43 ffff dc21 ff5c Looking at the latest SFDP document from https://www.jedec.org/standards-documents/docs/jesd216b, I see 1s-1s-8s would be in BFPT DWORD 17, which appears to be 0xffffffff if I'm reading this hexdump correctly. > why? This was because ISSI's default_init was setting a quad_enable function pointer which is not relevant to this part. This probably doesn't need to be done though, as SPI_NOR_QUAD_* isn't being set in the flash_info table and therefore quad_enable will never be used? Sincerely, Nathan On Wed, Nov 30, 2022 at 3:45 AM Michael Walle <michael@walle.cc> wrote: > > Am 2022-11-28 18:24, schrieb Nathan Barrett-Morrison: > > Adds the is25lx256 entry to the nor_parts table along with the > > additional > > fixup logic to operate in 1S-1S-8S mode while programming. > > > > Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com> > > --- > > drivers/mtd/spi-nor/issi.c | 19 +++++++++++++++++++ > > 1 file changed, 19 insertions(+) > > > > diff --git a/drivers/mtd/spi-nor/issi.c b/drivers/mtd/spi-nor/issi.c > > index 89a66a19d754..e9b32b726bf3 100644 > > --- a/drivers/mtd/spi-nor/issi.c > > +++ b/drivers/mtd/spi-nor/issi.c > > @@ -29,6 +29,21 @@ static const struct spi_nor_fixups is25lp256_fixups > > = { > > .post_bfpt = is25lp256_post_bfpt_fixups, > > }; > > > > +static void is25lx256_post_sfdp_fixup(struct spi_nor *nor) > > +{ > > + /* Fixup page program command to 1S-1S-8S */ > > + nor->params->hwcaps.mask |= SNOR_HWCAPS_PP_1_1_8; > > + spi_nor_set_pp_settings(&nor->params->page_programs[SNOR_CMD_PP_1_1_8], > > + SPINOR_OP_PP_1_1_8, SNOR_PROTO_1_1_8); > > Does this flash have SFDP data? If possible, this should be > derived from that. Could you dump the SFDP table and > post it here [1]. > > > + > > + /* Disable quad_enable */ > > + nor->params->quad_enable = NULL; > > why? > > > +} > > + > > +static struct spi_nor_fixups is25lx256_fixups = { > > + .post_sfdp = is25lx256_post_sfdp_fixup, > > +}; > > + > > static void pm25lv_nor_late_init(struct spi_nor *nor) > > { > > struct spi_nor_erase_map *map = &nor->params->erase_map; > > @@ -74,6 +89,10 @@ static const struct flash_info issi_nor_parts[] = { > > NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) > > FIXUP_FLAGS(SPI_NOR_4B_OPCODES) > > .fixups = &is25lp256_fixups }, > > + { "is25lx256", INFO(0x9d5a19, 0, 128 * 1024, 256) > > + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_OCTAL_READ) > > + FIXUP_FLAGS(SPI_NOR_4B_OPCODES) > > + .fixups = &is25lx256_fixups }, > > > > /* PMC */ > > { "pm25lv512", INFO(0, 0, 32 * 1024, 2) > > -michael > > [1] > https://lore.kernel.org/linux-mtd/4304e19f3399a0a6e856119d01ccabe0@walle.cc/
Hi, Am 2022-11-30 16:34, schrieb Nathan Barrett-Morrison: >> Does this flash have SFDP data? If possible, this should be >> derived from that. Could you dump the SFDP table and >> post it here [1]. > > # hexdump sfdp > 0000000 4653 5044 0106 ff01 0600 1001 0030 ff00 > 0000010 0084 0201 0080 ff00 ffff ffff ffff ffff > 0000020 ffff ffff ffff ffff ffff ffff ffff ffff > 0000030 20e5 ff8a ffff 0fff 0000 0000 0000 0000 > 0000040 fffe ffff ffff ff00 ffff 0000 200c d811 > 0000050 520f ff00 2224 00a9 8e8b d103 01ac 3827 > 0000060 757a 757a bdfb 5cd5 0000 ff70 b081 2238 > 0000070 ffff ffff ffff ffff ffff ffff ffff ffff > 0000080 0e43 ffff dc21 ff5c > > Looking at the latest SFDP document from > https://www.jedec.org/standards-documents/docs/jesd216b, I see > 1s-1s-8s would be in BFPT DWORD 17, which appears to be 0xffffffff if > I'm reading this hexdump correctly. There is no dword 17, the table is shorter than that. But there is a 4BAIT table at the end, starting at offset 80h. And from what I can parse with my sleepy eyes, it says "support for 1s-1s-8s via 7Ch" and "support for 1s-8s-8s via CCh", which is consistent with the datasheet. So all you'd need to do is to extend the sfdp parser to parse that modes in the 4bait table. Btw there is a newer JESD216F (you can get it from JEDEC for free, you just have to sign up there). >> why? > > This was because ISSI's default_init was setting a quad_enable > function pointer which is not relevant to this part. This probably > doesn't need to be done though, as SPI_NOR_QUAD_* isn't being set in > the flash_info table and therefore quad_enable will never be used? Yes. The SFDP specifies 111b as the enable method which is reserved according to JESD216F. I still vote for setting the quad_enable to NULL if there is SFDP which should know better. This should be "fixed" (IOW unset) by the following patch (but it never made it): https://lore.kernel.org/linux-mtd/20220304185137.3376011-1-michael@walle.cc/ -michael
diff --git a/drivers/mtd/spi-nor/issi.c b/drivers/mtd/spi-nor/issi.c index 89a66a19d754..e9b32b726bf3 100644 --- a/drivers/mtd/spi-nor/issi.c +++ b/drivers/mtd/spi-nor/issi.c @@ -29,6 +29,21 @@ static const struct spi_nor_fixups is25lp256_fixups = { .post_bfpt = is25lp256_post_bfpt_fixups, }; +static void is25lx256_post_sfdp_fixup(struct spi_nor *nor) +{ + /* Fixup page program command to 1S-1S-8S */ + nor->params->hwcaps.mask |= SNOR_HWCAPS_PP_1_1_8; + spi_nor_set_pp_settings(&nor->params->page_programs[SNOR_CMD_PP_1_1_8], + SPINOR_OP_PP_1_1_8, SNOR_PROTO_1_1_8); + + /* Disable quad_enable */ + nor->params->quad_enable = NULL; +} + +static struct spi_nor_fixups is25lx256_fixups = { + .post_sfdp = is25lx256_post_sfdp_fixup, +}; + static void pm25lv_nor_late_init(struct spi_nor *nor) { struct spi_nor_erase_map *map = &nor->params->erase_map; @@ -74,6 +89,10 @@ static const struct flash_info issi_nor_parts[] = { NO_SFDP_FLAGS(SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) FIXUP_FLAGS(SPI_NOR_4B_OPCODES) .fixups = &is25lp256_fixups }, + { "is25lx256", INFO(0x9d5a19, 0, 128 * 1024, 256) + NO_SFDP_FLAGS(SECT_4K | SPI_NOR_OCTAL_READ) + FIXUP_FLAGS(SPI_NOR_4B_OPCODES) + .fixups = &is25lx256_fixups }, /* PMC */ { "pm25lv512", INFO(0, 0, 32 * 1024, 2)