[PATCH] mtd: onenand: fix 4KB page onenand chip recognition

Kyungmin Park kmpark at infradead.org
Mon Oct 11 08:04:10 EDT 2010


Hi,

Good catch. I didn't know that.
My 4KiB pagesize has 0x0102
and 2KiB pagesize has 0x0202

Acked-by: Kyungmin Park <kyungmin.park at samsung.com>

On Mon, Oct 11, 2010 at 8:47 PM, Roman Tereshonkov
<roman.tereshonkov at 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 at 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/
>



More information about the linux-mtd mailing list