Submitter | Stefan Tauner |
---|---|
Date | 2011-03-15 15:29:11 |
Message ID | <c061313ac73e1a9f8db1248fca756d28e9e3f553.1300202693.git.stefan.tauner@student.tuwien.ac.at> |
Download | mbox | patch |
Permalink | /patch/2789/ |
State | Bitrotted |
Headers | show |
Comments
Am 15.03.2011 16:29 schrieb Stefan Tauner: > Signed-off-by: Stefan Tauner<stefan.tauner@student.tuwien.ac.at> > Not sure about this one. We also have separate functions for each erase command. I'll let others comment. Regards, Carl-Daniel > --- > spi25.c | 24 ++++++++++++------------ > 1 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/spi25.c b/spi25.c > index 5d73411..c4cd6b2 100644 > --- a/spi25.c > +++ b/spi25.c > @@ -31,17 +31,17 @@ > > void spi_prettyprint_status_register(struct flashchip *flash); > > -static int spi_rdid(unsigned char *readarr, int bytes) > +static int spi_rdid(unsigned char *readarr, int bytes_in, unsigned char rdid_opcode) > { > - static const unsigned char cmd[JEDEC_RDID_OUTSIZE] = { JEDEC_RDID }; > + unsigned char cmd[] = { rdid_opcode }; > int ret; > int i; > > - ret = spi_send_command(sizeof(cmd), bytes, cmd, readarr); > + ret = spi_send_command(sizeof(cmd), bytes_in, cmd, readarr); > if (ret) > return ret; > msg_cspew("RDID returned"); > - for (i = 0; i< bytes; i++) > + for (i = 0; i< bytes_in; i++) > msg_cspew(" 0x%02x", readarr[i]); > msg_cspew(". "); > return 0; > @@ -115,13 +115,13 @@ int spi_write_disable(void) > return spi_send_command(sizeof(cmd), 0, cmd, NULL); > } > > -static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > +static int probe_spi_rdid_generic(struct flashchip *flash, int bytes_in, unsigned char rdid_opcode) > { > - unsigned char readarr[4]; > + unsigned char readarr[bytes_in]; > uint32_t id1; > uint32_t id2; > > - if (spi_rdid(readarr, bytes)) > + if (spi_rdid(readarr, bytes_in, rdid_opcode)) > return 0; > > if (!oddparity(readarr[0])) > @@ -135,7 +135,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > msg_cdbg("RDID byte 1 parity violation. "); > id1 = (readarr[0]<< 8) | readarr[1]; > id2 = readarr[2]; > - if (bytes> 3) { > + if (bytes_in> 3) { > id2<<= 8; > id2 |= readarr[3]; > } > @@ -170,7 +170,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > > int probe_spi_rdid(struct flashchip *flash) > { > - return probe_spi_rdid_generic(flash, 3); > + return probe_spi_rdid_generic(flash, JEDEC_RDID_INSIZE, JEDEC_RDID); > } > > int probe_spi_rdid4(struct flashchip *flash) > @@ -189,7 +189,7 @@ int probe_spi_rdid4(struct flashchip *flash) > #endif > #endif > default: > - return probe_spi_rdid_generic(flash, 4); > + return probe_spi_rdid_generic(flash, 4, JEDEC_RDID); > } > > return 0; > @@ -242,8 +242,8 @@ int probe_spi_res1(struct flashchip *flash) > /* Check if RDID is usable and does not return 0xff 0xff 0xff or > * 0x00 0x00 0x00. In that case, RES is pointless. > */ > - if (!spi_rdid(readarr, 3)&& memcmp(readarr, allff, 3)&& > - memcmp(readarr, all00, 3)) { > + if (!spi_rdid(readarr, JEDEC_RDID_INSIZE, JEDEC_RDID)&& memcmp(readarr, allff, 3)&& > + memcmp(readarr, all00, JEDEC_RDID_INSIZE)) { > msg_cdbg("Ignoring RES in favour of RDID.\n"); > return 0; > } >
On Thu, 31 Mar 2011 08:40:26 +0200 Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> wrote: > Am 15.03.2011 16:29 schrieb Stefan Tauner: > > Signed-off-by: Stefan Tauner<stefan.tauner@student.tuwien.ac.at> > > > > Not sure about this one. We also have separate functions for each erase > command. > > I'll let others comment. wont happen, i guess. :) i have removed that now, because you said in the at25f patch itself, that i should move the probing to at25.c and remove the special case for the at25f in the generalized rdid... which was the main reason why i introduced it in the first place. i'll leave this as New on patchwork for further reference. > > > --- > > spi25.c | 24 ++++++++++++------------ > > 1 files changed, 12 insertions(+), 12 deletions(-) > > > > diff --git a/spi25.c b/spi25.c > > index 5d73411..c4cd6b2 100644 > > --- a/spi25.c > > +++ b/spi25.c > > @@ -31,17 +31,17 @@ > > > > void spi_prettyprint_status_register(struct flashchip *flash); > > > > -static int spi_rdid(unsigned char *readarr, int bytes) > > +static int spi_rdid(unsigned char *readarr, int bytes_in, unsigned char rdid_opcode) > > { > > - static const unsigned char cmd[JEDEC_RDID_OUTSIZE] = { JEDEC_RDID }; > > + unsigned char cmd[] = { rdid_opcode }; > > int ret; > > int i; > > > > - ret = spi_send_command(sizeof(cmd), bytes, cmd, readarr); > > + ret = spi_send_command(sizeof(cmd), bytes_in, cmd, readarr); > > if (ret) > > return ret; > > msg_cspew("RDID returned"); > > - for (i = 0; i< bytes; i++) > > + for (i = 0; i< bytes_in; i++) > > msg_cspew(" 0x%02x", readarr[i]); > > msg_cspew(". "); > > return 0; > > @@ -115,13 +115,13 @@ int spi_write_disable(void) > > return spi_send_command(sizeof(cmd), 0, cmd, NULL); > > } > > > > -static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > > +static int probe_spi_rdid_generic(struct flashchip *flash, int bytes_in, unsigned char rdid_opcode) > > { > > - unsigned char readarr[4]; > > + unsigned char readarr[bytes_in]; > > uint32_t id1; > > uint32_t id2; > > > > - if (spi_rdid(readarr, bytes)) > > + if (spi_rdid(readarr, bytes_in, rdid_opcode)) > > return 0; > > > > if (!oddparity(readarr[0])) > > @@ -135,7 +135,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > > msg_cdbg("RDID byte 1 parity violation. "); > > id1 = (readarr[0]<< 8) | readarr[1]; > > id2 = readarr[2]; > > - if (bytes> 3) { > > + if (bytes_in> 3) { > > id2<<= 8; > > id2 |= readarr[3]; > > } > > @@ -170,7 +170,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) > > > > int probe_spi_rdid(struct flashchip *flash) > > { > > - return probe_spi_rdid_generic(flash, 3); > > + return probe_spi_rdid_generic(flash, JEDEC_RDID_INSIZE, JEDEC_RDID); > > } > > > > int probe_spi_rdid4(struct flashchip *flash) > > @@ -189,7 +189,7 @@ int probe_spi_rdid4(struct flashchip *flash) > > #endif > > #endif > > default: > > - return probe_spi_rdid_generic(flash, 4); > > + return probe_spi_rdid_generic(flash, 4, JEDEC_RDID); > > } > > > > return 0; > > @@ -242,8 +242,8 @@ int probe_spi_res1(struct flashchip *flash) > > /* Check if RDID is usable and does not return 0xff 0xff 0xff or > > * 0x00 0x00 0x00. In that case, RES is pointless. > > */ > > - if (!spi_rdid(readarr, 3)&& memcmp(readarr, allff, 3)&& > > - memcmp(readarr, all00, 3)) { > > + if (!spi_rdid(readarr, JEDEC_RDID_INSIZE, JEDEC_RDID)&& memcmp(readarr, allff, 3)&& > > + memcmp(readarr, all00, JEDEC_RDID_INSIZE)) { > > msg_cdbg("Ignoring RES in favour of RDID.\n"); > > return 0; > > } > > > >
Patch
diff --git a/spi25.c b/spi25.c index 5d73411..c4cd6b2 100644 --- a/spi25.c +++ b/spi25.c @@ -31,17 +31,17 @@ void spi_prettyprint_status_register(struct flashchip *flash); -static int spi_rdid(unsigned char *readarr, int bytes) +static int spi_rdid(unsigned char *readarr, int bytes_in, unsigned char rdid_opcode) { - static const unsigned char cmd[JEDEC_RDID_OUTSIZE] = { JEDEC_RDID }; + unsigned char cmd[] = { rdid_opcode }; int ret; int i; - ret = spi_send_command(sizeof(cmd), bytes, cmd, readarr); + ret = spi_send_command(sizeof(cmd), bytes_in, cmd, readarr); if (ret) return ret; msg_cspew("RDID returned"); - for (i = 0; i < bytes; i++) + for (i = 0; i < bytes_in; i++) msg_cspew(" 0x%02x", readarr[i]); msg_cspew(". "); return 0; @@ -115,13 +115,13 @@ int spi_write_disable(void) return spi_send_command(sizeof(cmd), 0, cmd, NULL); } -static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) +static int probe_spi_rdid_generic(struct flashchip *flash, int bytes_in, unsigned char rdid_opcode) { - unsigned char readarr[4]; + unsigned char readarr[bytes_in]; uint32_t id1; uint32_t id2; - if (spi_rdid(readarr, bytes)) + if (spi_rdid(readarr, bytes_in, rdid_opcode)) return 0; if (!oddparity(readarr[0])) @@ -135,7 +135,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) msg_cdbg("RDID byte 1 parity violation. "); id1 = (readarr[0] << 8) | readarr[1]; id2 = readarr[2]; - if (bytes > 3) { + if (bytes_in > 3) { id2 <<= 8; id2 |= readarr[3]; } @@ -170,7 +170,7 @@ static int probe_spi_rdid_generic(struct flashchip *flash, int bytes) int probe_spi_rdid(struct flashchip *flash) { - return probe_spi_rdid_generic(flash, 3); + return probe_spi_rdid_generic(flash, JEDEC_RDID_INSIZE, JEDEC_RDID); } int probe_spi_rdid4(struct flashchip *flash) @@ -189,7 +189,7 @@ int probe_spi_rdid4(struct flashchip *flash) #endif #endif default: - return probe_spi_rdid_generic(flash, 4); + return probe_spi_rdid_generic(flash, 4, JEDEC_RDID); } return 0; @@ -242,8 +242,8 @@ int probe_spi_res1(struct flashchip *flash) /* Check if RDID is usable and does not return 0xff 0xff 0xff or * 0x00 0x00 0x00. In that case, RES is pointless. */ - if (!spi_rdid(readarr, 3) && memcmp(readarr, allff, 3) && - memcmp(readarr, all00, 3)) { + if (!spi_rdid(readarr, JEDEC_RDID_INSIZE, JEDEC_RDID) && memcmp(readarr, allff, 3) && + memcmp(readarr, all00, JEDEC_RDID_INSIZE)) { msg_cdbg("Ignoring RES in favour of RDID.\n"); return 0; }
Signed-off-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> --- spi25.c | 24 ++++++++++++------------ 1 files changed, 12 insertions(+), 12 deletions(-)