flash.h 2.53 KB
Newer Older
Ronald G. Minnich's avatar
Ronald G. Minnich committed
1 2 3
#ifndef __FLASH_H__
#define __FLASH_H__ 1

4 5
#include <sys/io.h>
#include <unistd.h>
6
#include <stdint.h>
7 8

struct flashchip {
9
	char *name;
10 11 12
	int manufacture_id;
	int model_id;

13
	volatile uint8_t *virt_addr;
14 15 16 17 18
	int total_size;
	int page_size;

	int (*probe) (struct flashchip * flash);
	int (*erase) (struct flashchip * flash);
19 20
	int (*write) (struct flashchip * flash, uint8_t *buf);
	int (*read) (struct flashchip * flash, uint8_t *buf);
Ronald G. Minnich's avatar
Ronald G. Minnich committed
21

Ronald G. Minnich's avatar
Ronald G. Minnich committed
22
	int fd_mem;
23
	volatile uint8_t *virt_addr_2;
24 25
};

26 27
extern struct flashchip flashchips[];

28 29
#define AMD_ID            0x01
#define AM_29F040B        0xA4
Stefan Reinauer's avatar
Stefan Reinauer committed
30
#define AM_29F016D        0xAD
31

32 33
#define ATMEL_ID          0x1F	/* Winbond Manufacture ID code        */
#define AT_29C040A        0xA4	/* Winbond w29c020c device code */
34 35 36 37

#define MX_ID             0xC2
#define MX_29F002         0xB0

Ronald G. Minnich's avatar
Ronald G. Minnich committed
38 39 40
#define SHARP_ID            0xB0
#define SHARP_LHF00L04      0xCF

41
#define SST_ID            0xBF	/* SST Manufacturer ID code   */
42 43 44 45
#define SST_29EE020A      0x10	/* SST 29EE020 device code      */
#define SST_28SF040       0x04	/* SST 29EE040 device code    */
#define SST_39SF020       0xB6	/* SST 39SF020  device        */
#define SST_39VF020       0xD6	/* SST 39VF020  device        */
Scott Tsai's avatar
Scott Tsai committed
46
#define SST_49LF040B	  0x50	/* SST 49LF040B device */
David Hendricks's avatar
David Hendricks committed
47
#define SST_49LF040	  0x51	/* SST 49LF040 device */
48
#define SST_49LF080A	  0x5B	/* SST 48LF080A device */
49 50 51 52
#define SST_49LF002A	  0x57	/* SST 49LF002A device */
#define SST_49LF003A	  0x1B	/* SST 49LF003A device */
#define SST_49LF004A	  0x60	/* SST 49LF004A device */
#define SST_49LF008A	  0x5A	/* SST 49LF008A device */
53

54
#define PMC_ID            0x9D	/* PMC Manufacturer ID[B code   */
55
#define PMC_49FL002       0x6D	/* PMC 49FL002 device code      */
56
#define PMC_49FL004       0x6E	/* PMC 49FL004 device code      */
57

58 59 60
#define WINBOND_ID        0xDA	/* Winbond Manufacture ID code  */
#define W_29C011          0xC1	/* Winbond w29c011 device code */
#define W_29C020C         0x45	/* Winbond w29c020c device code */
Stefan Reinauer's avatar
Stefan Reinauer committed
61 62
#define W_39V040A         0x3D	/* Winbond w39v040a device code */
#define W_49F002U         0x0B	/* Winbond w49F002u device code */
63
#define W_49V002A         0xB0  /* Winbond W49V002A device code */
64

65
#define ST_ID       	  0x20
Stefan Reinauer's avatar
Stefan Reinauer committed
66
#define ST_M29F040B       0xE2
67 68
#define ST_M29F400BT      0xD5

Ronald G. Minnich's avatar
Ronald G. Minnich committed
69
#define MSYSTEMS_ID       0x156f
70 71 72
#define MSYSTEMS_MD2200   0xdb	/* ? */
#define MSYSTEMS_MD2800   0x30	/* hmm -- both 0x30 */
#define MSYSTEMS_MD2802   0x30	/* hmm -- both 0x30 */
73

Ronald G. Minnich's avatar
Ronald G. Minnich committed
74
extern void myusec_delay(int time);
75 76
extern void myusec_calibrate_delay();
extern int enable_flash_write(void);
77
#endif				/* !__FLASH_H__ */