2013/1/26 Peter Crosthwaite <peter.crosthwa...@xilinx.com>

> Hi Dante,
>
> On Fri, Jan 25, 2013 at 5:25 PM, Peter Crosthwaite
> <peter.crosthwa...@xilinx.com> wrote:
> > Hi Dante,
> >
> > Sorry about the delay, and thanks for the contribution. Please run the
> > patch through the provided checkpatch script (scripts/checkpatch.pl).
> > There are a few whitespace errors that need to be fixed. Please also
> > see the comment below.
> >
> > Regards,
> > Peter
> >
> > On Thu, Jan 17, 2013 at 10:17 PM, Dante <dant...@faraday-tech.com>
> wrote:
> >> Atmel, SST and Intel/Numonyx serial flash tend to power up
> >> with the software protection bits set.
> >> And thus the new m25p80.c in linux kernel would always tries
> >> to use WREN(0x06) + WRSR(0x01) to turn-off the protection.
> >> The WEL(0x02) of status register is supposed to be cleared
> >> after WRSR(0x01).
> >> There are some drivers (i.e my own tiny driver for RTOSes) would
> >> check the WEL(0x02) in status register to make sure the protection
> >> is correctly turned off, so this patch is mandatory to me.
> >>
> >> Signed-off-by: Kuo-Jung Su <dant...@faraday-tech.com>
> >> ---
> >>  hw/m25p80.c |   16 ++++++++++++++++
> >>  1 file changed, 16 insertions(+)
> >>
> >> diff --git a/hw/m25p80.c b/hw/m25p80.c
> >> index d392656..c8d0411 100644
> >> --- a/hw/m25p80.c
> >> +++ b/hw/m25p80.c
> >> @@ -184,6 +184,7 @@ static const FlashPartInfo known_devices[] = {
> >>
> >>  typedef enum {
> >>      NOP = 0,
> >> +    WRSR = 0x1,
> >>      WRDI = 0x4,
> >>      RDSR = 0x5,
> >>      WREN = 0x6,
> >> @@ -377,6 +378,12 @@ static void complete_collecting_data(Flash *s)
> >>      case ERASE_SECTOR:
> >>          flash_erase(s, s->cur_addr, s->cmd_in_progress);
> >>          break;
> >> +    case WRSR:
> >> +       if (s->write_enable) {
> >> +               s->state = STATE_IDLE;
> >
> > Returning to the idle state should be unconditional, if
> > (!s->write_enable), then if you issue a WRSR, you will get stuck in
> > COLLECTING_DATA.
> >
>
> Reviewing this a little more, transitioning back to IDLE is handled by
> the de-assertion of the chip-select. So you should by able to just
> remove this s->state = STATE_IDLE altogether.
>
> Regards,
> Peter
>

Thanks for the comment, I'll send out a new patch with correct coding style
later

Best Wishes
Dante

>
> > Regards,
> > Peter
> >
> >> +               s->write_enable = false;
> >> +       }
> >> +       break;
> >>      default:
> >>          break;
> >>      }
> >> @@ -440,6 +447,15 @@ static void decode_new_cmd(Flash *s, uint32_t
> value)
> >>          s->len = 0;
> >>          s->state = STATE_COLLECTING_DATA;
> >>          break;
> >> +
> >> +       case WRSR:
> >> +               if (s->write_enable) {
> >> +                       s->needed_bytes = 1;
> >> +                       s->pos = 0;
> >> +               s->len = 0;
> >> +                       s->state = STATE_COLLECTING_DATA;
> >> +               }
> >> +        break;
> >>
> >>      case WRDI:
> >>          s->write_enable = false;
> >> --
> >> 1.7.9.5
> >>
> >>
> >> ********************* Confidentiality Notice ************************
> >> This electronic message and any attachments may contain
> >> confidential and legally privileged information or
> >> information which is otherwise protected from disclosure.
> >> If you are not the intended recipient,please do not disclose
> >> the contents, either in whole or in part, to anyone,and
> >> immediately delete the message and any attachments from
> >> your computer system and destroy all hard copies.
> >> Thank you for your cooperation.
> >> ***********************************************************************
> >>
>
>


-- 
Best wishes,
Kuo-Jung Su

Reply via email to