From: Sourav Poddar <sourav.poddar@ti.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: marex@denx.de, linux-mtd@lists.infradead.org, balbi@ti.com,
dedekind1@gmail.com
Subject: Re: [Rebase/PATCHv2] drivers: mtd: m25p80: Add quad read support.
Date: Thu, 31 Oct 2013 10:31:23 +0530 [thread overview]
Message-ID: <5271E423.9030506@ti.com> (raw)
In-Reply-To: <20131030231930.GD20059@norris.computersforpeace.net>
On Thursday 31 October 2013 04:49 AM, Brian Norris wrote:
> On Wed, Oct 30, 2013 at 02:50:02PM +0530, Sourav Poddar wrote:
>> Some flash also support quad read mode.
>> Adding support for adding quad mode in m25p80
>> for spansion and macronix flash.
>>
>> Signed-off-by: Sourav Poddar<sourav.poddar@ti.com>
>> ---
>> Rebase this on latest l2mtd.
>> v1->v2:
>> Small dev_err message fix to make it
>> mode appropriate.
>> v1: http://patchwork.ozlabs.org/patch/286109/
>>
>> There is one cleanup suggestion from Marek Vasut on read_sr
>> value. I will take that up as a seperate patch, once this
>> patch gets done.
>>
>>
>> drivers/mtd/devices/m25p80.c | 160 ++++++++++++++++++++++++++++++++++++++++--
>> 1 files changed, 155 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
>> index 5897889..ba4dd8b 100644
>> --- a/drivers/mtd/devices/m25p80.c
>> +++ b/drivers/mtd/devices/m25p80.c
> [...]
>
>> @@ -76,6 +79,10 @@
>> #define SR_BP2 0x10 /* Block protect 2 */
>> #define SR_SRWD 0x80 /* SR write protect */
>>
>> +/* Configuration Register bits. */
>> +#define CR_QUAD_EN_SPAN 0x2 /* Spansion Quad I/O */
>> +#define SR_QUAD_EN_MX 0x40 /* Macronix Quad I/O */
> Two little bits of style here:
> - The other bitfields have a tab after #define (although this comes out
> to 1 character-width of whitespace, so it looks like a space)
> - We already have a listing for several Status Register (SR_*)
> bitfields; I think it makes some sense to group the SR_QUAD_EN_MX
> with the other SR_* bits and keep the CR_* macro separate. That could
> help with keeping the difference between CR and SR clearer.
>
Ok. Will change.
>> +
>> /* Define max times to check status register before we give up. */
>> #define MAX_READY_WAIT_JIFFIES (40 * HZ) /* M25P16 specs 40s max chip erase */
>> #define MAX_CMD_SIZE 6
>> @@ -95,6 +102,7 @@ struct m25p {
>> u8 program_opcode;
>> u8 *command;
>> bool fast_read;
>> + bool quad_read;
> Did you have a response to my earlier suggestion that the fast_read and
> quad_read fields be combined to a single field? This could easily be an
> enum, and I think it could help some of the other code. It also wouldn't
> require us to remember that quad_read takes precedence over fast_read
> (which you do implicitly in this patch). And we can already foresee
> additional switches needed if we add the DDR command types (Huang was
> looking at this?), so we should just get it right now.
>
> You could, perhaps, make this two patches: one for converting the bool
> to an enum, and the other for supporting quad-read.
>
I read that, and I was planning to take that as a seperate excercise,
but yes I
will cook this into two independent patches.
> Or if you're having trouble, I could cook the first patch up.
>
>> };
>>
>> static inline struct m25p *mtd_to_m25p(struct mtd_info *mtd)
> [...]
>
>> @@ -1077,6 +1221,12 @@ static int m25p_probe(struct spi_device *spi)
>> flash->addr_width = 4;
>> if (JEDEC_MFR(info->jedec_id) == CFI_MFR_AMD) {
>> /* Dedicated 4-byte command set */
>> + if (flash->quad_read)
>> + flash->read_opcode = OPCODE_QUAD_READ_4B;
>> + else
>> + flash->read_opcode = flash->fast_read ?
>> + OPCODE_FAST_READ_4B :
>> + OPCODE_NORM_READ_4B;
> Besides the repetition below (already mentioned by Huang), the above
> assignment is kind of ugly again, mixing ?: and if/else. If we're
> keeping the fast_read/quad_read bools, it should be:
>
> if (flash->quad_read)
> flash->read_opcode = OPCODE_QUAD_READ_4B;
> else if (flash->fast_read)
> flash->read_opcode = OPCODE_FAST_READ_4B;
> else
> flash->read_opcode = OPCODE_NORM_READ_4B;
>
> (or if we use an enum, it's just a switch statement...)
>
Ok.
>> flash->read_opcode = flash->fast_read ?
>> OPCODE_FAST_READ_4B :
>> OPCODE_NORM_READ_4B;
> Brian
next prev parent reply other threads:[~2013-10-31 5:01 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-30 9:20 [Rebase/PATCHv2] drivers: mtd: m25p80: Add quad read support Sourav Poddar
2013-10-30 9:29 ` Huang Shijie
2013-10-30 9:32 ` Sourav Poddar
2013-10-30 10:18 ` Huang Shijie
2013-10-30 10:19 ` Sourav Poddar
2013-10-30 10:25 ` Huang Shijie
2013-10-30 13:38 ` Marek Vasut
2013-10-30 23:19 ` Brian Norris
2013-10-31 5:01 ` Sourav Poddar [this message]
2013-10-31 16:05 ` Brian Norris
2013-11-02 5:48 ` Sourav Poddar
2013-11-05 3:49 ` Brian Norris
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=5271E423.9030506@ti.com \
--to=sourav.poddar@ti.com \
--cc=balbi@ti.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=linux-mtd@lists.infradead.org \
--cc=marex@denx.de \
/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).