Lines Matching refs:adap

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