From: Brian Norris <computersforpeace@gmail.com>
To: bpqw <bpqw@micron.com>
Cc: Marek Vasut <marex@denx.de>,
"geert+renesas@glider.be" <geert+renesas@glider.be>,
"dwmw2@infradead.org" <dwmw2@infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
"grmoore@altera.com" <grmoore@altera.com>,
"shijie8@gmail.com" <shijie8@gmail.com>
Subject: Re: [V5 PATCH 1/1] driver:mtd:spi-nor: Add quad I/O support for Micron spi nor
Date: Wed, 26 Nov 2014 13:12:40 -0800 [thread overview]
Message-ID: <20141126211240.GD21347@ld-irv-0074> (raw)
In-Reply-To: <A765B125120D1346A63912DDE6D8B6315EA24E@NTXXIAMBX02.xacn.micron.com>
First of all, can you fix your mail so that you have a proper 'From'?
That should be your real name (not bpqw), so that it gives a proper
patch author. If you can't get your mail header to have the right
'From:' line, then it also works to begin your mail with:
From: Your Name <your@email.com>
On Thu, Nov 06, 2014 at 03:09:06AM +0000, bpqw wrote:
> This patch adds code which enables Quad I/O mode on Micron SPI NOR flashes.
>
> For Micron SPI NOR flash,enabling or disabling quad I/O protocol is controlled
> by EVCR (Enhanced Volatile Configuration Register), Quad I/O protocol bit 7.
> When EVCR bit 7 is reset to 0,the SPI NOR flash will operate in quad I/O mode.
What's the difference between using EVCR and the ENTER QUAD I/O MODE
(35h) command I see in some of your datasheets? Are both supported on
all Micron quad I/O SPI NOR flash?
Also, which SPI NOR is this enabled for? I don't see any Micron entries
in spi_nor_ids[] which contain the SPI_NOR_QUAD_READ flag.
> Signed-off-by: bean huo <beanhuo@micron.com>
> Acked-by: Marek Vasut <marex@denx.de>
> ---
> v1-v2:
> Modified to that capture wait_till_ready()
> return value,if error,directly return its
> the value.
> v2-v3:
> Directly use the reurning error value of
> read_reg and write_reg,instead of -EINVAL.
> v3-v4:
> Modify commit logs that wraped into 80 columns
> v4-v5:
> Rebuild new patch based on latest linux-mtd
Please rebase on l2-mtd.git. Sorry if that wasn't clear earlier.
> drivers/mtd/spi-nor/spi-nor.c | 46 +++++++++++++++++++++++++++++++++++++++++
> include/linux/mtd/spi-nor.h | 6 ++++++
> 2 files changed, 52 insertions(+)
>
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index c51ee52..2a31742 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -874,6 +874,45 @@ static int spansion_quad_enable(struct spi_nor *nor)
> return 0;
> }
>
> +static int micron_quad_enable(struct spi_nor *nor)
> +{
> + int ret, val;
> +
> + ret = nor->read_reg(nor, SPINOR_OP_RD_EVCR, &val, 1);
> + if (ret < 0) {
> + dev_err(nor->dev, "error %d reading EVCR\n", ret);
> + return ret;
> + }
> +
> + write_enable(nor);
> +
> + /* set EVCR ,enable quad I/O */
> + nor->cmd_buf[0] = val & ~EVCR_QUAD_EN_MICRON;
> + ret = nor->write_reg(nor, SPINOR_OP_WD_EVCR, nor->cmd_buf, 1, 0);
> + if (ret < 0) {
> + dev_err(nor->dev,
> + "error while writing EVCR register\n");
Join the above two lines?
> + return ret;
> + }
> +
> + ret = wait_till_ready(nor);
It's spi_nor_wait_till_ready(), now.
> + if (ret)
> + return ret;
> +
> + /* read EVCR and check it */
> + ret = nor->read_reg(nor, SPINOR_OP_RD_EVCR, &val, 1);
> + if (ret < 0) {
> + dev_err(nor->dev, "error %d reading EVCR\n", ret);
> + return ret;
> + }
> + if (val & EVCR_QUAD_EN_MICRON) {
> + dev_err(nor->dev, "Micron EVCR Quad bit not clear\n");
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static int set_quad_mode(struct spi_nor *nor, u32 jedec_id)
> {
> int status;
> @@ -886,6 +925,13 @@ static int set_quad_mode(struct spi_nor *nor, u32 jedec_id)
> return -EINVAL;
> }
> return status;
> + case CFI_MFR_ST:
> + status = micron_quad_enable(nor);
> + if (status) {
> + dev_err(nor->dev, "Micron quad-read not enabled\n");
> + return -EINVAL;
> + }
> + return status;
> default:
> status = spansion_quad_enable(nor);
> if (status) {
> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
> index 046a0a2..42e7e37 100644
> --- a/include/linux/mtd/spi-nor.h
> +++ b/include/linux/mtd/spi-nor.h
> @@ -56,6 +56,10 @@
> /* Used for Spansion flashes only. */
> #define SPINOR_OP_BRWR 0x17 /* Bank register write */
>
> +/* Used for Micron flashes only. */
> +#define SPINOR_OP_RD_EVCR 0x65 /* Read EVCR register */
> +#define SPINOR_OP_WD_EVCR 0x61 /* Write EVCR register */
> +
> /* Status Register bits. */
> #define SR_WIP 1 /* Write in progress */
> #define SR_WEL 2 /* Write enable latch */
> @@ -67,6 +71,8 @@
>
> #define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */
>
> +#define EVCR_QUAD_EN_MICRON 0x80 /* Micron Quad I/O */
Like with other register bitfields (SR, FSR), please place a comment
above to describe the register, like:
/* Enhanced Volatile Configuration Register bits */
> +
> /* Flag Status Register bits */
> #define FSR_READY 0x80
>
Brian
next prev parent reply other threads:[~2014-11-26 21:13 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-25 6:20 [PATCH 1/1] driver:mtd:spi-nor: Add Micron quad I/O support bpqw
2014-09-25 10:11 ` Marek Vasut
2014-09-26 8:39 ` bpqw
2014-09-26 8:46 ` Marek Vasut
2014-09-28 1:59 ` [PATCH 1/1 v2] " bpqw
2014-09-28 22:43 ` Marek Vasut
2014-09-29 0:30 ` bpqw
2014-09-29 18:57 ` Marek Vasut
2014-09-30 2:47 ` [PATCH 1/1 v3] " Bean Huo 霍斌斌 (beanhuo)
2014-09-30 13:38 ` Marek Vasut
2014-10-01 14:24 ` Bean Huo 霍斌斌 (beanhuo)
2014-10-01 14:32 ` Marek Vasut
2014-10-01 14:28 ` bpqw
2014-10-01 14:33 ` Marek Vasut
2014-10-04 5:55 ` bpqw
2014-10-16 1:53 ` bpqw
2014-10-17 0:37 ` Bean Huo 霍斌斌 (beanhuo)
2014-10-20 1:24 ` bpqw
2014-10-23 0:58 ` Bean Huo 霍斌斌 (beanhuo)
2014-10-24 0:31 ` Bean Huo 霍斌斌 (beanhuo)
2014-10-27 0:09 ` [PATCH 1/1 v3] driver:mtd:spi-nor: Add quad I/O support for Micron spi nor bpqw
2014-10-30 14:31 ` bpqw
2014-11-12 20:59 ` Jagan Teki
2014-11-04 13:25 ` [PATCH 1/1 v4] " bpqw
2014-11-05 11:26 ` Brian Norris
2014-11-06 2:56 ` bpqw
2014-11-06 3:09 ` [V5 PATCH 1/1] " bpqw
[not found] ` <54613259.4070903@opensource.altera.com>
2014-11-11 19:41 ` Graham Moore
2014-11-11 21:55 ` Jagan Teki
2014-11-12 1:19 ` bpqw
2014-11-12 0:58 ` bpqw
2014-11-13 16:26 ` Graham Moore
2014-11-14 2:06 ` bpqw
2014-11-26 4:06 ` Brian Norris
2014-11-26 16:08 ` bpqw
2014-11-26 21:12 ` Brian Norris [this message]
2014-11-27 5:55 ` bpqw
2014-11-27 9:14 ` Brian Norris
2014-11-30 16:11 ` Bean Huo 霍斌斌 (beanhuo)
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=20141126211240.GD21347@ld-irv-0074 \
--to=computersforpeace@gmail.com \
--cc=bpqw@micron.com \
--cc=dwmw2@infradead.org \
--cc=geert+renesas@glider.be \
--cc=grmoore@altera.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marex@denx.de \
--cc=shijie8@gmail.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