All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Peplinski <chuck@mds.com>
To: Marek Vasut <marex@denx.de>, linux-mtd@lists.infradead.org
Subject: Re: [PATCH] Check flag status register for Micron n25q512a
Date: Mon, 03 Mar 2014 10:52:06 -0600	[thread overview]
Message-ID: <5314B336.7090306@mds.com> (raw)
In-Reply-To: <201403021542.09196.marex@denx.de>

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?

FSR can apparently toggle without SR.  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().
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-03 16:52 UTC|newest]

Thread overview: 25+ 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-01-06  5:21 ` Insop Song
2014-02-27  7:33 ` Brian Norris
2014-02-27  7:33   ` Brian Norris
2014-02-27 20:01   ` Marek Vasut
2014-02-27 20:01     ` Marek Vasut
2014-03-01  2:44     ` Insop Song
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-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 [this message]
2014-03-04  0:29               ` Marek Vasut
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  2:00     ` Insop Song
2014-03-01 19:04     ` Marek Vasut
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=5314B336.7090306@mds.com \
    --to=chuck@mds.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 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.