
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.