[U-Boot] [PATCH 11/11] cfi_flash: return device into read array mode after reading status

Stefan Roese sr at denx.de
Tue Mar 22 07:40:44 CET 2016


Hi Vasily,

On 21.03.2016 20:22, Vasily Khoruzhick wrote:
> On Mon, Mar 21, 2016 at 9:19 AM, Stefan Roese <sr at denx.de> wrote:
>> Hi Vasily,
>
> Hi Stefan,
>
>> On 21.03.2016 02:54, Marek Vasut wrote:
>>> On 03/21/2016 02:37 AM, Vasily Khoruzhick wrote:
>>>> Otherwise flash remains in read status mode and it's not possible
>>>> to access data on flash.
>>>>
>>>> Signed-off-by: Vasily Khoruzhick <anarsoul at gmail.com>
>>>
>>> CCing Stefan and Scott on this one.
>>>
>>>> ---
>>>>    drivers/mtd/cfi_flash.c | 2 ++
>>>>    1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
>>>> index 39932f4..18831c6 100644
>>>> --- a/drivers/mtd/cfi_flash.c
>>>> +++ b/drivers/mtd/cfi_flash.c
>>>> @@ -2203,6 +2203,8 @@ ulong flash_get_size (phys_addr_t base, int banknum)
>>>>                                               flash_isset (info, sect_cnt,
>>>>                                                            FLASH_OFFSET_PROTECT,
>>>>                                                            FLASH_STATUS_PROTECT);
>>>> +                                    flash_write_cmd(info, sect_cnt, 0,
>>>> +                                                    FLASH_CMD_RESET);
>>>>                                       break;
>>>>                               case CFI_CMDSET_AMD_EXTENDED:
>>>>                               case CFI_CMDSET_AMD_STANDARD:
>>>>
>>
>> I can't test this patch, since I don't have such a board here
>> available right now any more. But I'm wondering if this is really
>> necessary. The driver used to work just fine on Intel Strata
>> flash chips without this patch.
>>
>> And looking at the code, a bit later (after the loop) the flash
>> is actually reset:
>
> It sends status cmd for each erase block to check if it's protected or
> not, and apparently this chip (Manufacturer ID 0x000089 Chip ID
> 0x008865) wants reset for each erase block as well.
> Otherwise it returns status data instead of actual data. Btw, that is
> exactly what Linux driver does.

I see. Okay, then:

Acked-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan



More information about the U-Boot mailing list