linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: chuck@mds.com
Cc: linux-mtd@lists.infradead.org
Subject: Re: [PATCH] Check flag status register for Micron n25q512a
Date: Tue, 4 Mar 2014 01:29:12 +0100	[thread overview]
Message-ID: <201403040129.12504.marex@denx.de> (raw)
In-Reply-To: <5314B336.7090306@mds.com>

On Monday, March 03, 2014 at 05:52:06 PM, Chuck Peplinski wrote:
> On 3/2/2014 8:42 AM, Marek Vasut wrote:
> > On Sunday, March 02, 2014 at 06:28:26 AM, Chuck Peplinski wrote:
> >> Sorry about top posting.
> > 
> > You are sorry, yet you did it again :-(
> > 
> >> I am also using this n25q512.  My working code includes a fix similar to
> >> what Song posted.  I don't consider it elegant.  The problem is that
> >> this 25q512 apparently behaves in a unique fashion.  If you read the
> >> status register instead of the flag status register, reads work but
> >> erases and writes fail.  I know this from a couple of days of
> >> debugging.
> > 
> > So does the SR and FSR not toggle the bit 7 at the same time or what ?
> > 
> >> You must respond to the flag status register.
> > 
> > What do you mean by "respond" ?
> > 
> >> Yes, this is
> >> different from every other part.
> >> 
> >> Some possible solutions are:
> >> - hard code support for this device, as Song did.
> >> - add some other abstraction that affects support for every other part.
> >> I leave the decision to you, but neither sounds very pretty.
> >> 
> >>       Chuck
> >> 
> >> On 3/1/2014 1:22 PM, Marek Vasut wrote:
> >>> To me, it looks like FSR bit 7 and SR bit 7 should toggle exactly at
> >>> the same time and exactly for the same events. Can you try for example
> >>> reading them both and checking that the bit 7 really toggles at
> >>> different times please?
> >> 
> >> ______________________________________________________
> >> Linux MTD discussion mailing list
> >> http://lists.infradead.org/mailman/listinfo/linux-mtd/
> > 
> > Best regards,
> > Marek Vasut
> 
> I'm learning about top posting.  How about this?

Better, good job ;-)

Now , how come the CC list was dropped ?

> FSR can apparently toggle without SR.

Is that documented anywhere ? How can that be ?

> For the device to work, I must
> read and then clear the flag status register.
> 
> My "wait_till_done()" (below) is called at the end of m25p80_erase() and
> m25p80_write().

Hmmmm , I have a feeling that if you actually added wait_till_ready() call at 
the end of _erase() and _write(), you would get the same effect. This would in 
turn mean you are instead missing wait_till_ready() somewhere else.

Can you try using wait_till_ready() at the end of _erase() and _write() please ?

> If you would like, I could submit a patch, or just a copy of m25p80.c.
> 
> // used with N25Q512A
> static int wait_till_done(struct m25p *flash) {
>      unsigned long deadline;
>      u8 code, fsreg;
> 
>      code = OPCODE_RD_FLAG_SR;    // read flag status register
>      deadline = jiffies + (1* HZ);  // one second
> 
>      do {
>          spi_write_then_read(flash->spi, &code, 1, &fsreg, 1);
>          if (fsreg & BIT_FLAG_STATUS_READY) {   // not busy.
>              code = OPCODE_CLEAR_FLAG_SR;    // clear flag status register
>              spi_write_then_read(flash->spi, &code, 1, NULL, 0);
>              return 0;
>          }
>          cond_resched();  // a form of kernel sleep
>      } while (!time_after_eq(jiffies, deadline));
>      return 1;
> }
> 
> Chuck

  reply	other threads:[~2014-03-04  0:29 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-06  5:21 [PATCH] Check flag status register for Micron n25q512a Insop Song
2014-02-27  7:33 ` Brian Norris
2014-02-27 20:01   ` Marek Vasut
2014-03-01  2:44     ` Insop Song
2014-03-01 14:48       ` Chuck Peplinski
2014-03-01 19:01         ` Marek Vasut
2014-03-01 19:22       ` Marek Vasut
2014-03-02  5:28         ` Chuck Peplinski
2014-03-02 14:42           ` Marek Vasut
2014-03-03 16:52             ` Chuck Peplinski
2014-03-04  0:29               ` Marek Vasut [this message]
2014-03-04 21:45                 ` Chuck Peplinski
2014-03-06  9:25                   ` Jagan Teki
2014-03-06 10:03                     ` Harini Katakam
2014-03-06 11:53                       ` Marek Vasut
2014-03-01  2:00   ` Insop Song
2014-03-01 19:04     ` Marek Vasut
2014-04-18 15:07 ` Yves Deweerdt

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=201403040129.12504.marex@denx.de \
    --to=marex@denx.de \
    --cc=chuck@mds.com \
    --cc=linux-mtd@lists.infradead.org \
    /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).