Message ID | 49FFF86F.2070402@nokia.com |
---|---|
State | Accepted |
Commit | ee8f37688966ab1438d0cf42e0cb7c6595d9592c |
Headers | show |
Hi, Good I heard the Numonyx also make a OneNAND chips. Acked-by: Kyungmin Park <kyungmin.park@samsung.com> On Tue, May 5, 2009 at 5:27 PM, Adrian Hunter <adrian.hunter@nokia.com> wrote: > From e400da3456896505edbf7c39a14668c2c718ace4 Mon Sep 17 00:00:00 2001 > From: Adrian Hunter <adrian.hunter@nokia.com> > Date: Tue, 5 May 2009 11:04:19 +0300 > Subject: [PATCH] MTD: OneNAND: Add support for OneNAND manufactured by > Numonyx > > In addition to adding the Numonyx manufacturer code, this patch > also ensures 'sync. write' is disabled when reading identification > data - something that the Numonyx chip objects to, but the > Samsung chip seems to ignore. > > Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> > --- > drivers/mtd/onenand/onenand_base.c | 3 ++- > include/linux/mtd/onenand.h | 1 + > 2 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/mtd/onenand/onenand_base.c > b/drivers/mtd/onenand/onenand_base.c > index 524af9a..f6cfadb 100644 > --- a/drivers/mtd/onenand/onenand_base.c > +++ b/drivers/mtd/onenand/onenand_base.c > @@ -2576,6 +2576,7 @@ static void onenand_print_device_info(int device, int > version) > > static const struct onenand_manufacturers onenand_manuf_ids[] = { > {ONENAND_MFR_SAMSUNG, "Samsung"}, > + {ONENAND_MFR_NUMONYX, "Numonyx"}, > }; > > /** > @@ -2621,7 +2622,7 @@ static int onenand_probe(struct mtd_info *mtd) > /* Save system configuration 1 */ > syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1); > /* Clear Sync. Burst Read mode to read BootRAM */ > - this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ), this->base > + ONENAND_REG_SYS_CFG1); > + this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ & > ~ONENAND_SYS_CFG1_SYNC_WRITE), this->base + ONENAND_REG_SYS_CFG1); > > /* Send the command for reading device ID from BootRAM */ > this->write_word(ONENAND_CMD_READID, this->base + ONENAND_BOOTRAM); > diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h > index 9aa2a91..0fa3ac4 100644 > --- a/include/linux/mtd/onenand.h > +++ b/include/linux/mtd/onenand.h > @@ -176,6 +176,7 @@ struct onenand_chip { > * OneNAND Flash Manufacturer ID Codes > */ > #define ONENAND_MFR_SAMSUNG 0xec > +#define ONENAND_MFR_NUMONYX 0x20 > > /** > * struct onenand_manufacturers - NAND Flash Manufacturer ID Structure > -- > 1.5.6.3 >
On Tue, 2009-05-05 at 11:27 +0300, Adrian Hunter wrote: > >From e400da3456896505edbf7c39a14668c2c718ace4 Mon Sep 17 00:00:00 2001 > From: Adrian Hunter <adrian.hunter@nokia.com> > Date: Tue, 5 May 2009 11:04:19 +0300 > Subject: [PATCH] MTD: OneNAND: Add support for OneNAND manufactured by Numonyx > > In addition to adding the Numonyx manufacturer code, this patch > also ensures 'sync. write' is disabled when reading identification > data - something that the Numonyx chip objects to, but the > Samsung chip seems to ignore. > > Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Pushed this to l2-mtd-2.6.git.
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index 524af9a..f6cfadb 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c @@ -2576,6 +2576,7 @@ static void onenand_print_device_info(int device, int version) static const struct onenand_manufacturers onenand_manuf_ids[] = { {ONENAND_MFR_SAMSUNG, "Samsung"}, + {ONENAND_MFR_NUMONYX, "Numonyx"}, }; /** @@ -2621,7 +2622,7 @@ static int onenand_probe(struct mtd_info *mtd) /* Save system configuration 1 */ syscfg = this->read_word(this->base + ONENAND_REG_SYS_CFG1); /* Clear Sync. Burst Read mode to read BootRAM */ - this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ), this->base + ONENAND_REG_SYS_CFG1); + this->write_word((syscfg & ~ONENAND_SYS_CFG1_SYNC_READ & ~ONENAND_SYS_CFG1_SYNC_WRITE), this->base + ONENAND_REG_SYS_CFG1); /* Send the command for reading device ID from BootRAM */ this->write_word(ONENAND_CMD_READID, this->base + ONENAND_BOOTRAM); diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h index 9aa2a91..0fa3ac4 100644 --- a/include/linux/mtd/onenand.h +++ b/include/linux/mtd/onenand.h @@ -176,6 +176,7 @@ struct onenand_chip { * OneNAND Flash Manufacturer ID Codes */ #define ONENAND_MFR_SAMSUNG 0xec +#define ONENAND_MFR_NUMONYX 0x20 /** * struct onenand_manufacturers - NAND Flash Manufacturer ID Structure