| #ifndef FLASH_LIB_H | |
| #define FLASH_LIB_H | |
| #include <common.h> | |
| /* PIO operations max */ | |
| #define FLASH_PROGRAM_POLLS 100000 | |
| /* 10 Seconds default */ | |
| #define FLASH_ERASE_SECTOR_TIMEOUT (10*1000 /*SEC*/ ) | |
| /* Flash device info structure */ | |
| typedef struct flash_dev_s { | |
| char name[24]; /* Bank Name */ | |
| int bank; /* Bank 0 or 1 */ | |
| unsigned int base; /* Base address */ | |
| int sectors; /* Sector count */ | |
| int lgSectorSize; /* Log2(usable bytes/sector) */ | |
| int vendorID; /* Expected vendor ID */ | |
| int deviceID; /* Expected device ID */ | |
| int found; /* Set if found by flashLibInit */ | |
| int swap; /* Set for bank 1 if byte swap req'd */ | |
| } flash_dev_t; | |
| #define FLASH_MAX_POS(dev) \ | |
| ((dev)->sectors << (dev)->lgSectorSize) | |
| #define FLASH_SECTOR_POS(dev, sector) \ | |
| ((sector) << (dev)->lgSectorSize) | |
| /* AMD 29F040 */ | |
| #define FLASH0_BANK 0 | |
| #define FLASH0_VENDOR_ID 0x01 | |
| #define FLASH0_DEVICE_ID 0x49 | |
| /* AMD29LV160DB */ | |
| #define FLASH1_BANK 1 | |
| #define FLASH1_VENDOR_ID 0x0001 | |
| #define FLASH1_DEVICE_ID 0x2249 | |
| extern flash_dev_t flashDev[]; | |
| extern int flashDevCount; | |
| /* | |
| * Device pointers | |
| * | |
| * These must be kept in sync with the table in flashLib.c. | |
| */ | |
| #define FLASH_DEV_BANK0_SA0 (&flashDev[0]) | |
| #define FLASH_DEV_BANK0_SA1 (&flashDev[1]) | |
| #define FLASH_DEV_BANK0_SA2 (&flashDev[2]) | |
| #define FLASH_DEV_BANK0_LOW (&flashDev[3]) /* 960K */ | |
| #define FLASH_DEV_BANK0_BOOT (&flashDev[4]) /* PLCC */ | |
| #define FLASH_DEV_BANK0_HIGH (&flashDev[5]) /* 512K PLCC shadow */ | |
| unsigned long flash_init(void); | |
| int flashEraseSector(flash_dev_t *dev, int sector); | |
| int flashErase(flash_dev_t *dev); | |
| int flashRead(flash_dev_t *dev, int pos, char *buf, int len); | |
| int flashWrite(flash_dev_t *dev, int pos, char *buf, int len); | |
| int flashWritable(flash_dev_t *dev, int pos, int len); | |
| int flashDiag(flash_dev_t *dev); | |
| int flashDiagAll(void); | |
| ulong flash_get_size (vu_long *addr, flash_info_t *info); | |
| void flash_print_info (flash_info_t *info); | |
| int flash_erase (flash_info_t *info, int s_first, int s_last); | |
| int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt); | |
| /* | |
| * Flash info indices. | |
| */ | |
| #define FLASH_BANK_KERNEL 0 | |
| #define FLASH_BANK_BOOT 1 | |
| #define FLASH_BANK_AUX 2 | |
| #define FIRST_SECTOR 0 | |
| #endif /* !FLASH_LIB_H */ |