Lines Matching refs:adap

57 #define setsda(adap, val)	adap->setsda(adap->data, val)  argument
58 #define setscl(adap, val) adap->setscl(adap->data, val) argument
59 #define getsda(adap) adap->getsda(adap->data) argument
60 #define getscl(adap) adap->getscl(adap->data) argument
62 static inline void sdalo(struct i2c_algo_bit_data *adap) in sdalo() argument
64 setsda(adap, 0); in sdalo()
65 udelay((adap->udelay + 1) / 2); in sdalo()
68 static inline void sdahi(struct i2c_algo_bit_data *adap) in sdahi() argument
70 setsda(adap, 1); in sdahi()
71 udelay((adap->udelay + 1) / 2); in sdahi()
74 static inline void scllo(struct i2c_algo_bit_data *adap) in scllo() argument
76 setscl(adap, 0); in scllo()
77 udelay(adap->udelay / 2); in scllo()
84 static int sclhi(struct i2c_algo_bit_data *adap) in sclhi() argument
88 setscl(adap, 1); in sclhi()
91 if (!adap->getscl) in sclhi()
95 while (!getscl(adap)) { in sclhi()
101 if (time_after(jiffies, start + adap->timeout)) { in sclhi()
105 if (getscl(adap)) in sclhi()
118 udelay(adap->udelay); in sclhi()
124 static void i2c_start(struct i2c_algo_bit_data *adap) in i2c_start() argument
127 setsda(adap, 0); in i2c_start()
128 udelay(adap->udelay); in i2c_start()
129 scllo(adap); in i2c_start()
132 static void i2c_repstart(struct i2c_algo_bit_data *adap) in i2c_repstart() argument
135 sdahi(adap); in i2c_repstart()
136 sclhi(adap); in i2c_repstart()
137 setsda(adap, 0); in i2c_repstart()
138 udelay(adap->udelay); in i2c_repstart()
139 scllo(adap); in i2c_repstart()
143 static void i2c_stop(struct i2c_algo_bit_data *adap) in i2c_stop() argument
146 sdalo(adap); in i2c_stop()
147 sclhi(adap); in i2c_stop()
148 setsda(adap, 1); in i2c_stop()
149 udelay(adap->udelay); in i2c_stop()
166 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in i2c_outb() local
171 setsda(adap, sb); in i2c_outb()
172 udelay((adap->udelay + 1) / 2); in i2c_outb()
173 if (sclhi(adap) < 0) { /* timed out */ in i2c_outb()
184 scllo(adap); in i2c_outb()
186 sdahi(adap); in i2c_outb()
187 if (sclhi(adap) < 0) { /* timeout */ in i2c_outb()
196 ack = !getsda(adap); /* ack: sda is pulled low -> success */ in i2c_outb()
200 scllo(adap); in i2c_outb()
212 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in i2c_inb() local
215 sdahi(adap); in i2c_inb()
217 if (sclhi(adap) < 0) { /* timeout */ in i2c_inb()
223 if (getsda(adap)) in i2c_inb()
225 setscl(adap, 0); in i2c_inb()
226 udelay(i == 7 ? adap->udelay / 2 : adap->udelay); in i2c_inb()
238 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in test_bus() local
242 if (adap->pre_xfer) { in test_bus()
243 ret = adap->pre_xfer(i2c_adap); in test_bus()
248 if (adap->getscl == NULL) in test_bus()
251 sda = getsda(adap); in test_bus()
252 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
260 sdalo(adap); in test_bus()
261 sda = getsda(adap); in test_bus()
262 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
273 sdahi(adap); in test_bus()
274 sda = getsda(adap); in test_bus()
275 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
286 scllo(adap); in test_bus()
287 sda = getsda(adap); in test_bus()
288 scl = (adap->getscl == NULL) ? 0 : getscl(adap); in test_bus()
299 sclhi(adap); in test_bus()
300 sda = getsda(adap); in test_bus()
301 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
312 if (adap->post_xfer) in test_bus()
313 adap->post_xfer(i2c_adap); in test_bus()
318 sdahi(adap); in test_bus()
319 sclhi(adap); in test_bus()
321 if (adap->post_xfer) in test_bus()
322 adap->post_xfer(i2c_adap); in test_bus()
340 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in try_address() local
348 i2c_stop(adap); in try_address()
349 udelay(adap->udelay); in try_address()
352 i2c_start(adap); in try_address()
405 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in acknak() local
409 setsda(adap, 0); in acknak()
410 udelay((adap->udelay + 1) / 2); in acknak()
411 if (sclhi(adap) < 0) { /* timeout */ in acknak()
415 scllo(adap); in acknak()
483 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_doAddress() local
511 i2c_repstart(adap); in bit_doAddress()
539 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_xfer() local
543 if (adap->pre_xfer) { in bit_xfer()
544 ret = adap->pre_xfer(i2c_adap); in bit_xfer()
550 i2c_start(adap); in bit_xfer()
558 i2c_repstart(adap); in bit_xfer()
596 i2c_stop(adap); in bit_xfer()
598 if (adap->post_xfer) in bit_xfer()
599 adap->post_xfer(i2c_adap); in bit_xfer()
603 static u32 bit_func(struct i2c_adapter *adap) in bit_func() argument
623 static int __i2c_bit_add_bus(struct i2c_adapter *adap, in __i2c_bit_add_bus() argument
626 struct i2c_algo_bit_data *bit_adap = adap->algo_data; in __i2c_bit_add_bus()
630 ret = test_bus(adap); in __i2c_bit_add_bus()
636 adap->algo = &i2c_bit_algo; in __i2c_bit_add_bus()
637 adap->retries = 3; in __i2c_bit_add_bus()
639 ret = add_adapter(adap); in __i2c_bit_add_bus()
645 dev_warn(&adap->dev, "Not I2C compliant: can't read SCL\n"); in __i2c_bit_add_bus()
646 dev_warn(&adap->dev, "Bus may be unreliable\n"); in __i2c_bit_add_bus()
651 int i2c_bit_add_bus(struct i2c_adapter *adap) in i2c_bit_add_bus() argument
653 return __i2c_bit_add_bus(adap, i2c_add_adapter); in i2c_bit_add_bus()
657 int i2c_bit_add_numbered_bus(struct i2c_adapter *adap) in i2c_bit_add_numbered_bus() argument
659 return __i2c_bit_add_bus(adap, i2c_add_numbered_adapter); in i2c_bit_add_numbered_bus()