Message ID | 20100330133458.20107.48734.stgit@shiryu.yomgui.biz |
---|---|
State | New, archived |
Headers | show |
On Tue, Mar 30, 2010 at 03:34:58PM +0200, Guillaume LECERF wrote: > SST 39VF160x and 39VF320x chips use vendorname id 0x0701 and alternative > unlock addresses. Add support for them in cfi_probe.c. > > Signed-off-by: Guillaume LECERF <glecerf@gmail.com> > --- > drivers/mtd/chips/cfi_probe.c | 9 +++++++++ > include/linux/mtd/cfi.h | 1 + > 2 files changed, 10 insertions(+), 0 deletions(-) > > diff --git a/drivers/mtd/chips/cfi_probe.c b/drivers/mtd/chips/cfi_probe.c > index a28659d..f931e94 100644 > --- a/drivers/mtd/chips/cfi_probe.c > +++ b/drivers/mtd/chips/cfi_probe.c > @@ -214,6 +214,12 @@ static int __xipram cfi_chip_setup(struct map_info *map, > * back into Read Mode, which is a nop in this case). > */ > cfi_send_gen_cmd(0xf0, 0, base, map, cfi, cfi->device_type, NULL); > + > + if (cfi->cfiq->P_ID == P_ID_SST_OLD) { > + addr_unlock1 = 0x5555; > + addr_unlock2 = 0x2AAA; > + } Can't we set cfi->addr_unlock[12] here already? This way, we could later have just one fixup function for all old SST flashes. > + > cfi_send_gen_cmd(0xaa, addr_unlock1, base, map, cfi, cfi->device_type, NULL); > cfi_send_gen_cmd(0x55, addr_unlock2, base, map, cfi, cfi->device_type, NULL); > cfi_send_gen_cmd(0x90, addr_unlock1, base, map, cfi, cfi->device_type, NULL); > @@ -270,6 +276,9 @@ static char *vendorname(__u16 vendor) > case P_ID_SST_PAGE: > return "SST Page Write"; > > + case P_ID_SST_OLD: > + return "SST 39VF160x/39VF320x"; > + > case P_ID_INTEL_PERFORMANCE: > return "Intel Performance Code"; > > diff --git a/include/linux/mtd/cfi.h b/include/linux/mtd/cfi.h > index cee05b1..5716fc7 100644 > --- a/include/linux/mtd/cfi.h > +++ b/include/linux/mtd/cfi.h > @@ -253,6 +253,7 @@ struct cfi_bri_query { > #define P_ID_MITSUBISHI_STD 0x0100 > #define P_ID_MITSUBISHI_EXT 0x0101 > #define P_ID_SST_PAGE 0x0102 > +#define P_ID_SST_OLD 0x0701 > #define P_ID_INTEL_PERFORMANCE 0x0200 > #define P_ID_INTEL_DATA 0x0210 > #define P_ID_RESERVED 0xffff > > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/
On Thu, Apr 08, 2010 at 11:05:53AM +0200, Wolfram Sang wrote: > On Tue, Mar 30, 2010 at 03:34:58PM +0200, Guillaume LECERF wrote: > > SST 39VF160x and 39VF320x chips use vendorname id 0x0701 and alternative > > unlock addresses. Add support for them in cfi_probe.c. > > > > Signed-off-by: Guillaume LECERF <glecerf@gmail.com> > > --- > > drivers/mtd/chips/cfi_probe.c | 9 +++++++++ > > include/linux/mtd/cfi.h | 1 + > > 2 files changed, 10 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/mtd/chips/cfi_probe.c b/drivers/mtd/chips/cfi_probe.c > > index a28659d..f931e94 100644 > > --- a/drivers/mtd/chips/cfi_probe.c > > +++ b/drivers/mtd/chips/cfi_probe.c > > @@ -214,6 +214,12 @@ static int __xipram cfi_chip_setup(struct map_info *map, > > * back into Read Mode, which is a nop in this case). > > */ > > cfi_send_gen_cmd(0xf0, 0, base, map, cfi, cfi->device_type, NULL); > > + > > + if (cfi->cfiq->P_ID == P_ID_SST_OLD) { > > + addr_unlock1 = 0x5555; > > + addr_unlock2 = 0x2AAA; > > + } > > Can't we set cfi->addr_unlock[12] here already? This way, we could later have > just one fixup function for all old SST flashes. Well, even if there is a way to do it (by replacing the NULL-checks of addr_unlock[12] in cfi_cmdset_0002() with something else), it can be applied later and on top of this series. Regards, Wolfram
diff --git a/drivers/mtd/chips/cfi_probe.c b/drivers/mtd/chips/cfi_probe.c index a28659d..f931e94 100644 --- a/drivers/mtd/chips/cfi_probe.c +++ b/drivers/mtd/chips/cfi_probe.c @@ -214,6 +214,12 @@ static int __xipram cfi_chip_setup(struct map_info *map, * back into Read Mode, which is a nop in this case). */ cfi_send_gen_cmd(0xf0, 0, base, map, cfi, cfi->device_type, NULL); + + if (cfi->cfiq->P_ID == P_ID_SST_OLD) { + addr_unlock1 = 0x5555; + addr_unlock2 = 0x2AAA; + } + cfi_send_gen_cmd(0xaa, addr_unlock1, base, map, cfi, cfi->device_type, NULL); cfi_send_gen_cmd(0x55, addr_unlock2, base, map, cfi, cfi->device_type, NULL); cfi_send_gen_cmd(0x90, addr_unlock1, base, map, cfi, cfi->device_type, NULL); @@ -270,6 +276,9 @@ static char *vendorname(__u16 vendor) case P_ID_SST_PAGE: return "SST Page Write"; + case P_ID_SST_OLD: + return "SST 39VF160x/39VF320x"; + case P_ID_INTEL_PERFORMANCE: return "Intel Performance Code"; diff --git a/include/linux/mtd/cfi.h b/include/linux/mtd/cfi.h index cee05b1..5716fc7 100644 --- a/include/linux/mtd/cfi.h +++ b/include/linux/mtd/cfi.h @@ -253,6 +253,7 @@ struct cfi_bri_query { #define P_ID_MITSUBISHI_STD 0x0100 #define P_ID_MITSUBISHI_EXT 0x0101 #define P_ID_SST_PAGE 0x0102 +#define P_ID_SST_OLD 0x0701 #define P_ID_INTEL_PERFORMANCE 0x0200 #define P_ID_INTEL_DATA 0x0210 #define P_ID_RESERVED 0xffff
SST 39VF160x and 39VF320x chips use vendorname id 0x0701 and alternative unlock addresses. Add support for them in cfi_probe.c. Signed-off-by: Guillaume LECERF <glecerf@gmail.com> --- drivers/mtd/chips/cfi_probe.c | 9 +++++++++ include/linux/mtd/cfi.h | 1 + 2 files changed, 10 insertions(+), 0 deletions(-)