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
next prev parent reply other threads:[~2014-03-04 0:29 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
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 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=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 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.