Lines Matching refs:adap
48 #define setsda(adap, val) adap->setsda(adap->data, val) argument
49 #define setscl(adap, val) adap->setscl(adap->data, val) argument
50 #define getsda(adap) adap->getsda(adap->data) argument
51 #define getscl(adap) adap->getscl(adap->data) argument
53 static inline void sdalo(struct i2c_algo_bit_data *adap) in sdalo() argument
55 setsda(adap, 0); in sdalo()
56 udelay((adap->udelay + 1) / 2); in sdalo()
59 static inline void sdahi(struct i2c_algo_bit_data *adap) in sdahi() argument
61 setsda(adap, 1); in sdahi()
62 udelay((adap->udelay + 1) / 2); in sdahi()
65 static inline void scllo(struct i2c_algo_bit_data *adap) in scllo() argument
67 setscl(adap, 0); in scllo()
68 udelay(adap->udelay / 2); in scllo()
75 static int sclhi(struct i2c_algo_bit_data *adap) in sclhi() argument
79 setscl(adap, 1); in sclhi()
82 if (!adap->getscl) in sclhi()
86 while (!getscl(adap)) { in sclhi()
92 if (time_after(jiffies, start + adap->timeout)) { in sclhi()
96 if (getscl(adap)) in sclhi()
109 udelay(adap->udelay); in sclhi()
115 static void i2c_start(struct i2c_algo_bit_data *adap) in i2c_start() argument
118 setsda(adap, 0); in i2c_start()
119 udelay(adap->udelay); in i2c_start()
120 scllo(adap); in i2c_start()
123 static void i2c_repstart(struct i2c_algo_bit_data *adap) in i2c_repstart() argument
126 sdahi(adap); in i2c_repstart()
127 sclhi(adap); in i2c_repstart()
128 setsda(adap, 0); in i2c_repstart()
129 udelay(adap->udelay); in i2c_repstart()
130 scllo(adap); in i2c_repstart()
134 static void i2c_stop(struct i2c_algo_bit_data *adap) in i2c_stop() argument
137 sdalo(adap); in i2c_stop()
138 sclhi(adap); in i2c_stop()
139 setsda(adap, 1); in i2c_stop()
140 udelay(adap->udelay); in i2c_stop()
157 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in i2c_outb() local
162 setsda(adap, sb); in i2c_outb()
163 udelay((adap->udelay + 1) / 2); in i2c_outb()
164 if (sclhi(adap) < 0) { /* timed out */ in i2c_outb()
176 scllo(adap); in i2c_outb()
178 sdahi(adap); in i2c_outb()
179 if (sclhi(adap) < 0) { /* timeout */ in i2c_outb()
189 ack = !adap->getsda || !getsda(adap); /* ack: sda is pulled low -> success */ in i2c_outb()
193 scllo(adap); in i2c_outb()
205 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in i2c_inb() local
208 sdahi(adap); in i2c_inb()
210 if (sclhi(adap) < 0) { /* timeout */ in i2c_inb()
217 if (getsda(adap)) in i2c_inb()
219 setscl(adap, 0); in i2c_inb()
220 udelay(i == 7 ? adap->udelay / 2 : adap->udelay); in i2c_inb()
232 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in test_bus() local
236 if (adap->pre_xfer) { in test_bus()
237 ret = adap->pre_xfer(i2c_adap); in test_bus()
242 if (adap->getsda == NULL) in test_bus()
244 if (adap->getscl == NULL) in test_bus()
247 sda = adap->getsda ? getsda(adap) : 1; in test_bus()
248 scl = adap->getscl ? getscl(adap) : 1; in test_bus()
254 sdalo(adap); in test_bus()
255 if (adap->getsda && getsda(adap)) { in test_bus()
259 if (adap->getscl && !getscl(adap)) { in test_bus()
264 sdahi(adap); in test_bus()
265 if (adap->getsda && !getsda(adap)) { in test_bus()
269 if (adap->getscl && !getscl(adap)) { in test_bus()
274 scllo(adap); in test_bus()
275 if (adap->getscl && getscl(adap)) { in test_bus()
279 if (adap->getsda && !getsda(adap)) { in test_bus()
284 sclhi(adap); in test_bus()
285 if (adap->getscl && !getscl(adap)) { in test_bus()
289 if (adap->getsda && !getsda(adap)) { in test_bus()
294 if (adap->post_xfer) in test_bus()
295 adap->post_xfer(i2c_adap); in test_bus()
300 sdahi(adap); in test_bus()
301 sclhi(adap); in test_bus()
303 if (adap->post_xfer) in test_bus()
304 adap->post_xfer(i2c_adap); in test_bus()
322 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in try_address() local
330 i2c_stop(adap); in try_address()
331 udelay(adap->udelay); in try_address()
334 i2c_start(adap); in try_address()
387 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in acknak() local
391 setsda(adap, 0); in acknak()
392 udelay((adap->udelay + 1) / 2); in acknak()
393 if (sclhi(adap) < 0) { /* timeout */ in acknak()
397 scllo(adap); in acknak()
408 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in readbytes() local
410 if (!adap->getsda) in readbytes()
470 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_doAddress() local
498 i2c_repstart(adap); in bit_doAddress()
524 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_xfer() local
528 if (adap->pre_xfer) { in bit_xfer()
529 ret = adap->pre_xfer(i2c_adap); in bit_xfer()
535 i2c_start(adap); in bit_xfer()
544 i2c_stop(adap); in bit_xfer()
545 i2c_start(adap); in bit_xfer()
549 i2c_repstart(adap); in bit_xfer()
588 i2c_stop(adap); in bit_xfer()
590 if (adap->post_xfer) in bit_xfer()
591 adap->post_xfer(i2c_adap); in bit_xfer()
604 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_xfer_atomic() local
606 if (!adap->can_do_atomic) in bit_xfer_atomic()
612 static u32 bit_func(struct i2c_adapter *adap) in bit_func() argument
635 static int __i2c_bit_add_bus(struct i2c_adapter *adap, in __i2c_bit_add_bus() argument
638 struct i2c_algo_bit_data *bit_adap = adap->algo_data; in __i2c_bit_add_bus()
642 ret = test_bus(adap); in __i2c_bit_add_bus()
648 adap->algo = &i2c_bit_algo; in __i2c_bit_add_bus()
649 adap->retries = 3; in __i2c_bit_add_bus()
651 adap->quirks = &i2c_bit_quirk_no_clk_stretch; in __i2c_bit_add_bus()
658 ret = add_adapter(adap); in __i2c_bit_add_bus()
663 dev_warn(&adap->dev, "Not I2C compliant: can't read SDA\n"); in __i2c_bit_add_bus()
666 dev_warn(&adap->dev, "Not I2C compliant: can't read SCL\n"); in __i2c_bit_add_bus()
669 dev_warn(&adap->dev, "Bus may be unreliable\n"); in __i2c_bit_add_bus()
674 int i2c_bit_add_bus(struct i2c_adapter *adap) in i2c_bit_add_bus() argument
676 return __i2c_bit_add_bus(adap, i2c_add_adapter); in i2c_bit_add_bus()
680 int i2c_bit_add_numbered_bus(struct i2c_adapter *adap) in i2c_bit_add_numbered_bus() argument
682 return __i2c_bit_add_bus(adap, i2c_add_numbered_adapter); in i2c_bit_add_numbered_bus()