All of lore.kernel.org
 help / color / mirror / Atom feed
From: liao jaime <jaimeliao.tw@gmail.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: u-boot@lists.denx.de, Jagan Teki <jagan@amarulasolutions.com>,
	vigneshr@ti.com, zhengxunli@mxic.com.tw, jaimeliao@mxic.com.tw
Subject: Re: [PATCH v6 1/4] mtd: spi-nor: macronix: add support for Macronix Octal
Date: Thu, 6 Jan 2022 09:20:30 +0800	[thread overview]
Message-ID: <CAAQoYRkctvye29QBpt137c2SpYWiuAeuf9kaFaSXN9J6=HBSAA@mail.gmail.com> (raw)
In-Reply-To: <20220103102858.23131890@xps13>

Hi Miquel


>
> Hi Jaime,
>
> You made a typo on Jagan's address, you might need to resend.
Yes your are right, I have re-send the cover letter to Jagan.

>
> The title does not look correct, maybe you miss a word after Octal. And
> is it something Macronix specific? I believe this is generic and you
> can drop "Macronix" (the second occurrence) from the title.
Ok got it.
>
> jaimeliao.tw@gmail.com wrote on Wed, 29 Dec 2021 13:56:17 +0800:
>
> > Follow patch "f6adec1af4b2f5d3012480c6cdce7743b74a6156" for adding
>
> When pointing to an upstream commit I think even in U-Boot the style
> should be something like:
> <12-digit hash> ("title of the commit")
> which at least allows to know which commit we are talking about.
OK.

>
> > Macronix flash in Octal DTR mode.
>
> This first part of the commit log should be moved below.
>
> >
> > Enable Octal DTR mode with 20 dummy cycles to allow running at the
> > maximum supported frequency.
> >  -https://www.mxic.com.tw/Lists/Datasheet/Attachments/7841/MX25LM51245G,%203V,%20512Mb,%20v1.1.pdf
> >
> > Signed-off-by: JaimeLiao <jaimeliao.tw@gmail.com>
> > ---
> >  drivers/mtd/spi/spi-nor-core.c | 83 ++++++++++++++++++++++++++++++++++
> >  include/linux/mtd/spi-nor.h    | 12 ++++-
> >  2 files changed, 93 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
> > index d5d905fa5a..0a6550984b 100644
> > --- a/drivers/mtd/spi/spi-nor-core.c
> > +++ b/drivers/mtd/spi/spi-nor-core.c
> > @@ -3489,6 +3489,85 @@ static struct spi_nor_fixups mt35xu512aba_fixups = {
> >  };
> >  #endif /* CONFIG_SPI_FLASH_MT35XU */
> >
> > +#if CONFIG_IS_ENABLED(SPI_FLASH_MACRONIX)
> > +/**
> > + * spi_nor_macronix_octal_dtr_enable() - set DTR OPI Enable bit in Configuration Register 2.
>
> This is very specific to Macronix I believe? Please just use a generic
> description here.
Yes I will modify this part next patch.

>
> > + * @nor:     pointer to a 'struct spi_nor'
> > + *
> > + * Set the DTR OPI Enable (DOPI) bit in Configuration Register 2.
> > + * Bit 2 of  Configuration Register 2 is the DOPI bit for Macronix like OPI memories.
> > + *
> > + * Return: 0 on success, -errno otherwise.
> > + */
> > +static int spi_nor_macronix_octal_dtr_enable(struct spi_nor *nor)
> > +{
> > +     struct spi_mem_op op;
> > +     int ret;
> > +     u8 buf;
> > +
> > +     ret = write_enable(nor);
> > +     if (ret)
> > +             return ret;
> > +
> > +     buf = SPINOR_REG_MXIC_DC_20;
> > +     op = (struct spi_mem_op)
> > +             SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WR_CR2, 1),
> > +                        SPI_MEM_OP_ADDR(4, SPINOR_REG_MXIC_CR2_DC, 1),
> > +                        SPI_MEM_OP_NO_DUMMY,
> > +                        SPI_MEM_OP_DATA_OUT(1, &buf, 1));
> > +
> > +     ret = spi_mem_exec_op(nor->spi, &op);
> > +     if (ret)
> > +             return ret;
> > +
> > +     ret = spi_nor_wait_till_ready(nor);
> > +     if (ret)
> > +             return ret;
> > +
> > +     nor->read_dummy = MXIC_MAX_DC;
> > +     ret = write_enable(nor);
> > +     if (ret)
> > +             return ret;
> > +
> > +     buf = SPINOR_REG_MXIC_OPI_DTR_EN;
> > +     op = (struct spi_mem_op)
> > +             SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_WR_CR2, 1),
> > +                        SPI_MEM_OP_ADDR(4, SPINOR_REG_MXIC_CR2_MODE, 1),
> > +                        SPI_MEM_OP_NO_DUMMY,
> > +                        SPI_MEM_OP_DATA_OUT(1, &buf, 1));
> > +
> > +     ret = spi_mem_exec_op(nor->spi, &op);
> > +     if (ret) {
> > +             dev_err(nor->dev, "Failed to enable octal DTR mode\n");
> > +             return ret;
> > +     }
> > +     nor->reg_proto = SNOR_PROTO_8_8_8_DTR;
> > +
> > +     return 0;
> > +}
> > +
> > +static void macronix_octal_default_init(struct spi_nor *nor)
> > +{
> > +     nor->octal_dtr_enable = spi_nor_macronix_octal_dtr_enable;
> > +}
> > +
> > +static void macronix_octal_post_sfdp_fixup(struct spi_nor *nor,
> > +                                      struct spi_nor_flash_parameter *params)
> > +{
> > +     /*
> > +      * Adding SNOR_HWCAPS_PP_8_8_8_DTR in hwcaps.mask when
> > +      * SPI_NOR_OCTAL_DTR_READ flag exists.
> > +      */
> > +     if (params->hwcaps.mask & SNOR_HWCAPS_READ_8_8_8_DTR)
> > +             params->hwcaps.mask |= SNOR_HWCAPS_PP_8_8_8_DTR;
> > +}
> > +
> > +static struct spi_nor_fixups macronix_octal_fixups = {
> > +     .default_init = macronix_octal_default_init,
> > +     .post_sfdp = macronix_octal_post_sfdp_fixup,
> > +};
> > +#endif /* CONFIG_SPI_FLASH_MACRONIX */
> > +
> >  /** spi_nor_octal_dtr_enable() - enable Octal DTR I/O if needed
> >   * @nor:                 pointer to a 'struct spi_nor'
> >   *
> > @@ -3655,6 +3734,10 @@ void spi_nor_set_fixups(struct spi_nor *nor)
> >       if (!strcmp(nor->info->name, "mt35xu512aba"))
> >               nor->fixups = &mt35xu512aba_fixups;
> >  #endif
> > +
> > +#if CONFIG_IS_ENABLED(SPI_FLASH_MACRONIX)
> > +     nor->fixups = &macronix_octal_fixups;
> > +#endif /* SPI_FLASH_MACRONIX */
> >  }
> >
> >  int spi_nor_scan(struct spi_nor *nor)
> > diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
> > index 7ddc4ba2bf..8682368f2f 100644
> > --- a/include/linux/mtd/spi-nor.h
> > +++ b/include/linux/mtd/spi-nor.h
> > @@ -116,8 +116,16 @@
> >  #define XSR_RDY                      BIT(7)  /* Ready */
> >
> >  /* Used for Macronix and Winbond flashes. */
> > -#define SPINOR_OP_EN4B               0xb7    /* Enter 4-byte mode */
> > -#define SPINOR_OP_EX4B               0xe9    /* Exit 4-byte mode */
> > +#define SPINOR_OP_EN4B                       0xb7            /* Enter 4-byte mode */
> > +#define SPINOR_OP_EX4B                       0xe9            /* Exit 4-byte mode */
> > +#define SPINOR_OP_RD_CR2             0x71            /* Read configuration register 2 */
> > +#define SPINOR_OP_WR_CR2             0x72            /* Write configuration register 2 */
> > +#define SPINOR_OP_MXIC_DTR_RD                0xee            /* Fast Read opcode in DTR mode */
> > +#define SPINOR_REG_MXIC_CR2_MODE     0x00000000      /* For setting octal DTR mode */
> > +#define SPINOR_REG_MXIC_OPI_DTR_EN   0x2             /* Enable Octal DTR */
> > +#define SPINOR_REG_MXIC_CR2_DC               0x00000300      /* For setting dummy cycles */
> > +#define SPINOR_REG_MXIC_DC_20                0x0             /* Setting dummy cycles to 20 */
> > +#define MXIC_MAX_DC                  20              /* Maximum value of dummy cycles */
> >
> >  /* Used for Spansion flashes only. */
> >  #define SPINOR_OP_BRWR               0x17    /* Bank register write */
>
>
> Thanks,
> Miquèl

