home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / i2c-pxa.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.2 KB  |  49 lines

  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 */
  49.