From: Marek Vasut <marex@denx.de>
To: Sourav Poddar <sourav.poddar@ti.com>
Cc: computersforpeace@gmail.com, linux-mtd@lists.infradead.org,
balbi@ti.com, dedekind1@gmail.com
Subject: Re: [PATCH] drivers: mtd: m25p80: Add quad read support.
Date: Sun, 27 Oct 2013 17:45:16 +0100 [thread overview]
Message-ID: <201310271745.17152.marex@denx.de> (raw)
In-Reply-To: <1382693145-15750-1-git-send-email-sourav.poddar@ti.com>
Dear Sourav Poddar,
[...]
> +static int macronix_quad_enable(struct m25p *flash)
> +{
> + int ret, val;
> + u8 cmd[2];
> + cmd[0] = OPCODE_WRSR;
> +
> + val = read_sr(flash);
> + cmd[1] = val | SR_QUAD_EN_MX;
> + write_enable(flash);
> +
> + spi_write(flash->spi, &cmd, 2);
> +
> + if (wait_till_ready(flash))
> + return 1;
> +
> + ret = read_sr(flash);
Maybe read_sr() and read_cr() shall be fixed to return retval only and the val
shall be passed to them as an argument pointer? Aka. ret = read_sr(flash, &val);
That way, this dangerous construct below could become:
if (!(val & SR_....)) {
dev_err();
ret = -EINVAL;
}
return ret;
It will also let us prevent mixing of error codes and register values, which is
pretty ugly practice.
> + if (!(ret > 0 && (ret & SR_QUAD_EN_MX))) {
> + dev_err(&flash->spi->dev,
> + "Macronix Quad bit not set");
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
[...]
> +static inline int set_quad_mode(struct m25p *flash, u32 jedec_id)
> +{
> + int status;
> +
> + switch (JEDEC_MFR(jedec_id)) {
> + case CFI_MFR_MACRONIX:
> + status = macronix_quad_enable(flash);
> + if (status) {
> + dev_err(&flash->spi->dev,
> + "Macronix quad not enable");
"Macronix quad-read not enabled" would be more sensible, DTTO below.
> + return -EINVAL;
> + }
> + return status;
> + default:
> + status = spansion_quad_enable(flash);
> + if (status) {
> + dev_err(&flash->spi->dev,
> + "Spansion quad not enable");
> + return -EINVAL;
> + }
> + return status;
> + }
> +}
[...]
> @@ -774,7 +906,7 @@ static const struct spi_device_id m25p_ids[] = {
> { "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
> { "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },
> { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
> - { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, 0) },
> + { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, M25P80_QUAD_READ) },
I'm not convinced enabling 4-bit mode should be hard-coded in the MTD driver.
There might be a board which uses this chip in 1-bit mode.
We have a setup with Spansion chip here which uses 1-bit addressing in U-Boot,
but uses 4-bit addressing in Linux. We use a DT property to configure the SPI
bus width for that and I think that's a way to go. Note that there also are
chips which use 2-bit wide SPI communication.
[...]
next prev parent reply other threads:[~2013-10-27 16:45 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-25 9:25 [PATCH] drivers: mtd: m25p80: Add quad read support Sourav Poddar
2013-10-25 10:18 ` Huang Shijie
2013-10-25 10:19 ` Sourav Poddar
2013-10-27 16:45 ` Marek Vasut [this message]
2013-10-27 18:26 ` Sourav Poddar
2013-10-27 18:30 ` Marek Vasut
2013-10-27 18:37 ` Sourav Poddar
2013-10-27 18:47 ` Marek Vasut
2013-10-29 5:57 ` Sourav Poddar
2013-10-29 14:01 ` Marek Vasut
2013-10-29 14:08 ` Sourav Poddar
2013-10-29 15:27 ` Marek Vasut
2013-10-29 16:52 ` Sourav Poddar
2013-10-29 17:08 ` Marek Vasut
2013-10-29 17:12 ` Sourav Poddar
2013-10-29 18:24 ` Marek Vasut
2013-10-29 18:34 ` Sourav Poddar
2013-10-30 6:27 ` Huang Shijie
2013-10-30 6:46 ` Sourav Poddar
2013-10-30 6:54 ` Huang Shijie
2013-10-30 10:11 ` Marek Vasut
2013-11-12 18:13 ` Brian Norris
-- strict thread matches above, loose matches on Subject: below --
2013-09-24 12:10 Sourav Poddar
2013-09-25 3:06 ` Huang Shijie
2013-09-25 5:20 ` Sourav Poddar
2013-09-25 5:48 ` Huang Shijie
2013-09-25 5:51 ` Sourav Poddar
2013-09-25 5:54 ` Sourav Poddar
2013-09-25 5:56 ` Huang Shijie
2013-09-25 6:16 ` Huang Shijie
2013-09-25 6:24 ` Sourav Poddar
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=201310271745.17152.marex@denx.de \
--to=marex@denx.de \
--cc=balbi@ti.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=sourav.poddar@ti.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 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.