27 #ifdef CONFIG_NOUVEAU_I2C_INTERNAL
28 #define T_TIMEOUT 2200000
29 #define T_RISEFALL 1000
59 udelay((nsec + 500) / 1000);
67 i2c_drive_scl(port, 1);
70 }
while (!i2c_sense_scl(port) && --timeout);
80 port->
state = i2c_sense_scl(port);
81 port->
state |= i2c_sense_sda(port) << 1;
82 if (port->
state != 3) {
83 i2c_drive_scl(port, 0);
84 i2c_drive_sda(port, 1);
85 if (!i2c_raise_scl(port))
89 i2c_drive_sda(port, 0);
91 i2c_drive_scl(port, 0);
99 i2c_drive_scl(port, 0);
100 i2c_drive_sda(port, 0);
103 i2c_drive_scl(port, 1);
105 i2c_drive_sda(port, 1);
112 i2c_drive_sda(port, sda);
115 if (!i2c_raise_scl(port))
119 i2c_drive_scl(port, 0);
129 i2c_drive_sda(port, 1);
132 if (!i2c_raise_scl(port))
136 sda = i2c_sense_sda(port);
138 i2c_drive_scl(port, 0);
149 for (i = 7; i >= 0; i--) {
150 bit = i2c_bitr(port);
156 return i2c_bitw(port, last ? 1 : 0);
163 for (i = 7; i >= 0; i--) {
164 ret = i2c_bitw(port, !!(byte & (1 << i)));
169 ret = i2c_bitr(port);
181 return i2c_put_byte(port, addr);
189 int ret = 0, mcnt = num;
191 while (!ret && mcnt--) {
192 u8 remaining = msg->
len;
197 ret = i2c_addr(port, msg);
200 while (!ret && remaining--)
201 ret = i2c_get_byte(port, ptr++, !remaining);
203 while (!ret && remaining--)
204 ret = i2c_put_byte(port, *ptr++);
211 return (ret < 0) ? ret : num;
228 .master_xfer = i2c_bit_xfer,
229 .functionality = i2c_bit_func