Message ID | 1286797652-13610-1-git-send-email-roman.tereshonkov@nokia.com |
---|---|
State | Accepted |
Commit | edb44b9b9cbff71f6aa9bebc384ee1896c8bfc2c |
Headers | show |
Hi, Good catch. I didn't know that. My 4KiB pagesize has 0x0102 and 2KiB pagesize has 0x0202 Acked-by: Kyungmin Park <kyungmin.park@samsung.com> On Mon, Oct 11, 2010 at 8:47 PM, Roman Tereshonkov <roman.tereshonkov@nokia.com> wrote: > For 4Gb non-DDP chip it does not follow that it is always 4KB page chip. > The number of data buffers is checked and if it is equal to 1 > we suppose that it is 4KB page onenand chip. > > Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> > --- > drivers/mtd/onenand/onenand_base.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c > index a2bb520..3684313 100644 > --- a/drivers/mtd/onenand/onenand_base.c > +++ b/drivers/mtd/onenand/onenand_base.c > @@ -3365,18 +3365,19 @@ static int onenand_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, > static void onenand_check_features(struct mtd_info *mtd) > { > struct onenand_chip *this = mtd->priv; > - unsigned int density, process; > + unsigned int density, process, numbufs; > > /* Lock scheme depends on density and process */ > density = onenand_get_density(this->device_id); > process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT; > + numbufs = this->read_word(this->base + ONENAND_REG_NUM_BUFFERS) >> 8; > > /* Lock scheme */ > switch (density) { > case ONENAND_DEVICE_DENSITY_4Gb: > if (ONENAND_IS_DDP(this)) > this->options |= ONENAND_HAS_2PLANE; > - else > + else if (numbufs == 1) > this->options |= ONENAND_HAS_4KB_PAGE; > > case ONENAND_DEVICE_DENSITY_2Gb: > -- > 1.7.0.4 > > > ______________________________________________________ > Linux MTD discussion mailing list > http://lists.infradead.org/mailman/listinfo/linux-mtd/ >
On Mon, 2010-10-11 at 14:47 +0300, Roman Tereshonkov wrote: > For 4Gb non-DDP chip it does not follow that it is always 4KB page chip. > The number of data buffers is checked and if it is equal to 1 > we suppose that it is 4KB page onenand chip. > > Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> > --- > drivers/mtd/onenand/onenand_base.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) Pushed to l2-mtd-2.6.git, thanks!
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index a2bb520..3684313 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c @@ -3365,18 +3365,19 @@ static int onenand_lock_user_prot_reg(struct mtd_info *mtd, loff_t from, static void onenand_check_features(struct mtd_info *mtd) { struct onenand_chip *this = mtd->priv; - unsigned int density, process; + unsigned int density, process, numbufs; /* Lock scheme depends on density and process */ density = onenand_get_density(this->device_id); process = this->version_id >> ONENAND_VERSION_PROCESS_SHIFT; + numbufs = this->read_word(this->base + ONENAND_REG_NUM_BUFFERS) >> 8; /* Lock scheme */ switch (density) { case ONENAND_DEVICE_DENSITY_4Gb: if (ONENAND_IS_DDP(this)) this->options |= ONENAND_HAS_2PLANE; - else + else if (numbufs == 1) this->options |= ONENAND_HAS_4KB_PAGE; case ONENAND_DEVICE_DENSITY_2Gb:
For 4Gb non-DDP chip it does not follow that it is always 4KB page chip. The number of data buffers is checked and if it is equal to 1 we suppose that it is 4KB page onenand chip. Signed-off-by: Roman Tereshonkov <roman.tereshonkov@nokia.com> --- drivers/mtd/onenand/onenand_base.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)