diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-15 07:38:14 -0400 |
---|---|---|
committer | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-06-15 07:38:14 -0400 |
commit | b652b438fcad4c9c079d0774e9d45ee58fae22e2 (patch) | |
tree | 8911e5232e55f436491f24d19d802c4f49d7749c /include/linux | |
parent | c0105338eb4e61e537ca34ae06921177cb6efcf0 (diff) |
[PATCH] I2C: Add PXA I2C driver
Add support for the I2C PXA driver.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/i2c-id.h | 1 | ||||
-rw-r--r-- | include/linux/i2c-pxa.h | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 89270ce51470..74d6dc942715 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
@@ -203,6 +203,7 @@ | |||
203 | #define I2C_ALGO_MV64XXX 0x190000 /* Marvell mv64xxx i2c ctlr */ | 203 | #define I2C_ALGO_MV64XXX 0x190000 /* Marvell mv64xxx i2c ctlr */ |
204 | #define I2C_ALGO_PCA 0x1a0000 /* PCA 9564 style adapters */ | 204 | #define I2C_ALGO_PCA 0x1a0000 /* PCA 9564 style adapters */ |
205 | #define I2C_ALGO_AU1550 0x1b0000 /* Au1550 PSC algorithm */ | 205 | #define I2C_ALGO_AU1550 0x1b0000 /* Au1550 PSC algorithm */ |
206 | #define I2C_ALGO_PXA 0x1c0000 /* Intel PXA I2C algorithm */ | ||
206 | 207 | ||
207 | #define I2C_ALGO_EXP 0x800000 /* experimental */ | 208 | #define I2C_ALGO_EXP 0x800000 /* experimental */ |
208 | 209 | ||
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 @@ | |||
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 */ | ||