mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 14:10:43 +00:00
Merge git://www.denx.de/git/u-boot-cfi-flash
This commit is contained in:
commit
9241265f29
3 changed files with 25 additions and 6 deletions
|
@ -111,11 +111,9 @@ static void cfi_flash_init_dm(void)
|
|||
}
|
||||
}
|
||||
|
||||
static phys_addr_t cfi_flash_base[CFI_MAX_FLASH_BANKS];
|
||||
|
||||
phys_addr_t cfi_flash_bank_addr(int i)
|
||||
{
|
||||
return cfi_flash_base[i];
|
||||
return flash_info[i].base;
|
||||
}
|
||||
#else
|
||||
__weak phys_addr_t cfi_flash_bank_addr(int i)
|
||||
|
@ -546,7 +544,16 @@ static int flash_is_busy (flash_info_t * info, flash_sect_t sect)
|
|||
#ifdef CONFIG_FLASH_CFI_LEGACY
|
||||
case CFI_CMDSET_AMD_LEGACY:
|
||||
#endif
|
||||
retval = flash_toggle (info, sect, 0, AMD_STATUS_TOGGLE);
|
||||
if (info->sr_supported) {
|
||||
flash_write_cmd (info, sect, info->addr_unlock1,
|
||||
FLASH_CMD_READ_STATUS);
|
||||
retval = !flash_isset (info, sect, 0,
|
||||
FLASH_STATUS_DONE);
|
||||
} else {
|
||||
retval = flash_toggle (info, sect, 0,
|
||||
AMD_STATUS_TOGGLE);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
retval = 0;
|
||||
|
@ -1687,6 +1694,7 @@ static void cmdset_amd_read_jedec_ids(flash_info_t *info)
|
|||
{
|
||||
ushort bankId = 0;
|
||||
uchar manuId;
|
||||
uchar lsbits;
|
||||
|
||||
flash_write_cmd(info, 0, 0, AMD_CMD_RESET);
|
||||
flash_unlock_seq(info, 0);
|
||||
|
@ -1702,6 +1710,9 @@ static void cmdset_amd_read_jedec_ids(flash_info_t *info)
|
|||
}
|
||||
info->manufacturer_id = manuId;
|
||||
|
||||
lsbits = flash_read_uchar(info, FLASH_OFFSET_LOWER_SW_BITS);
|
||||
info->sr_supported = lsbits & BIT(0);
|
||||
|
||||
switch (info->chipwidth){
|
||||
case FLASH_CFI_8BIT:
|
||||
info->device_id = flash_read_uchar (info,
|
||||
|
@ -2458,10 +2469,12 @@ static int cfi_flash_probe(struct udevice *dev)
|
|||
while (idx < len) {
|
||||
addr = fdt_translate_address((void *)blob,
|
||||
node, cell + idx);
|
||||
cfi_flash_base[cfi_flash_num_flash_banks++] = addr;
|
||||
flash_info[cfi_flash_num_flash_banks].dev = dev;
|
||||
flash_info[cfi_flash_num_flash_banks].base = addr;
|
||||
cfi_flash_num_flash_banks++;
|
||||
idx += addrc + sizec;
|
||||
}
|
||||
gd->bd->bi_flashstart = cfi_flash_base[0];
|
||||
gd->bd->bi_flashstart = flash_info[0].base;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -42,11 +42,16 @@ typedef struct {
|
|||
ushort cfi_offset; /* offset for cfi query */
|
||||
ulong addr_unlock1; /* unlock address 1 for AMD flash roms */
|
||||
ulong addr_unlock2; /* unlock address 2 for AMD flash roms */
|
||||
uchar sr_supported; /* status register supported */
|
||||
const char *name; /* human-readable name */
|
||||
#endif
|
||||
#ifdef CONFIG_MTD
|
||||
struct mtd_info *mtd;
|
||||
#endif
|
||||
#ifdef CONFIG_CFI_FLASH /* DM-specific parts */
|
||||
struct udevice *dev;
|
||||
phys_addr_t base;
|
||||
#endif
|
||||
} flash_info_t;
|
||||
|
||||
extern flash_info_t flash_info[]; /* info for FLASH chips */
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
|
||||
#define FLASH_OFFSET_MANUFACTURER_ID 0x00
|
||||
#define FLASH_OFFSET_DEVICE_ID 0x01
|
||||
#define FLASH_OFFSET_LOWER_SW_BITS 0x0C
|
||||
#define FLASH_OFFSET_DEVICE_ID2 0x0E
|
||||
#define FLASH_OFFSET_DEVICE_ID3 0x0F
|
||||
#define FLASH_OFFSET_CFI 0x55
|
||||
|
|
Loading…
Reference in a new issue