diff options
Diffstat (limited to 'include/linux/i2c-pxa.h')
-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 00000000000..5f3eaf80222 --- /dev/null +++ b/include/linux/i2c-pxa.h | |||
@@ -0,0 +1,48 @@ | |||
1 | #ifndef _LINUX_I2C_ALGO_PXA_H | ||
2 | #define _LINUX_I2C_ALGO_PXA_H | ||
3 | |||
4 | struct i2c_eeprom_emu_watcher { | ||
5 | void (*write)(void *, unsigned int addr, unsigned char newval); | ||
6 | }; | ||
7 | |||
8 | struct i2c_eeprom_emu_watch { | ||
9 | struct list_head node; | ||
10 | unsigned int start; | ||
11 | unsigned int end; | ||
12 | struct i2c_eeprom_emu_watcher *ops; | ||
13 | void *data; | ||
14 | }; | ||
15 | |||
16 | #define I2C_EEPROM_EMU_SIZE (256) | ||
17 | |||
18 | struct i2c_eeprom_emu { | ||
19 | unsigned int size; | ||
20 | unsigned int ptr; | ||
21 | unsigned int seen_start; | ||
22 | struct list_head watch; | ||
23 | |||
24 | unsigned char bytes[I2C_EEPROM_EMU_SIZE]; | ||
25 | }; | ||
26 | |||
27 | typedef enum i2c_slave_event_e { | ||
28 | I2C_SLAVE_EVENT_START_READ, | ||
29 | I2C_SLAVE_EVENT_START_WRITE, | ||
30 | I2C_SLAVE_EVENT_STOP | ||
31 | } i2c_slave_event_t; | ||
32 | |||
33 | struct i2c_slave_client { | ||
34 | void *data; | ||
35 | void (*event)(void *ptr, i2c_slave_event_t event); | ||
36 | int (*read) (void *ptr); | ||
37 | void (*write)(void *ptr, unsigned int val); | ||
38 | }; | ||
39 | |||
40 | extern int i2c_eeprom_emu_addwatcher(struct i2c_eeprom_emu *, void *data, | ||
41 | unsigned int addr, unsigned int size, | ||
42 | struct i2c_eeprom_emu_watcher *); | ||
43 | |||
44 | extern void i2c_eeprom_emu_delwatcher(struct i2c_eeprom_emu *, void *data, struct i2c_eeprom_emu_watcher *watcher); | ||
45 | |||
46 | extern struct i2c_eeprom_emu *i2c_pxa_get_eeprom(void); | ||
47 | |||
48 | #endif /* _LINUX_I2C_ALGO_PXA_H */ | ||