linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@bootlin.com>
To: Yogesh Narayan Gaur <yogeshnarayan.gaur@nxp.com>
Cc: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>,
	Tudor Ambarus <tudor.ambarus@microchip.com>,
	"marek.vasut@gmail.com" <marek.vasut@gmail.com>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"computersforpeace@gmail.com" <computersforpeace@gmail.com>,
	"richard@nod.at" <richard@nod.at>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"nicolas.ferre@microchip.com" <nicolas.ferre@microchip.com>,
	"cyrille.pitchen@microchip.com" <cyrille.pitchen@microchip.com>,
	"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"Cristian.Birsan@microchip.com" <Cristian.Birsan@microchip.com>
Subject: Re: [PATCH v3 1/2] mtd: spi-nor: add support to non-uniform SFDP SPI NOR flash memories
Date: Wed, 17 Oct 2018 09:07:24 +0200	[thread overview]
Message-ID: <20181017090724.12f2cd79@bbrezillon> (raw)
In-Reply-To: <VI1PR04MB1038AB25EABDC8507984ADC799FF0@VI1PR04MB1038.eurprd04.prod.outlook.com>

On Wed, 17 Oct 2018 02:07:43 +0000
Yogesh Narayan Gaur <yogeshnarayan.gaur@nxp.com> wrote:

