[U-Boot-Users] [PATCH] CFI driver AMD Command Set Top boot geometry reversal, etc. [Updated]

Tolunay Orkun
2006-11-10T15:47:03Z

Stefan,

Stefan Roese wrote:
> Hi Tolunay,
>
> On Friday 10 November 2006 00:46, Tolunay Orkun wrote:
>
>> This patch (replaces patch submitted via DNX#2006110942000016):
>>
>> * Adds support for AMD command set Top Boot flash geometry reversal
>> * Adds support for reading JEDEC Manufacturer ID and Device ID
>> * Adds support for displaying command set, manufacturer id and
>> device ids (flinfo)
>> * Makes flinfo output to be consistent when CFG_FLASH_EMPTY_INFO defined
>> * Removes outdated change history (refer to git log instead)
>>
>
> I tied you patch one a board with a ST M29W160ET FLASH, that couldn't be
> handled by the "old" CFI driver, because of the geometry reversal. I had
> hoped your patch would have solved this issue. Unfortunately not:
>
> => fli
>
> Bank # 1: CFI conformant FLASH (16 x 16) Size: 2 MB in 35 Sectors
> AMD Standard command set, Manufacturer ID: 0x05, Device ID: 0x56
> Erase timeout: 8192 ms, write timeout: 1 ms
>
> Sector Start Addresses:
> FFE00000 FFE04000 FFE06000 FFE08000 FFE10000
> FFE20000 E FFE30000 E FFE40000 E FFE50000 E FFE60000 E
> FFE70000 E FFE80000 E FFE90000 E FFEA0000 E FFEB0000 E
> FFEC0000 E FFED0000 E FFEE0000 E FFEF0000 E FFF00000 E
> FFF10000 E FFF20000 E FFF30000 E FFF40000 E FFF50000 E
> FFF60000 E FFF70000 E FFF80000 E FFF90000 E FFFA0000
> RO
> FFFB0000 RO FFFC0000 RO FFFD0000 RO FFFE0000 RO FFFF0000
> RO
>
>
> As you may notice, even the ID's are not correct (0020 and 22c4 are correct)
> and the geometry is not correct (bottom instead of top).
>
The DeviceID detection seems still broken for AMD at this moment. I
might be reading the actual data or possibly wrong offsets. The
Manufacturer ID should be 0x20 and Device Id should be displayed as 0xC4
(I might add code to get that 0x22 but if a word/byte device is in byte
mode 0x22 part is not available)

I need your help. Can you compile cfi_flash.c with DEBUG and capture the
output as U-Boot boots. Also, the output of following commands please.

mw.w ffe00555 00aa
mw.w ffe002aa 0055
mw.w ffe00555 0090
md ffe00000
mw.w ffe00000 00f0

Even if detection is right we might fail sometimes with CFI version 1.0
which your ST part is according to datasheet. But in your case if we can
identify the device id as 0xC4 it would be designated as top boot
(because msb is set) and it would work. The bottom boot version of the
device would have device id 0x49 [By the way device ids have odd parity
according to MTD code]

We might need to add specific device IDs to the driver as exceptions for
some CFI 1.0 cases. Linux driver did not have a good solution for this
either. But for your case as soon as device id algorithm is fixed it
should work fine.