Thanks
Jaime

  reply	other threads:[~2022-01-06  1:20 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-29  5:56 [PATCH v6 0/4] Add octal DTR support for Macronix flash JaimeLiao
2021-12-29  5:56 ` [PATCH v6 1/4] mtd: spi-nor: macronix: add support for Macronix Octal JaimeLiao
2022-01-03  9:30   ` Miquel Raynal
2022-01-06  1:20     ` liao jaime [this message]
2022-01-03 10:38   ` Tudor.Ambarus
2022-01-06  1:57     ` liao jaime
2022-01-10  5:27     ` Pratyush Yadav
2021-12-29  5:56 ` [PATCH v6 2/4] mtd: spi-nor-core: Adding different type of command extension in Soft Reset JaimeLiao
2021-12-29  5:56 ` [PATCH v6 3/4] mtd: spi-nor-core: Add support for Macronix Octal flash JaimeLiao
2022-01-03 10:47   ` Tudor.Ambarus
2022-01-10  5:29     ` Pratyush Yadav
2022-01-14  3:08       ` liao jaime
2021-12-29  5:56 ` [PATCH v6 4/4] mtd: spi-nor: Parse SFDP SCCR Map JaimeLiao

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='CAAQoYRkctvye29QBpt137c2SpYWiuAeuf9kaFaSXN9J6=HBSAA@mail.gmail.com' \
    --to=jaimeliao.tw@gmail.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jaimeliao@mxic.com.tw \
    --cc=miquel.raynal@bootlin.com \
    --cc=u-boot@lists.denx.de \
    --cc=vigneshr@ti.com \
    --cc=zhengxunli@mxic.com.tw \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.