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()
185 scllo(adap); in i2c_outb()
187 sdahi(adap); in i2c_outb()
188 if (sclhi(adap) < 0) { /* timeout */ in i2c_outb()
197 ack = !getsda(adap); /* ack: sda is pulled low -> success */ in i2c_outb()
201 scllo(adap); in i2c_outb()
213 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in i2c_inb() local
216 sdahi(adap); in i2c_inb()
218 if (sclhi(adap) < 0) { /* timeout */ in i2c_inb()
225 if (getsda(adap)) in i2c_inb()
227 setscl(adap, 0); in i2c_inb()
228 udelay(i == 7 ? adap->udelay / 2 : adap->udelay); in i2c_inb()
240 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in test_bus() local
244 if (adap->pre_xfer) { in test_bus()
245 ret = adap->pre_xfer(i2c_adap); in test_bus()
250 if (adap->getscl == NULL) in test_bus()
253 sda = getsda(adap); in test_bus()
254 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
262 sdalo(adap); in test_bus()
263 sda = getsda(adap); in test_bus()
264 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
276 sdahi(adap); in test_bus()
277 sda = getsda(adap); in test_bus()
278 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
290 scllo(adap); in test_bus()
291 sda = getsda(adap); in test_bus()
292 scl = (adap->getscl == NULL) ? 0 : getscl(adap); in test_bus()
304 sclhi(adap); in test_bus()
305 sda = getsda(adap); in test_bus()
306 scl = (adap->getscl == NULL) ? 1 : getscl(adap); in test_bus()
318 if (adap->post_xfer) in test_bus()
319 adap->post_xfer(i2c_adap); in test_bus()
324 sdahi(adap); in test_bus()
325 sclhi(adap); in test_bus()
327 if (adap->post_xfer) in test_bus()
328 adap->post_xfer(i2c_adap); in test_bus()
346 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in try_address() local
354 i2c_stop(adap); in try_address()
355 udelay(adap->udelay); in try_address()
358 i2c_start(adap); in try_address()
411 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in acknak() local
415 setsda(adap, 0); in acknak()
416 udelay((adap->udelay + 1) / 2); in acknak()
417 if (sclhi(adap) < 0) { /* timeout */ in acknak()
421 scllo(adap); in acknak()
490 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_doAddress() local
518 i2c_repstart(adap); in bit_doAddress()
544 struct i2c_algo_bit_data *adap = i2c_adap->algo_data; in bit_xfer() local
548 if (adap->pre_xfer) { in bit_xfer()
549 ret = adap->pre_xfer(i2c_adap); in bit_xfer()
555 i2c_start(adap); in bit_xfer()
564 i2c_stop(adap); in bit_xfer()
565 i2c_start(adap); in bit_xfer()
569 i2c_repstart(adap); in bit_xfer()
608 i2c_stop(adap); in bit_xfer()
610 if (adap->post_xfer) in bit_xfer()
611 adap->post_xfer(i2c_adap); in bit_xfer()
615 static u32 bit_func(struct i2c_adapter *adap) in bit_func() argument
639 static int __i2c_bit_add_bus(struct i2c_adapter *adap, in __i2c_bit_add_bus() argument
642 struct i2c_algo_bit_data *bit_adap = adap->algo_data; in __i2c_bit_add_bus()
646 ret = test_bus(adap); in __i2c_bit_add_bus()
652 adap->algo = &i2c_bit_algo; in __i2c_bit_add_bus()
653 adap->retries = 3; in __i2c_bit_add_bus()
655 adap->quirks = &i2c_bit_quirk_no_clk_stretch; in __i2c_bit_add_bus()
662 ret = add_adapter(adap); in __i2c_bit_add_bus()
668 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()