Issue in oamp nand driver with 32-bit reads in prefetch mode

Vimal Singh vimal.newwork at gmail.com
Mon Jan 11 01:30:53 EST 2010


On Sun, Jan 10, 2010 at 2:16 PM, Artem Bityutskiy <dedekind1 at gmail.com> wrote:
> On Thu, 2009-12-31 at 17:50 +0530, Vimal Singh wrote:
>> There is a bug in nand prefetch read routine, which comes into effect
>> only if nand device is a 16-bit device (as we have in zoom boards).
>> This bug is effective only with below combination of conditions:
>> 1. nand deivce, in use, is a 16 bit device
>> 2. nand driver supports 'subpage' read
>> 3. SW ECC is in use
>>
>> This was not seen old  kernel (ex: .23), because when, in early days,
>> we tested this (nand prefetch read in LDP boards) there was no
>> 'subpage read' support.
>> Later when we had subpage read in (.27) kernel, we had hw ecc enabled
>> always in our internal tree. So, we missed this bug.
>>
>> Here is a patch to fix this issue:
>>
>> diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
>> index 1bb799f..75004fe 100644
>> --- a/drivers/mtd/nand/omap2.c
>> +++ b/drivers/mtd/nand/omap2.c
>> @@ -295,11 +295,14 @@ static void omap_read_buf_pref(struct
>>       u32 *p = (u32 *)buf;
>>
>>       /* take care of subpage reads */
>> -     for (; len % 4 != 0; ) {
>> -             *buf++ = __raw_readb(info->nand.IO_ADDR_R);
>> -             len--;
>> +     if (len % 4) {
>> +             if (info->nand.options & NAND_BUSWIDTH_16)
>> +                     omap_read_buf16(mtd, buf, len % 4);
>> +             else
>> +                     omap_read_buf8(mtd, buf, len % 4);
>> +             p = (u32 *) (buf + len % 4);
>> +             len -= len % 4;
>>       }
>> -     p = (u32 *) buf;
>>
>>       /* configure and start prefetch transfer */
>>       ret = gpmc_prefetch_enable(info->gpmc_cs, 0x0, len, 0x0);
>
> Pushed this patch to my l2-mtd-2.6.git/dunno.
>

I have posted this patch formally in patch series:
[PATCH 0/3][NAND][OMAP]: fixing omap nand driver issues

Corresponding patch is:
[PATCH 3/3][NAND][OMAP] : Fixing issue in oamp nand driver in prefetch mode read

Can you please give a look for this patch series?

-- 
Regards,
Vimal Singh



More information about the linux-arm-kernel mailing list