[PATCH 2/2] MTD: OneNAND: multiblock erase support

Kyungmin Park kmpark at infradead.org
Fri Sep 18 04:33:10 EDT 2009


On Fri, Sep 18, 2009 at 5:04 PM, Adrian Hunter <adrian.hunter at nokia.com> wrote:
> Korhonen Mika.2 (EXT-Ardites/Oulu) wrote:
>>
>> Hunter Adrian (Nokia-D/Helsinki) wrote:
>>>
>>> Korhonen Mika.2 (EXT-Ardites/Oulu) wrote:
>>>
>>>>
>>>> Add support for multiblock erase command. OneNANDs (excluding
>>>> Flex-OneNAND)
>>>> are capable of simultaneous erase of up to 64 eraseblocks which is much
>>>> faster.
>>>> This changes the erase requests for regions covering multiple
>>>> eraseblocks
>>>> to be performed using multiblock erase.
>>>>
>>>> Signed-off-by: Mika Korhonen <ext-mika.2.korhonen at nokia.com>
>>>> ---
>>>>
>>>
>>> A few comments below.
>>>
>>>
>>
>> [...]
>>>
>>> +               switch (state) {
>>> +               case FL_RESETING:
>>> +                       intr_flags |= ONENAND_INT_RESET;
>>> +                       break;
>>> +               case FL_PREPARING_ERASE:
>>> +                       intr_flags |= ONENAND_INT_ERASE;
>>> +                       break;
>>> +               case FL_VERIFYING_ERASE:
>>> +                       i = 51;
>>>
>>> I see 100us for this in some versions.  Perhaps Kyungmin can suggest
>>> a value.
>>>
>>
>> With the chip I had the actual time for 64-eb verify read was in the range
>> of 20-30 us but you're right, there are chips for which the maximum time is
>> specified to be 100 us. Is ok to just raise this to that value? Kyungmin?
>>
>> [...]
>>>>
>>>> +
>>>> +       /* loop over 64 eb batches */
>>>> +       while (len) {
>>>> +               struct erase_info verify_instr = *instr;
>>>> +               verify_instr.addr = addr;
>>>> +               verify_instr.len = 0;
>>>> +
>>>> +               eb_count = 0;
>>>> +
>>>> +               while (len > block_size &&
>>>> +                      eb_count < (MB_ERASE_MAX_BLK_COUNT - 1)) {
>>>>
>>>
>>> According to the manual I have you cannot do a multiblock erase
>>> across a chip boundary, so you must exit this loop at the boundary too.
>>>
>>
>> Ok, does this apply DDP chips only?
>
> Yes, AFAIK. Kyungmin?

Of course, Actually DDP has two chips. can't share the info between chips.
That's the reason to check DDP. :)

Thank you,
Kyungmin Park



More information about the linux-mtd mailing list