mirror of
https://github.com/u-boot/u-boot.git
synced 2025-01-27 05:03:28 +08:00
CFI: synchronize command offsets with Linux CFI driver
Fixes non-working CFI Flash on the Inka4x0 board. Signed-off-by: Bartlomiej Sieka <tur@semihalf.com>
This commit is contained in:
parent
9692c2734a
commit
42026c9cb3
@ -1231,9 +1231,26 @@ static int flash_detect_cfi (flash_info_t * info)
|
||||
debug ("port %d bits chip %d bits\n",
|
||||
info->portwidth << CFI_FLASH_SHIFT_WIDTH,
|
||||
info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
|
||||
/* this probably only works if info->interface == FLASH_CFI_X8X16 */
|
||||
info->addr_unlock1 = (info->portwidth == FLASH_CFI_8BIT) ? 0xAAA : 0x555;
|
||||
info->addr_unlock2 = (info->portwidth == FLASH_CFI_8BIT) ? 0x555 : 0x2AA;
|
||||
|
||||
/* calculate command offsets as in the Linux driver */
|
||||
info->addr_unlock1 = 0x555;
|
||||
info->addr_unlock2 = 0x2aa;
|
||||
|
||||
/*
|
||||
* modify the unlock address if we are
|
||||
* in compatibility mode
|
||||
*/
|
||||
if ( /* x8/x16 in x8 mode */
|
||||
((info->chipwidth == FLASH_CFI_BY8) &&
|
||||
(info->interface == FLASH_CFI_X8X16)) ||
|
||||
/* x16/x32 in x16 mode */
|
||||
((info->chipwidth == FLASH_CFI_BY16) &&
|
||||
(info->interface == FLASH_CFI_X16X32)))
|
||||
{
|
||||
info->addr_unlock1 = 0xaaa;
|
||||
info->addr_unlock2 = 0x555;
|
||||
}
|
||||
|
||||
info->name = "CFI conformant";
|
||||
return 1;
|
||||
}
|
||||
|
@ -80,6 +80,7 @@ typedef struct {
|
||||
#define FLASH_CFI_X8 0x00
|
||||
#define FLASH_CFI_X16 0x01
|
||||
#define FLASH_CFI_X8X16 0x02
|
||||
#define FLASH_CFI_X16X32 0x05
|
||||
|
||||
/* convert between bit value and numeric value */
|
||||
#define CFI_FLASH_SHIFT_WIDTH 3
|
||||
|
Loading…
Reference in New Issue
Block a user