19 #define DEV_ADDR0 0x50 20 #define DEV_ADDR1 0x51 22 #define EEPROMSIZE ((long)1024*1024/8) // 24C1024(1Mbits = 128KBytes) 23 #define ONEDEVSIZE (64*1024) // 1デバイスのバイト数 24 #define BLOCKSIZE 256 // 24C1024 27 static char i2c_devname[MAX_DEVNAMELRN];
28 static unsigned long eeprom_addr;
30 static int eeprom_register(
struct st_device *dev,
char *param)
35 SYSERR_PRINT(
"No I2C device name\n");
44 static int eeprom_unregister(
struct st_device *dev)
49 static int eeprom_open(
struct st_device *dev)
54 static int eeprom_close(
struct st_device *dev)
59 static int eeprom_read(
struct st_device *dev,
void *data,
unsigned int size)
62 unsigned char dev_addr;
67 SYSERR_PRINT(
"Cannot open device %s.\n", i2c_devname);
71 if(eeprom_addr < ONEDEVSIZE) {
91 static int eeprom_write(
struct st_device *dev,
const void *data,
unsigned int size)
94 unsigned char dev_addr;
99 SYSERR_PRINT(
"Cannot open device %s.\n", i2c_devname);
103 if(eeprom_addr < ONEDEVSIZE) {
104 dev_addr = DEV_ADDR0;
106 dev_addr = DEV_ADDR1;
123 static int eeprom_seek(
struct st_device *dev,
int offset,
int whence)
127 eeprom_addr = offset;
131 eeprom_addr += offset;
135 eeprom_addr = EEPROMSIZE - offset;
146 .
name = DEF_DEV_NAME_EEPRMOM,
147 .explan =
"EEPROM(24C1024)",
148 .register_dev = eeprom_register,
149 .unregister_dev = eeprom_unregister,
151 .close = eeprom_close,
153 .write = eeprom_write,
unsigned char uchar
GadgetSeedの文字(列)は unsigned char 型となる
#define IOCMD_I2C_MEMADDRSIZE
Memory Address Size 8bit or 16bit etc
struct st_device * open_device(char *name)
デバイスをオープンする
int write_device(struct st_device *dev, const void *buf, unsigned int count)
デバイスにデータを書き込む
int read_device(struct st_device *dev, void *buf, unsigned int count)
デバイスよりデータを読み出す
#define I2C_MEM_ADDR_SIZE_16BIT
I2Cスレーブデバイスメモリアドレスサイズは16ビット
int unlock_device(struct st_device *dev)
デバイスをアンロックする
#define IOCMD_I2C_SLAVE_ADDR7
Set Save 7bit Address
uchar * strncopy(uchar *dest, const uchar *src, unsigned int n)
文字列コピー
int close_device(struct st_device *dev)
デバイスをクローズする
#define SEEK_END
ファイルサイズに加算
int ioctl_device(struct st_device *dev, unsigned int com, unsigned int arg, void *param)
デバイスを制御する
char name[MAX_DEVNAMELRN]
デバイス名文字列
int lock_device(struct st_device *dev, unsigned int timeout)
デバイスをロックする