[PATCH v13 1/4] mtd: spi-nor: Retain nor->addr_width at 4BAIT parse

Tudor.Ambarus at microchip.com Tudor.Ambarus at microchip.com
Thu Apr 21 03:38:27 PDT 2022


On 4/21/22 12:40, tkuw584924 at gmail.com wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> From: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
> 
> In 4BAIT parse, keep nor->addr_width because it may be used as
> current address mode in SMPT parse later on.
> 
> Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano at infineon.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) {

Can we have this instead?

commit 61d73dea7e63db4c7a3ffaa7f2b5068fb71c2d8b
Author: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
Date:   Thu Apr 21 18:40:21 2022 +0900

    mtd: spi-nor: Retain nor->addr_width at 4BAIT parse
    
    In 4BAIT parse, keep nor->addr_width because it may be used as
    current address mode in SMPT parse later on.
    
    Signed-off-by: Takahiro Kuwano <Takahiro.Kuwano at infineon.com>
    Reviewed-by: Tudor Ambarus <tudor.ambarus at microchip.com>

diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index 2bfa84100d38..7095bf897318 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -2272,6 +2272,9 @@ static int spi_nor_default_setup(struct spi_nor *nor,
 
 static int spi_nor_set_addr_width(struct spi_nor *nor)
 {
+       if (nor->flags & SNOR_F_HAS_4BAIT)
+               nor->addr_width = 4;
+
        if (nor->addr_width) {
                /* already configured from SFDP */
        } else if (nor->read_proto == SNOR_PROTO_8_8_8_DTR) {
diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
index a5211543d30d..b2cc3bfe0d5c 100644
--- a/drivers/mtd/spi-nor/sfdp.c
+++ b/drivers/mtd/spi-nor/sfdp.c
@@ -1098,7 +1098,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 */



More information about the linux-mtd mailing list