123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 |
- #ifndef _FLASH_H_
- #define _FLASH_H_
- #ifndef CONFIG_SYS_MAX_FLASH_SECT
- #define CONFIG_SYS_MAX_FLASH_SECT 512
- #endif
- typedef struct {
- ulong size;
- ushort sector_count;
- ulong flash_id;
- ulong start[CONFIG_SYS_MAX_FLASH_SECT];
- uchar protect[CONFIG_SYS_MAX_FLASH_SECT];
- #ifdef CONFIG_SYS_FLASH_CFI
- uchar portwidth;
- uchar chipwidth;
- ushort buffer_size;
- ulong erase_blk_tout;
- ulong write_tout;
- ulong buffer_write_tout;
- ushort vendor;
- ushort cmd_reset;
- uchar cmd_erase_sector;
- ushort interface;
- ushort legacy_unlock;
- ushort manufacturer_id;
- ushort device_id;
- ushort device_id2;
- ushort ext_addr;
- ushort cfi_version;
- ushort cfi_offset;
- ulong addr_unlock1;
- ulong addr_unlock2;
- const char *name;
- #endif
- #ifdef CONFIG_MTD
- struct mtd_info *mtd;
- #endif
- } flash_info_t;
- extern flash_info_t flash_info[];
- typedef unsigned long flash_sect_t;
- #define FLASH_CFI_8BIT 0x01
- #define FLASH_CFI_16BIT 0x02
- #define FLASH_CFI_32BIT 0x04
- #define FLASH_CFI_64BIT 0x08
- #define FLASH_CFI_BY8 0x01
- #define FLASH_CFI_BY16 0x02
- #define FLASH_CFI_BY32 0x04
- #define FLASH_CFI_BY64 0x08
- #define CFI_FLASH_SHIFT_WIDTH 3
- #define FLASH_CFI_X8 0x00
- #define FLASH_CFI_X16 0x01
- #define FLASH_CFI_X8X16 0x02
- #define FLASH_CFI_X16X32 0x05
- #define CFI_FLASH_SHIFT_WIDTH 3
- extern unsigned long flash_init (void);
- extern void flash_protect_default(void);
- extern void flash_print_info (flash_info_t *);
- extern int flash_erase (flash_info_t *, int, int);
- extern int flash_sect_erase (ulong addr_first, ulong addr_last);
- extern int flash_sect_protect (int flag, ulong addr_first, ulong addr_last);
- extern int flash_sect_roundb (ulong *addr);
- extern unsigned long flash_sector_size(flash_info_t *info, flash_sect_t sect);
- extern void flash_set_verbose(uint);
- extern void flash_protect (int flag, ulong from, ulong to, flash_info_t *info);
- extern int flash_write (char *, ulong, ulong);
- extern flash_info_t *addr2info (ulong);
- extern int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
- #ifdef CONFIG_FLASH_CFI_MTD
- extern int cfi_mtd_init(void);
- #endif
- #if defined(CONFIG_SYS_FLASH_PROTECTION)
- extern int flash_real_protect(flash_info_t *info, long sector, int prot);
- extern void flash_read_user_serial(flash_info_t * info, void * buffer, int offset, int len);
- extern void flash_read_factory_serial(flash_info_t * info, void * buffer, int offset, int len);
- #endif
- #ifdef CONFIG_FLASH_CFI_LEGACY
- extern ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info);
- extern int jedec_flash_match(flash_info_t *info, ulong base);
- #define CFI_CMDSET_AMD_LEGACY 0xFFF0
- #endif
- #if defined(CONFIG_SYS_FLASH_CFI)
- extern flash_info_t *flash_get_info(ulong base);
- #endif
- #define ERR_OK 0
- #define ERR_TIMOUT 1
- #define ERR_NOT_ERASED 2
- #define ERR_PROTECTED 4
- #define ERR_INVAL 8
- #define ERR_ALIGN 16
- #define ERR_UNKNOWN_FLASH_VENDOR 32
- #define ERR_UNKNOWN_FLASH_TYPE 64
- #define ERR_PROG_ERROR 128
- #define ERR_ABORTED 256
- #define FLAG_PROTECT_SET 0x01
- #define FLAG_PROTECT_CLEAR 0x02
- #define FLAG_PROTECT_INVALID 0x03
- #define FLAG_SETENV 0x80
- #define AMD_MANUFACT 0x00010001
- #define FUJ_MANUFACT 0x00040004
- #define ATM_MANUFACT 0x001F001F
- #define STM_MANUFACT 0x00200020
- #define SST_MANUFACT 0x00BF00BF
- #define MT_MANUFACT 0x00890089
- #define INTEL_MANUFACT 0x00890089
- #define INTEL_ALT_MANU 0x00B000B0
- #define MX_MANUFACT 0x00C200C2
- #define TOSH_MANUFACT 0x00980098
- #define MT2_MANUFACT 0x002C002C
- #define EXCEL_MANUFACT 0x004A004A
- #define AMIC_MANUFACT 0x00370037
- #define WINB_MANUFACT 0x00DA00DA
- #define EON_ALT_MANU 0x001C001C
- #define EON_MANUFACT 0x011C011C
-
- #define MT_ID_28F400_T 0x44704470
- #define MT_ID_28F400_B 0x44714471
- #define AMD_ID_LV040B 0x4F
-
-
- #define AMD_ID_F033C 0xA3
-
-
- #define AMD_ID_F065D 0x93
-
-
- #define ATM_ID_LV040 0x13
-
-
- #define AMD_ID_F040B 0xA4
-
-
- #define STM_ID_M29W040B 0xE3
-
-
- #define AMD_ID_F080B 0xD5
-
-
- #define AMD_ID_F016D 0xAD
- #define AMD_ID_F032B 0x41
- #define AMD_ID_LV116DT 0xC7
- #define AMD_ID_LV116DB 0x4C
- #define AMD_ID_LV016B 0xc8
- #define AMD_ID_PL160CB 0x22452245
- #define AMD_ID_LV400T 0x22B922B9
- #define AMD_ID_LV400B 0x22BA22BA
- #define AMD_ID_LV033C 0xA3
- #define AMD_ID_LV065D 0x93
- #define AMD_ID_LV800T 0x22DA22DA
- #define AMD_ID_LV800B 0x225B225B
- #define AMD_ID_LV160T 0x22C422C4
- #define AMD_ID_LV160B 0x22492249
- #define AMD_ID_DL163T 0x22282228
- #define AMD_ID_DL163B 0x222B222B
- #define AMD_ID_LV320T 0x22F622F6
- #define MX_ID_LV320T 0x22A722A7
- #define AMD_ID_LV320B 0x22F922F9
- #define MX_ID_LV320B 0x22A822A8
- #define AMD_ID_DL322T 0x22552255
- #define AMD_ID_DL322B 0x22562256
- #define AMD_ID_DL323T 0x22502250
- #define AMD_ID_DL323B 0x22532253
- #define AMD_ID_DL324T 0x225C225C
- #define AMD_ID_DL324B 0x225F225F
- #define AMD_ID_DL640 0x227E227E
- #define AMD_ID_MIRROR 0x227E227E
- #define AMD_ID_DL640G_2 0x22022202
- #define AMD_ID_DL640G_3 0x22012201
- #define AMD_ID_LV640U_2 0x220C220C
- #define AMD_ID_LV640U_3 0x22012201
- #define AMD_ID_LV640MT_2 0x22102210
- #define AMD_ID_LV640MT_3 0x22012201
- #define AMD_ID_LV640MB_2 0x22102210
- #define AMD_ID_LV640MB_3 0x22002200
- #define AMD_ID_LV128U_2 0x22122212
- #define AMD_ID_LV128U_3 0x22002200
- #define AMD_ID_LV256U_2 0x22122212
- #define AMD_ID_LV256U_3 0x22012201
- #define AMD_ID_GL064M_2 0x22132213
- #define AMD_ID_GL064M_3 0x22012201
- #define AMD_ID_GL064MT_2 0x22102210
- #define AMD_ID_GL064MT_3 0x22012201
- #define AMD_ID_GL128N_2 0x22212221
- #define AMD_ID_GL128N_3 0x22012201
- #define AMD_ID_LV320B_2 0x221A221A
- #define AMD_ID_LV320B_3 0x22002200
- #define AMD_ID_LV640U 0x22D722D7
- #define AMD_ID_LV650U 0x22D722D7
- #define ATM_ID_BV1614 0x000000C0
- #define ATM_ID_BV1614A 0x000000C8
- #define ATM_ID_BV6416 0x000000D6
- #define FUJI_ID_29F800BA 0x22582258
- #define FUJI_ID_29F800TA 0x22D622D6
- #define FUJI_ID_29LV650UE 0x22d722d7
- #define SST_ID_xF200A 0x27892789
- #define SST_ID_xF400A 0x27802780
- #define SST_ID_xF800A 0x27812781
- #define SST_ID_xF160A 0x27822782
- #define SST_ID_xF1601 0x234B234B
- #define SST_ID_xF1602 0x234A234A
- #define SST_ID_xF3201 0x235B235B
- #define SST_ID_xF3202 0x235A235A
- #define SST_ID_xF6401 0x236B236B
- #define SST_ID_xF6402 0x236A236A
- #define SST_ID_xF020 0xBFD6BFD6
- #define SST_ID_xF040 0xBFD7BFD7
- #define STM_ID_F040B 0xE2
-
- #define STM_ID_x800AB 0x005B005B
- #define STM_ID_29W320DT 0x22CA22CA
- #define STM_ID_29W320DB 0x22CB22CB
- #define STM_ID_29W320ET 0x22562256
- #define STM_ID_29W320EB 0x22572257
- #define STM_ID_29W040B 0x00E300E3
- #define FLASH_PSD4256GV 0x00E9
- #define INTEL_ID_28F016S 0x66a066a0
- #define INTEL_ID_28F800B3T 0x88928892
- #define INTEL_ID_28F800B3B 0x88938893
- #define INTEL_ID_28F160B3T 0x88908890
- #define INTEL_ID_28F160B3B 0x88918891
- #define INTEL_ID_28F320B3T 0x88968896
- #define INTEL_ID_28F320B3B 0x88978897
- #define INTEL_ID_28F640B3T 0x88988898
- #define INTEL_ID_28F640B3B 0x88998899
- #define INTEL_ID_28F160F3B 0x88F488F4
- #define INTEL_ID_28F800C3T 0x88C088C0
- #define INTEL_ID_28F800C3B 0x88C188C1
- #define INTEL_ID_28F160C3T 0x88C288C2
- #define INTEL_ID_28F160C3B 0x88C388C3
- #define INTEL_ID_28F320C3T 0x88C488C4
- #define INTEL_ID_28F320C3B 0x88C588C5
- #define INTEL_ID_28F640C3T 0x88CC88CC
- #define INTEL_ID_28F640C3B 0x88CD88CD
- #define INTEL_ID_28F128J3 0x89188918
- #define INTEL_ID_28F320J5 0x00140014
- #define INTEL_ID_28F640J5 0x00150015
- #define INTEL_ID_28F320J3A 0x00160016
- #define INTEL_ID_28F640J3A 0x00170017
- #define INTEL_ID_28F128J3A 0x00180018
- #define INTEL_ID_28F256J3A 0x001D001D
- #define INTEL_ID_28F256L18T 0x880D880D
- #define INTEL_ID_28F64K3 0x88018801
- #define INTEL_ID_28F128K3 0x88028802
- #define INTEL_ID_28F256K3 0x88038803
- #define INTEL_ID_28F64P30T 0x88178817
- #define INTEL_ID_28F64P30B 0x881A881A
- #define INTEL_ID_28F128P30T 0x88188818
- #define INTEL_ID_28F128P30B 0x881B881B
- #define INTEL_ID_28F256P30T 0x88198819
- #define INTEL_ID_28F256P30B 0x881C881C
- #define INTEL_ID_28F160S3 0x00D000D0
- #define INTEL_ID_28F320S3 0x00D400D4
- #define SHARP_ID_28F016SCL 0xAAAAAAAA
- #define SHARP_ID_28F016SCZ 0xA0A0A0A0
- #define SHARP_ID_28F008SC 0xA6A6A6A6
-
- #define TOSH_ID_FVT160 0xC2
- #define TOSH_ID_FVB160 0x43
- #define NUMONYX_256MBIT 0x8922
- #define FLASH_AM040 0x0001
-
-
-
-
-
- #define FLASH_AM400T 0x0002
- #define FLASH_AM400B 0x0003
- #define FLASH_AM800T 0x0004
- #define FLASH_AM800B 0x0005
- #define FLASH_AM116DT 0x0026
- #define FLASH_AM116DB 0x0027
- #define FLASH_AM160T 0x0006
- #define FLASH_AM160LV 0x0046
- #define FLASH_AM160B 0x0007
- #define FLASH_AM320T 0x0008
- #define FLASH_AM320B 0x0009
- #define FLASH_AM080 0x000A
-
- #define FLASH_AMDL322T 0x0010
- #define FLASH_AMDL322B 0x0011
- #define FLASH_AMDL323T 0x0012
- #define FLASH_AMDL323B 0x0013
- #define FLASH_AMDL324T 0x0014
- #define FLASH_AMDL324B 0x0015
- #define FLASH_AMDLV033C 0x0018
- #define FLASH_AMDLV065D 0x001A
- #define FLASH_AMDL640 0x0016
- #define FLASH_AMD016 0x0018
- #define FLASH_AMDL640MB 0x0019
- #define FLASH_AMDL640MT 0x001A
- #define FLASH_SST200A 0x0040
- #define FLASH_SST400A 0x0042
- #define FLASH_SST800A 0x0044
- #define FLASH_SST160A 0x0046
- #define FLASH_SST320 0x0048
- #define FLASH_SST640 0x004A
- #define FLASH_SST020 0x0024
- #define FLASH_SST040 0x000E
- #define FLASH_STM800AB 0x0051
- #define FLASH_STMW320DT 0x0052
- #define FLASH_STMW320DB 0x0053
- #define FLASH_STM320DB 0x00CB
- #define FLASH_STM800DT 0x00D7
- #define FLASH_STM800DB 0x005B
- #define FLASH_MCHP100T 0x0060
- #define FLASH_MCHP100B 0x0061
- #define FLASH_28F400_T 0x0062
- #define FLASH_28F400_B 0x0063
- #define FLASH_INTEL800T 0x0074
- #define FLASH_INTEL800B 0x0075
- #define FLASH_INTEL160T 0x0076
- #define FLASH_INTEL160B 0x0077
- #define FLASH_INTEL320T 0x0078
- #define FLASH_INTEL320B 0x0079
- #define FLASH_INTEL640T 0x007A
- #define FLASH_INTEL640B 0x007B
- #define FLASH_28F008S5 0x0080
- #define FLASH_28F016SV 0x0081
- #define FLASH_28F800_B 0x0083
- #define FLASH_AM29F800B 0x0084
- #define FLASH_28F320J5 0x0085
- #define FLASH_28F160S3 0x0086
- #define FLASH_28F320S3 0x0088
- #define FLASH_AM640U 0x0090
- #define FLASH_AM033C 0x0091
- #define FLASH_LH28F016SCT 0x0092
- #define FLASH_28F160F3B 0x0093
- #define FLASH_AM065D 0x0093
- #define FLASH_28F640J5 0x0099
- #define FLASH_28F800C3T 0x009A
- #define FLASH_28F800C3B 0x009B
- #define FLASH_28F160C3T 0x009C
- #define FLASH_28F160C3B 0x009D
- #define FLASH_28F320C3T 0x009E
- #define FLASH_28F320C3B 0x009F
- #define FLASH_28F640C3T 0x00A0
- #define FLASH_28F640C3B 0x00A1
- #define FLASH_AMLV320U 0x00A2
- #define FLASH_AM033 0x00A3
- #define FLASH_AM065 0x0093
- #define FLASH_AT040 0x00A5
- #define FLASH_AMLV640U 0x00A4
- #define FLASH_AMLV128U 0x00A6
- #define FLASH_AMLV320B 0x00A7
- #define FLASH_AMLV320T 0x00A8
- #define FLASH_AMLV256U 0x00AA
- #define FLASH_MXLV320B 0x00AB
- #define FLASH_MXLV320T 0x00AC
- #define FLASH_28F256L18T 0x00B0
- #define FLASH_AMDL163T 0x00B2
- #define FLASH_AMDL163B 0x00B3
- #define FLASH_28F64K3 0x00B4
- #define FLASH_28F128K3 0x00B6
- #define FLASH_28F256K3 0x00B8
- #define FLASH_28F320J3A 0x00C0
- #define FLASH_28F640J3A 0x00C2
- #define FLASH_28F128J3A 0x00C4
- #define FLASH_28F256J3A 0x00C6
- #define FLASH_FUJLV650 0x00D0
- #define FLASH_MT28S4M16LC 0x00E1
- #define FLASH_S29GL064M 0x00F0
- #define FLASH_S29GL128N 0x00F1
- #define FLASH_STM32 0x00F2
- #define FLASH_STM32F1 0x00F3
- #define FLASH_UNKNOWN 0xFFFF
- #define FLASH_MAN_AMD 0x00000000
- #define FLASH_MAN_FUJ 0x00010000
- #define FLASH_MAN_BM 0x00020000
- #define FLASH_MAN_MX 0x00030000
- #define FLASH_MAN_STM 0x00040000
- #define FLASH_MAN_TOSH 0x00050000
- #define FLASH_MAN_EXCEL 0x00060000
- #define FLASH_MAN_SST 0x00100000
- #define FLASH_MAN_INTEL 0x00300000
- #define FLASH_MAN_MT 0x00400000
- #define FLASH_MAN_SHARP 0x00500000
- #define FLASH_MAN_ATM 0x00600000
- #define FLASH_MAN_CFI 0x01000000
- #define FLASH_MAN_MCHP 0x02000000
- #define FLASH_TYPEMASK 0x0000FFFF
- #define FLASH_VENDMASK 0xFFFF0000
- #define FLASH_AMD_COMP 0x000FFFFF
-
-
- #define FLASH_BTYPE 0x0001
- #define FLASH_ERASE_TIMEOUT 120000
- #define FLASH_WRITE_TIMEOUT 500
- #endif
|