Add support for ASD AE49F2008
[coreboot.git] / util / flashrom / flash.h
1 #ifndef __FLASH_H__
2 #define __FLASH_H__ 1
3
4 #include <sys/io.h>
5 #include <unistd.h>
6 #include <stdint.h>
7
8 struct flashchip {
9         char *name;
10         int manufacture_id;
11         int model_id;
12
13         volatile uint8_t *virt_addr;
14         int total_size;
15         int page_size;
16
17         int (*probe) (struct flashchip * flash);
18         int (*erase) (struct flashchip * flash);
19         int (*write) (struct flashchip * flash, uint8_t *buf);
20         int (*read) (struct flashchip * flash, uint8_t *buf);
21
22         int fd_mem;
23         volatile uint8_t *virt_addr_2;
24 };
25
26 extern struct flashchip flashchips[];
27
28 #define AMD_ID            0x01
29 #define AM_29F040B        0xA4
30 #define AM_29F016D        0xAD
31
32 #define ASD_ID            0x25
33 #define ASD_AE49F2008     0x52
34
35 #define ATMEL_ID          0x1F  /* Winbond Manufacture ID code        */
36 #define AT_29C040A        0xA4  /* Winbond w29c020c device code */
37
38 #define MX_ID             0xC2
39 #define MX_29F002         0xB0
40
41 #define SHARP_ID            0xB0
42 #define SHARP_LHF00L04      0xCF
43
44 #define SST_ID            0xBF  /* SST Manufacturer ID code */
45 #define SST_29EE020A      0x10  /* SST 29EE020 device */
46 #define SST_28SF040       0x04  /* SST 29EE040 device */
47 #define SST_39SF010       0xB5  /* SST 39SF010A device */
48 #define SST_39SF020       0xB6  /* SST 39SF020A device */
49 #define SST_39SF040       0xB7  /* SST 39SF040 device */
50 #define SST_39VF020       0xD6  /* SST 39VF020 device */
51 #define SST_49LF040B      0x50  /* SST 49LF040B device */
52 #define SST_49LF040       0x51  /* SST 49LF040 device */
53 #define SST_49LF020A      0x52  /* SST 49LF020A device */
54 #define SST_49LF080A      0x5B  /* SST 48LF080A device */
55 #define SST_49LF002A      0x57  /* SST 49LF002A device */
56 #define SST_49LF003A      0x1B  /* SST 49LF003A device */
57 #define SST_49LF004A      0x60  /* SST 49LF004A device */
58 #define SST_49LF008A      0x5A  /* SST 49LF008A device */
59
60 #define PMC_ID            0x9D  /* PMC Manufacturer ID code   */
61 #define PMC_49FL002       0x6D  /* PMC 49FL002 device code      */
62 #define PMC_49FL004       0x6E  /* PMC 49FL004 device code      */
63
64 #define WINBOND_ID        0xDA  /* Winbond Manufacture ID code  */
65 #define W_29C011          0xC1  /* Winbond w29c011 device code */
66 #define W_29C020C         0x45  /* Winbond w29c020c device code */
67 #define W_39V040A         0x3D  /* Winbond w39v040a device code */
68 #define W_39V040B         0x54  /* Winbond w39v040b device code */
69 #define W_49F002U         0x0B  /* Winbond w49F002u device code */
70 #define W_49V002A         0xB0  /* Winbond W49V002A device code */
71 #define W_49V002FA        0x32  /* Winbond W49V002FA device code */
72
73 #define ST_ID             0x20
74 #define ST_M29F040B       0xE2
75 #define ST_M29F400BT      0xD5
76
77 #define EMST_ID           0x8c /* EMST - Elite Flash Storage Inc. Manufacturer ID code */
78 #define EMST_F49B002UA    0x00 /* EMST F49B002UA device code */
79
80 #define MSYSTEMS_ID       0x156f
81 #define MSYSTEMS_MD2200   0xdb  /* ? */
82 #define MSYSTEMS_MD2800   0x30  /* hmm -- both 0x30 */
83 #define MSYSTEMS_MD2802   0x30  /* hmm -- both 0x30 */
84
85 #define SYNCMOS_ID        0x40  /* SyncMOS ID */
86 #define S29C51001T        0x01  /* SyncMOS S29C51001T/B */
87 #define S29C51002T        0x02  /* SyncMOS S29C51002T/B */
88 #define S29C51004T        0x03  /* SyncMOS S29C51004T/B */
89 #define S29C31004T        0x63  /* SyncMOS S29C31004T */
90
91 extern void myusec_delay(int time);
92 extern void myusec_calibrate_delay();
93 extern int enable_flash_write(void);
94 #endif                          /* !__FLASH_H__ */