Lines Matching refs:adap

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