Lines Matching refs:adap

26 #define pca_outw(adap, reg, val) adap->write_byte(adap->data, reg, val)  argument
27 #define pca_inw(adap, reg) adap->read_byte(adap->data, reg) argument
29 #define pca_status(adap) pca_inw(adap, I2C_PCA_STA) argument
30 #define pca_clock(adap) adap->i2c_clock argument
31 #define pca_set_con(adap, val) pca_outw(adap, I2C_PCA_CON, val) argument
32 #define pca_get_con(adap) pca_inw(adap, I2C_PCA_CON) argument
33 #define pca_wait(adap) adap->wait_for_completion(adap->data) argument
35 static void pca_reset(struct i2c_algo_pca_data *adap) in pca_reset() argument
37 if (adap->chip == I2C_PCA_CHIP_9665) { in pca_reset()
41 pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IPRESET); in pca_reset()
42 pca_outw(adap, I2C_PCA_IND, 0xA5); in pca_reset()
43 pca_outw(adap, I2C_PCA_IND, 0x5A); in pca_reset()
49 pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_IMODE); in pca_reset()
50 pca_outw(adap, I2C_PCA_IND, adap->bus_settings.mode); in pca_reset()
51 pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLL); in pca_reset()
52 pca_outw(adap, I2C_PCA_IND, adap->bus_settings.tlow); in pca_reset()
53 pca_outw(adap, I2C_PCA_INDPTR, I2C_PCA_ISCLH); in pca_reset()
54 pca_outw(adap, I2C_PCA_IND, adap->bus_settings.thi); in pca_reset()
56 pca_set_con(adap, I2C_PCA_CON_ENSIO); in pca_reset()
58 adap->reset_chip(adap->data); in pca_reset()
59 pca_set_con(adap, I2C_PCA_CON_ENSIO | adap->bus_settings.clock_freq); in pca_reset()
68 static int pca_start(struct i2c_algo_pca_data *adap) in pca_start() argument
70 int sta = pca_get_con(adap); in pca_start()
74 pca_set_con(adap, sta); in pca_start()
75 return pca_wait(adap); in pca_start()
83 static int pca_repeated_start(struct i2c_algo_pca_data *adap) in pca_repeated_start() argument
85 int sta = pca_get_con(adap); in pca_repeated_start()
89 pca_set_con(adap, sta); in pca_repeated_start()
90 return pca_wait(adap); in pca_repeated_start()
102 static void pca_stop(struct i2c_algo_pca_data *adap) in pca_stop() argument
104 int sta = pca_get_con(adap); in pca_stop()
108 pca_set_con(adap, sta); in pca_stop()
116 static int pca_address(struct i2c_algo_pca_data *adap, in pca_address() argument
119 int sta = pca_get_con(adap); in pca_address()
125 pca_outw(adap, I2C_PCA_DAT, addr); in pca_address()
128 pca_set_con(adap, sta); in pca_address()
130 return pca_wait(adap); in pca_address()
138 static int pca_tx_byte(struct i2c_algo_pca_data *adap, in pca_tx_byte() argument
141 int sta = pca_get_con(adap); in pca_tx_byte()
143 pca_outw(adap, I2C_PCA_DAT, b); in pca_tx_byte()
146 pca_set_con(adap, sta); in pca_tx_byte()
148 return pca_wait(adap); in pca_tx_byte()
156 static void pca_rx_byte(struct i2c_algo_pca_data *adap, in pca_rx_byte() argument
159 *b = pca_inw(adap, I2C_PCA_DAT); in pca_rx_byte()
168 static int pca_rx_ack(struct i2c_algo_pca_data *adap, in pca_rx_ack() argument
171 int sta = pca_get_con(adap); in pca_rx_ack()
178 pca_set_con(adap, sta); in pca_rx_ack()
179 return pca_wait(adap); in pca_rx_ack()
186 struct i2c_algo_pca_data *adap = i2c_adap->algo_data; in pca_xfer() local
195 while ((state = pca_status(adap)) != 0xf8) { in pca_xfer()
231 state = pca_status(adap); in pca_xfer()
238 completed = pca_start(adap); in pca_xfer()
243 completed = pca_address(adap, msg); in pca_xfer()
249 completed = pca_tx_byte(adap, in pca_xfer()
256 pca_stop(adap); in pca_xfer()
258 completed = pca_repeated_start(adap); in pca_xfer()
263 pca_stop(adap); in pca_xfer()
268 completed = pca_rx_ack(adap, msg->len > 1); in pca_xfer()
273 pca_rx_byte(adap, &msg->buf[numbytes], 1); in pca_xfer()
275 completed = pca_rx_ack(adap, in pca_xfer()
281 pca_stop(adap); in pca_xfer()
283 completed = pca_repeated_start(adap); in pca_xfer()
288 pca_stop(adap); in pca_xfer()
294 pca_stop(adap); in pca_xfer()
308 pca_start(adap); in pca_xfer()
313 pca_rx_byte(adap, &msg->buf[numbytes], 0); in pca_xfer()
316 pca_stop(adap); in pca_xfer()
318 completed = pca_repeated_start(adap); in pca_xfer()
323 pca_stop(adap); in pca_xfer()
329 pca_reset(adap); in pca_xfer()
334 pca_reset(adap); in pca_xfer()
338 pca_reset(adap); in pca_xfer()
353 curmsg, num, pca_status(adap), in pca_xfer()
354 pca_get_con(adap)); in pca_xfer()
358 static u32 pca_func(struct i2c_adapter *adap) in pca_func() argument
368 static unsigned int pca_probe_chip(struct i2c_adapter *adap) in pca_probe_chip() argument
370 struct i2c_algo_pca_data *pca_data = adap->algo_data; in pca_probe_chip()
382 printk(KERN_INFO "%s: PCA9665 detected.\n", adap->name); in pca_probe_chip()
385 printk(KERN_INFO "%s: PCA9564 detected.\n", adap->name); in pca_probe_chip()
391 static int pca_init(struct i2c_adapter *adap) in pca_init() argument
393 struct i2c_algo_pca_data *pca_data = adap->algo_data; in pca_init()
395 adap->algo = &pca_algo; in pca_init()
397 if (pca_probe_chip(adap) == I2C_PCA_CHIP_9564) { in pca_init()
430 " Using default 59kHz.\n", adap->name); in pca_init()
437 " Use the nominal frequency.\n", adap->name); in pca_init()
442 adap->name, freqs[clock]); in pca_init()
465 " Using 1265.8kHz.\n", adap->name); in pca_init()
471 " Using 60.3kHz.\n", adap->name); in pca_init()
522 "%s: Clock frequency is %dHz\n", adap->name, clock * 100); in pca_init()
532 int i2c_pca_add_bus(struct i2c_adapter *adap) in i2c_pca_add_bus() argument
536 rval = pca_init(adap); in i2c_pca_add_bus()
540 return i2c_add_adapter(adap); in i2c_pca_add_bus()
544 int i2c_pca_add_numbered_bus(struct i2c_adapter *adap) in i2c_pca_add_numbered_bus() argument
548 rval = pca_init(adap); in i2c_pca_add_numbered_bus()
552 return i2c_add_numbered_adapter(adap); in i2c_pca_add_numbered_bus()