Lines Matching refs:bus
36 int (*get_sda)(struct i2c_gpio_bus *bus);
37 void (*set_sda)(struct i2c_gpio_bus *bus, int bit);
38 void (*set_scl)(struct i2c_gpio_bus *bus, int bit);
41 static int i2c_gpio_sda_get(struct i2c_gpio_bus *bus) in i2c_gpio_sda_get() argument
43 struct gpio_desc *sda = &bus->gpios[PIN_SDA]; in i2c_gpio_sda_get()
48 static void i2c_gpio_sda_set(struct i2c_gpio_bus *bus, int bit) in i2c_gpio_sda_set() argument
50 struct gpio_desc *sda = &bus->gpios[PIN_SDA]; in i2c_gpio_sda_set()
59 static void i2c_gpio_scl_set(struct i2c_gpio_bus *bus, int bit) in i2c_gpio_scl_set() argument
61 struct gpio_desc *scl = &bus->gpios[PIN_SCL]; in i2c_gpio_scl_set()
79 static void i2c_gpio_scl_set_output_only(struct i2c_gpio_bus *bus, int bit) in i2c_gpio_scl_set_output_only() argument
81 struct gpio_desc *scl = &bus->gpios[PIN_SCL]; in i2c_gpio_scl_set_output_only()
89 static void i2c_gpio_write_bit(struct i2c_gpio_bus *bus, int delay, uchar bit) in i2c_gpio_write_bit() argument
91 bus->set_scl(bus, 0); in i2c_gpio_write_bit()
93 bus->set_sda(bus, bit); in i2c_gpio_write_bit()
95 bus->set_scl(bus, 1); in i2c_gpio_write_bit()
99 static int i2c_gpio_read_bit(struct i2c_gpio_bus *bus, int delay) in i2c_gpio_read_bit() argument
103 bus->set_scl(bus, 1); in i2c_gpio_read_bit()
105 value = bus->get_sda(bus); in i2c_gpio_read_bit()
107 bus->set_scl(bus, 0); in i2c_gpio_read_bit()
114 static void i2c_gpio_send_start(struct i2c_gpio_bus *bus, int delay) in i2c_gpio_send_start() argument
117 bus->set_sda(bus, 1); in i2c_gpio_send_start()
119 bus->set_scl(bus, 1); in i2c_gpio_send_start()
121 bus->set_sda(bus, 0); in i2c_gpio_send_start()
126 static void i2c_gpio_send_stop(struct i2c_gpio_bus *bus, int delay) in i2c_gpio_send_stop() argument
128 bus->set_scl(bus, 0); in i2c_gpio_send_stop()
130 bus->set_sda(bus, 0); in i2c_gpio_send_stop()
132 bus->set_scl(bus, 1); in i2c_gpio_send_stop()
134 bus->set_sda(bus, 1); in i2c_gpio_send_stop()
139 static void i2c_gpio_send_ack(struct i2c_gpio_bus *bus, int delay, int ack) in i2c_gpio_send_ack() argument
141 i2c_gpio_write_bit(bus, delay, ack); in i2c_gpio_send_ack()
142 bus->set_scl(bus, 0); in i2c_gpio_send_ack()
151 static void i2c_gpio_send_reset(struct i2c_gpio_bus *bus, int delay) in i2c_gpio_send_reset() argument
156 i2c_gpio_write_bit(bus, delay, 1); in i2c_gpio_send_reset()
158 i2c_gpio_send_stop(bus, delay); in i2c_gpio_send_reset()
162 static void i2c_gpio_sda_high(struct i2c_gpio_bus *bus, int delay) in i2c_gpio_sda_high() argument
164 bus->set_scl(bus, 0); in i2c_gpio_sda_high()
166 bus->set_sda(bus, 1); in i2c_gpio_sda_high()
171 static int i2c_gpio_write_byte(struct i2c_gpio_bus *bus, int delay, uchar data) in i2c_gpio_write_byte() argument
177 i2c_gpio_write_bit(bus, delay, data & 0x80); in i2c_gpio_write_byte()
184 i2c_gpio_sda_high(bus, delay); in i2c_gpio_write_byte()
185 nack = i2c_gpio_read_bit(bus, delay); in i2c_gpio_write_byte()
194 static uchar i2c_gpio_read_byte(struct i2c_gpio_bus *bus, int delay, int ack) in i2c_gpio_read_byte() argument
199 i2c_gpio_sda_high(bus, delay); in i2c_gpio_read_byte()
203 data |= i2c_gpio_read_bit(bus, delay); in i2c_gpio_read_byte()
205 i2c_gpio_send_ack(bus, delay, ack); in i2c_gpio_read_byte()
211 int i2c_send_slave_addr(struct i2c_gpio_bus *bus, int delay, uchar chip) in i2c_send_slave_addr() argument
213 i2c_gpio_send_start(bus, delay); in i2c_send_slave_addr()
215 if (i2c_gpio_write_byte(bus, delay, chip)) { in i2c_send_slave_addr()
216 i2c_gpio_send_stop(bus, delay); in i2c_send_slave_addr()
223 static int i2c_gpio_write_data(struct i2c_gpio_bus *bus, uchar chip, in i2c_gpio_write_data() argument
227 unsigned int delay = bus->udelay; in i2c_gpio_write_data()
232 if (i2c_send_slave_addr(bus, delay, chip << 1)) { in i2c_gpio_write_data()
238 if (i2c_gpio_write_byte(bus, delay, *buffer++)) in i2c_gpio_write_data()
243 i2c_gpio_send_stop(bus, delay); in i2c_gpio_write_data()
247 if (i2c_send_slave_addr(bus, delay, (chip << 1) | 0x1)) { in i2c_gpio_write_data()
255 static int i2c_gpio_read_data(struct i2c_gpio_bus *bus, uchar chip, in i2c_gpio_read_data() argument
258 unsigned int delay = bus->udelay; in i2c_gpio_read_data()
263 *buffer++ = i2c_gpio_read_byte(bus, delay, len == 0); in i2c_gpio_read_data()
265 i2c_gpio_send_stop(bus, delay); in i2c_gpio_read_data()
272 struct i2c_gpio_bus *bus = dev_get_priv(dev); in i2c_gpio_xfer() local
279 ret = i2c_gpio_read_data(bus, msg->addr, msg->buf, in i2c_gpio_xfer()
282 ret = i2c_gpio_write_data(bus, msg->addr, msg->buf, in i2c_gpio_xfer()
295 struct i2c_gpio_bus *bus = dev_get_priv(dev); in i2c_gpio_probe() local
296 unsigned int delay = bus->udelay; in i2c_gpio_probe()
299 i2c_gpio_send_start(bus, delay); in i2c_gpio_probe()
300 ret = i2c_gpio_write_byte(bus, delay, (chip << 1) | 0); in i2c_gpio_probe()
301 i2c_gpio_send_stop(bus, delay); in i2c_gpio_probe()
311 struct i2c_gpio_bus *bus = dev_get_priv(dev); in i2c_gpio_set_bus_speed() local
313 bus->udelay = 1000000 / (speed_hz << 2); in i2c_gpio_set_bus_speed()
315 i2c_gpio_send_reset(bus, bus->udelay); in i2c_gpio_set_bus_speed()
325 struct i2c_gpio_bus *bus = dev_get_priv(dev); in i2c_gpio_drv_probe() local
327 return i2c_deblock_gpio_loop(&bus->gpios[PIN_SDA], in i2c_gpio_drv_probe()
328 &bus->gpios[PIN_SCL], in i2c_gpio_drv_probe()
337 struct i2c_gpio_bus *bus = dev_get_priv(dev); in i2c_gpio_of_to_plat() local
340 ret = gpio_request_list_by_name(dev, "gpios", bus->gpios, in i2c_gpio_of_to_plat()
341 ARRAY_SIZE(bus->gpios), 0); in i2c_gpio_of_to_plat()
345 bus->udelay = dev_read_u32_default(dev, "i2c-gpio,delay-us", in i2c_gpio_of_to_plat()
348 bus->get_sda = i2c_gpio_sda_get; in i2c_gpio_of_to_plat()
349 bus->set_sda = i2c_gpio_sda_set; in i2c_gpio_of_to_plat()
351 bus->set_scl = i2c_gpio_scl_set_output_only; in i2c_gpio_of_to_plat()
353 bus->set_scl = i2c_gpio_scl_set; in i2c_gpio_of_to_plat()