aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2005-06-15 07:38:14 -0400
committerRussell King <rmk@dyn-67.arm.linux.org.uk>2005-06-15 07:38:14 -0400
commitb652b438fcad4c9c079d0774e9d45ee58fae22e2 (patch)
tree8911e5232e55f436491f24d19d802c4f49d7749c /include/linux
parentc0105338eb4e61e537ca34ae06921177cb6efcf0 (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.h1
-rw-r--r--include/linux/i2c-pxa.h48
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
4struct i2c_eeprom_emu_watcher {
5 void (*write)(void *, unsigned int addr, unsigned char newval);
6};
7
8struct 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
18struct 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
27typedef 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
33struct 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
40extern 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
44extern void i2c_eeprom_emu_delwatcher(struct i2c_eeprom_emu *, void *data, struct i2c_eeprom_emu_watcher *watcher);
45
46extern struct i2c_eeprom_emu *i2c_pxa_get_eeprom(void);
47
48#endif /* _LINUX_I2C_ALGO_PXA_H */