Lines Matching refs:adap
39 #define set_pcf(adap, ctl, val) adap->setpcf(adap->data, ctl, val) argument
40 #define get_pcf(adap, ctl) adap->getpcf(adap->data, ctl) argument
41 #define get_own(adap) adap->getown(adap->data) argument
42 #define get_clock(adap) adap->getclock(adap->data) argument
43 #define i2c_outb(adap, val) adap->setpcf(adap->data, 0, val) argument
44 #define i2c_inb(adap) adap->getpcf(adap->data, 0) argument
48 static void i2c_start(struct i2c_algo_pcf_data *adap) in i2c_start() argument
51 set_pcf(adap, 1, I2C_PCF_START); in i2c_start()
54 static void i2c_repstart(struct i2c_algo_pcf_data *adap) in i2c_repstart() argument
57 set_pcf(adap, 1, I2C_PCF_REPSTART); in i2c_repstart()
60 static void i2c_stop(struct i2c_algo_pcf_data *adap) in i2c_stop() argument
63 set_pcf(adap, 1, I2C_PCF_STOP); in i2c_stop()
66 static void handle_lab(struct i2c_algo_pcf_data *adap, const int *status) in handle_lab() argument
77 set_pcf(adap, 1, I2C_PCF_PIN); in handle_lab()
78 set_pcf(adap, 1, I2C_PCF_ESO); in handle_lab()
88 if (adap->lab_mdelay) in handle_lab()
89 mdelay(adap->lab_mdelay); in handle_lab()
93 get_pcf(adap, 1))); in handle_lab()
96 static int wait_for_bb(struct i2c_algo_pcf_data *adap) in wait_for_bb() argument
102 status = get_pcf(adap, 1); in wait_for_bb()
106 status = get_pcf(adap, 1); in wait_for_bb()
117 static int wait_for_pin(struct i2c_algo_pcf_data *adap, int *status) in wait_for_pin() argument
122 *status = get_pcf(adap, 1); in wait_for_pin()
125 adap->waitforpin(adap->data); in wait_for_pin()
126 *status = get_pcf(adap, 1); in wait_for_pin()
129 handle_lab(adap, status); in wait_for_pin()
150 static int pcf_init_8584 (struct i2c_algo_pcf_data *adap) in pcf_init_8584() argument
155 get_pcf(adap, 1))); in pcf_init_8584()
158 set_pcf(adap, 1, I2C_PCF_PIN); in pcf_init_8584()
163 if (((temp = get_pcf(adap, 1)) & 0x7f) != (0)) { in pcf_init_8584()
169 i2c_outb(adap, get_own(adap)); in pcf_init_8584()
171 if ((temp = i2c_inb(adap)) != get_own(adap)) { in pcf_init_8584()
177 set_pcf(adap, 1, I2C_PCF_PIN | I2C_PCF_ES1); in pcf_init_8584()
179 if (((temp = get_pcf(adap, 1)) & 0x7f) != I2C_PCF_ES1) { in pcf_init_8584()
185 i2c_outb(adap, get_clock(adap)); in pcf_init_8584()
187 if (((temp = i2c_inb(adap)) & 0x1f) != get_clock(adap)) { in pcf_init_8584()
193 set_pcf(adap, 1, I2C_PCF_IDLE); in pcf_init_8584()
196 if ((temp = get_pcf(adap, 1)) != (I2C_PCF_PIN | I2C_PCF_BB)) { in pcf_init_8584()
209 struct i2c_algo_pcf_data *adap = i2c_adap->algo_data; in pcf_sendbytes() local
215 i2c_outb(adap, buf[wrcount]); in pcf_sendbytes()
216 timeout = wait_for_pin(adap, &status); in pcf_sendbytes()
221 i2c_stop(adap); in pcf_sendbytes()
226 i2c_stop(adap); in pcf_sendbytes()
232 i2c_stop(adap); in pcf_sendbytes()
234 i2c_repstart(adap); in pcf_sendbytes()
243 struct i2c_algo_pcf_data *adap = i2c_adap->algo_data; in pcf_readbytes() local
249 if ((wfp = wait_for_pin(adap, &status))) { in pcf_readbytes()
253 i2c_stop(adap); in pcf_readbytes()
259 i2c_stop(adap); in pcf_readbytes()
265 set_pcf(adap, 1, I2C_PCF_ESO); in pcf_readbytes()
268 i2c_stop(adap); in pcf_readbytes()
270 i2c_repstart(adap); in pcf_readbytes()
274 buf[i - 1] = i2c_inb(adap); in pcf_readbytes()
276 i2c_inb(adap); /* dummy read */ in pcf_readbytes()
283 static int pcf_doAddress(struct i2c_algo_pcf_data *adap, in pcf_doAddress() argument
290 i2c_outb(adap, addr); in pcf_doAddress()
299 struct i2c_algo_pcf_data *adap = i2c_adap->algo_data; in pcf_xfer() local
304 if (adap->xfer_begin) in pcf_xfer()
305 adap->xfer_begin(adap->data); in pcf_xfer()
308 timeout = wait_for_bb(adap); in pcf_xfer()
323 ret = pcf_doAddress(adap, pmsg); in pcf_xfer()
327 i2c_start(adap); in pcf_xfer()
330 timeout = wait_for_pin(adap, &status); in pcf_xfer()
337 i2c_stop(adap); in pcf_xfer()
346 i2c_stop(adap); in pcf_xfer()
379 if (adap->xfer_end) in pcf_xfer()
380 adap->xfer_end(adap->data); in pcf_xfer()
384 static u32 pcf_func(struct i2c_adapter *adap) in pcf_func() argument
399 int i2c_pcf_add_bus(struct i2c_adapter *adap) in i2c_pcf_add_bus() argument
401 struct i2c_algo_pcf_data *pcf_adap = adap->algo_data; in i2c_pcf_add_bus()
404 DEB2(dev_dbg(&adap->dev, "hw routines registered.\n")); in i2c_pcf_add_bus()
407 adap->algo = &pcf_algo; in i2c_pcf_add_bus()
412 rval = i2c_add_adapter(adap); in i2c_pcf_add_bus()