> >   
> Actually there is no entry of s25fs512s in current spi-nor.c file.
> For my connected flash part, jedec ID read points to s25fl512s. I
> have asked my board team to confirm the name of exact connected flash
> part. When I check the data sheet of s25fs512s, it also points to the
> same Jedec ID information. { "s25fl512s",  INFO(0x010220, 0x4d00, 256
> * 1024, 256, ....}
> 
> But as stated earlier, if I skip reading SFDP or read using 1-1-1
> protocol then read are always correct. For 1-4-4 protocol read are
> wrong and on further debugging found that Read code of 0x6C is being
> send as opcode instead of 0xEC.
> 
> If I revert this patch, reads are working fine.

Can you try with the following patch?

Also, can you add a trace to check whether you're reaching this point
[1] or not.

[1]https://elixir.bootlin.com/linux/v4.19-rc8/source/drivers/mtd/spi-nor/spi-nor.c#L2227

--->8---
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 9407ca5f9443..49278c1491a6 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -2643,6 +2643,8 @@ static int spi_nor_parse_bfpt(struct spi_nor *nor,
                break;
 
        case BFPT_DWORD1_ADDRESS_BYTES_4_ONLY:
+       case BFPT_DWORD1_ADDRESS_BYTES_3_OR_4:
+               nor->flags |= SNOR_F_4B_OPCODES;
                nor->addr_width = 4;
                break;
 
@@ -3552,7 +3554,7 @@ static int spi_nor_init(struct spi_nor *nor)
 
        if ((nor->addr_width == 4) &&
            (JEDEC_MFR(nor->info) != SNOR_MFR_SPANSION) &&
-           !(nor->info->flags & SPI_NOR_4B_OPCODES)) {
+           !(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
@@ -3586,7 +3588,7 @@ void spi_nor_restore(struct spi_nor *nor)
        /* restore the addressing mode */
        if ((nor->addr_width == 4) &&
            (JEDEC_MFR(nor->info) != SNOR_MFR_SPANSION) &&
-           !(nor->info->flags & SPI_NOR_4B_OPCODES) &&
+           !(nor->flags & SNOR_F_4B_OPCODES) &&
            (nor->flags & SNOR_F_BROKEN_RESET))
                set_4byte(nor, nor->info, 0);
 }
@@ -3724,6 +3726,9 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
        if (info->flags & SPI_NOR_NO_FR)
                params.hwcaps.mask &= ~SNOR_HWCAPS_READ_FAST;
 
+       if (info->flags & SPI_NOR_4B_OPCODES)
+               nor->flags |= SNOR_F_4B_OPCODES;
+
        /*
         * Configure the SPI memory:
         * - select op codes for (Fast) Read, Page Program and Sector Erase.
@@ -3742,13 +3747,16 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
        } else if (mtd->size > 0x1000000) {
                /* enable 4-byte addressing if the device exceeds 16MiB */
                nor->addr_width = 4;
-               if (JEDEC_MFR(info) == SNOR_MFR_SPANSION ||
-                   info->flags & SPI_NOR_4B_OPCODES)
-                       spi_nor_set_4byte_opcodes(nor, info);
+               if (JEDEC_MFR(info) == SNOR_MFR_SPANSION)
+                       nor->flags |= SNOR_F_4B_OPCODES;
        } else {
                nor->addr_width = 3;
        }
 
+       if (info->addr_width == 4 &&
+           nor->flags & SNOR_F_4B_OPCODES)
+               spi_nor_set_4byte_opcodes(nor, info);
+
        if (nor->addr_width > SPI_NOR_MAX_ADDR_WIDTH) {
                dev_err(dev, "address width is too large: %u\n",
                        nor->addr_width);
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index 7f0c7303575e..4ffb165f4f85 100644
--- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h
@@ -236,6 +236,7 @@ enum spi_nor_option_flags {
        SNOR_F_READY_XSR_RDY    = BIT(4),
        SNOR_F_USE_CLSR         = BIT(5),
        SNOR_F_BROKEN_RESET     = BIT(6),
+       SNOR_F_4B_OPCODES       = BIT(7)
 };
 
 /**

  parent reply	other threads:[~2018-10-17  7:07 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-11 15:40 [PATCH v3 0/2] add support to non-uniform SFDP SPI NOR flash memories Tudor Ambarus
2018-09-11 15:40 ` [PATCH v3 1/2] mtd: spi-nor: " Tudor Ambarus
2018-09-11 18:55   ` Marek Vasut
2018-09-17 17:03   ` Tudor Ambarus
2018-10-16  9:51   ` Yogesh Narayan Gaur
2018-10-16 12:04     ` Boris Brezillon
2018-10-16 12:17       ` Boris Brezillon
2018-10-17  1:54         ` Yogesh Narayan Gaur
2018-10-16 15:14     ` Tudor Ambarus
2018-10-16 16:34       ` Cyrille Pitchen
2018-10-17  2:07         ` Yogesh Narayan Gaur
2018-10-17  3:50           ` Yogesh Narayan Gaur
2018-10-17  7:07           ` Boris Brezillon [this message]
2018-10-17  7:10             ` Boris Brezillon
2018-10-17  7:17               ` Boris Brezillon
2018-10-17  7:29               ` Boris Brezillon
2018-10-17  7:46                 ` Yogesh Narayan Gaur
2018-10-17  8:00                   ` Tudor Ambarus
2018-10-17  8:20                     ` Yogesh Narayan Gaur
2018-10-17  8:48                       ` Boris Brezillon
2018-10-17  9:52                   ` Boris Brezillon
2018-10-22  6:04                     ` Yogesh Narayan Gaur
2018-10-22  7:34                       ` Boris Brezillon
2018-10-22  8:01                       ` Boris Brezillon
2018-10-22  8:32                         ` Yogesh Narayan Gaur
2018-10-22  9:09                           ` Boris Brezillon
2018-10-22  8:33                       ` Tudor Ambarus
2018-10-22  9:15                       ` Boris Brezillon
2018-10-22 10:03                         ` Yogesh Narayan Gaur
2018-10-22 10:10                           ` Boris Brezillon
2018-10-22 10:17                             ` Yogesh Narayan Gaur
2018-10-22 10:25                               ` Boris Brezillon
2018-10-22 10:20                           ` Boris Brezillon
2018-10-22 10:26                           ` Boris Brezillon
2018-10-22 10:39                             ` Yogesh Narayan Gaur
2018-10-22 10:46                               ` Boris Brezillon
2018-10-22 10:52                                 ` Boris Brezillon
2018-10-22 11:03                                   ` Yogesh Narayan Gaur
2018-10-22 11:43                                     ` Boris Brezillon
2018-10-22 11:46                                       ` Yogesh Narayan Gaur
2018-10-22 11:52                                         ` Boris Brezillon
2018-10-23  4:47                                           ` Yogesh Narayan Gaur
2018-10-23  5:39                                             ` Boris Brezillon
2018-10-23  8:18                                               ` Yogesh Narayan Gaur
2018-10-23  8:48                                                 ` Boris Brezillon
2018-10-23  8:59                                                   ` Yogesh Narayan Gaur
2018-10-23  9:09                                                     ` Boris Brezillon
2018-10-23  9:01                                                   ` Boris Brezillon
2018-10-23  9:05                                                     ` Yogesh Narayan Gaur
2018-10-23  9:10                                                       ` Boris Brezillon
2018-10-23  9:15                                                         ` Yogesh Narayan Gaur
2018-10-17  9:06           ` Cyrille Pitchen
2018-09-11 15:40 ` [PATCH v3 2/2] mtd: spi-nor: parse SFDP Sector Map Parameter Table Tudor Ambarus
2018-09-11 18:56   ` Marek Vasut
2018-09-18 13:09 ` [PATCH v3 0/2] add support to non-uniform SFDP SPI NOR flash memories Boris Brezillon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181017090724.12f2cd79@bbrezillon \
    --to=boris.brezillon@bootlin.com \
    --cc=Cristian.Birsan@microchip.com \
    --cc=computersforpeace@gmail.com \
    --cc=cyrille.pitchen@microchip.com \
    --cc=cyrille.pitchen@wedev4u.fr \
    --cc=dwmw2@infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=marek.vasut@gmail.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=richard@nod.at \
    --cc=tudor.ambarus@microchip.com \
    --cc=yogeshnarayan.gaur@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).