5 #include <linux/of_device.h>
 
   6 #include <linux/list.h>
 
   8 struct bbc_i2c_client {
 
   9         struct bbc_i2c_bus              *bp;
 
  15 enum fan_action { FAN_SLOWER, FAN_SAME, FAN_FASTER, FAN_FULLBLAST, FAN_STATE_MAX };
 
  17 struct bbc_cpu_temperature {
 
  18         struct list_head                bp_list;
 
  19         struct list_head                glob_list;
 
  21         struct bbc_i2c_client           *client;
 
  24         /* Current readings, and history. */
 
  34         enum fan_action                 fan_todo[2];
 
  39 struct bbc_fan_control {
 
  40         struct list_head                bp_list;
 
  41         struct list_head                glob_list;
 
  43         struct bbc_i2c_client           *client;
 
  51 #define NUM_CHILDREN    8
 
  54         struct bbc_i2c_bus              *next;
 
  57         void                            __iomem *i2c_bussel_reg;
 
  58         void                            __iomem *i2c_control_regs;
 
  59         unsigned char                   own, clock;
 
  64         struct list_head                temps;
 
  65         struct list_head                fans;
 
  69                 struct of_device        *device;
 
  74 /* Probing and attachment. */
 
  75 extern struct of_device *bbc_i2c_getdev(struct bbc_i2c_bus *, int);
 
  76 extern struct bbc_i2c_client *bbc_i2c_attach(struct bbc_i2c_bus *bp, struct of_device *);
 
  77 extern void bbc_i2c_detach(struct bbc_i2c_client *);
 
  79 /* Register read/write.  NOTE: Blocking! */
 
  80 extern int bbc_i2c_writeb(struct bbc_i2c_client *, unsigned char val, int off);
 
  81 extern int bbc_i2c_readb(struct bbc_i2c_client *, unsigned char *byte, int off);
 
  82 extern int bbc_i2c_write_buf(struct bbc_i2c_client *, char *buf, int len, int off);
 
  83 extern int bbc_i2c_read_buf(struct bbc_i2c_client *, char *buf, int len, int off);
 
  85 #endif /* _BBC_I2C_H */