diff options
author | Linus Torvalds | 2005-09-08 15:43:09 -0700 |
---|---|---|
committer | Linus Torvalds | 2005-09-08 15:43:09 -0700 |
commit | c0d6f9663b30a09ed725229b2d50391268c8538e (patch) | |
tree | 7ba471cf9632097682ab55689cd64c9a68e11235 /include/linux | |
parent | 0db7443b2bd0b92da4e8afa46f8123a7076136c6 (diff) | |
parent | 6fd60fa97b706e52abba7c9f810b148aa230817f (diff) |
Merge master.kernel.org:/home/rmk/linux-2.6-i2c manually
Old tree, so the automatic merge had some problems.
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/i2c-pxa.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/linux/i2c-pxa.h b/include/linux/i2c-pxa.h new file mode 100644 index 000000000000..5f3eaf802223 --- /dev/null +++ b/include/linux/i2c-pxa.h @@ -0,0 +1,48 @@ +#ifndef _LINUX_I2C_ALGO_PXA_H +#define _LINUX_I2C_ALGO_PXA_H + +struct i2c_eeprom_emu_watcher { + void (*write)(void *, unsigned int addr, unsigned char newval); +}; + +struct i2c_eeprom_emu_watch { + struct list_head node; + unsigned int start; + unsigned int end; + struct i2c_eeprom_emu_watcher *ops; + void *data; +}; + +#define I2C_EEPROM_EMU_SIZE (256) + +struct i2c_eeprom_emu { + unsigned int size; + unsigned int ptr; + unsigned int seen_start; + struct list_head watch; + + unsigned char bytes[I2C_EEPROM_EMU_SIZE]; +}; + +typedef enum i2c_slave_event_e { + I2C_SLAVE_EVENT_START_READ, + I2C_SLAVE_EVENT_START_WRITE, + I2C_SLAVE_EVENT_STOP +} i2c_slave_event_t; + +struct i2c_slave_client { + void *data; + void (*event)(void *ptr, i2c_slave_event_t event); + int (*read) (void *ptr); + void (*write)(void *ptr, unsigned int val); +}; + +extern int i2c_eeprom_emu_addwatcher(struct i2c_eeprom_emu *, void *data, + unsigned int addr, unsigned int size, + struct i2c_eeprom_emu_watcher *); + +extern void i2c_eeprom_emu_delwatcher(struct i2c_eeprom_emu *, void *data, struct i2c_eeprom_emu_watcher *watcher); + +extern struct i2c_eeprom_emu *i2c_pxa_get_eeprom(void); + +#endif /* _LINUX_I2C_ALGO_PXA_H */ |