Lines Matching refs:i2c

124 	struct nx_i2c_regs *i2c = bus->regs;  in nx_i2c_set_sda_delay()  local
158 writel(delay, &i2c->iiclc); in nx_i2c_set_sda_delay()
167 struct nx_i2c_regs *i2c = bus->regs; in nx_i2c_set_bus_speed() local
196 &i2c->iiccon); in nx_i2c_set_bus_speed()
199 writel(0, &i2c->iicstat); in nx_i2c_set_bus_speed()
200 writel(0x00, &i2c->iicadd); in nx_i2c_set_bus_speed()
203 writel(I2CSTAT_MTM | I2CSTAT_RXTXEN, &i2c->iicstat); in nx_i2c_set_bus_speed()
258 static int i2c_is_busy(struct nx_i2c_regs *i2c) in i2c_is_busy() argument
263 while (readl(&i2c->iicstat) & I2CSTAT_BSY) { in i2c_is_busy()
273 static void i2c_enable_irq(struct nx_i2c_regs *i2c) in i2c_enable_irq() argument
277 reg = readl(&i2c->iiccon); in i2c_enable_irq()
279 writel(reg, &i2c->iiccon); in i2c_enable_irq()
283 static void i2c_clear_irq(struct nx_i2c_regs *i2c) in i2c_clear_irq() argument
287 reg = readl(&i2c->iiccon); in i2c_clear_irq()
298 writel(reg, &i2c->iiccon); in i2c_clear_irq()
302 static void i2c_enable_ack(struct nx_i2c_regs *i2c) in i2c_enable_ack() argument
306 reg = readl(&i2c->iiccon); in i2c_enable_ack()
308 writel(reg, &i2c->iiccon); in i2c_enable_ack()
313 struct nx_i2c_regs *i2c = bus->regs; in i2c_send_stop() local
318 reg = readl(&i2c->iicstat); in i2c_send_stop()
322 writel(reg, &i2c->iicstat); in i2c_send_stop()
323 i2c_clear_irq(i2c); in i2c_send_stop()
325 writel(STOPCON_NAG, &i2c->iicstopcon); in i2c_send_stop()
327 i2c_clear_irq(i2c); in i2c_send_stop()
333 writel(STOPCON_CLR, &i2c->iicstopcon); in i2c_send_stop()
338 i2c_clear_irq(i2c); in i2c_send_stop()
341 writel(I2CSTAT_MRM, &i2c->iicstat); in i2c_send_stop()
345 static int wait_for_xfer(struct nx_i2c_regs *i2c) in wait_for_xfer() argument
350 if (readl(&i2c->iiccon) & I2CCON_IRPND) in wait_for_xfer()
352 return (readl(&i2c->iicstat) & I2CSTAT_NACK) ? in wait_for_xfer()
359 static int i2c_transfer(struct nx_i2c_regs *i2c, in i2c_transfer() argument
373 i2c_enable_irq(i2c); in i2c_transfer()
374 i2c_enable_ack(i2c); in i2c_transfer()
378 writel(I2CSTAT_RXTXEN, &i2c->iicstat); in i2c_transfer()
380 writel(chip_addr, &i2c->iicds); in i2c_transfer()
387 writel(status, &i2c->iicstat); in i2c_transfer()
389 i2c_clear_irq(i2c); in i2c_transfer()
392 result = wait_for_xfer(i2c); in i2c_transfer()
401 writel(addr[i++], &i2c->iicds); in i2c_transfer()
402 i2c_clear_irq(i2c); in i2c_transfer()
403 result = wait_for_xfer(i2c); in i2c_transfer()
417 writel(data[i++], &i2c->iicds); in i2c_transfer()
418 i2c_clear_irq(i2c); in i2c_transfer()
419 result = wait_for_xfer(i2c); in i2c_transfer()
428 writel(chip_addr, &i2c->iicds); in i2c_transfer()
432 I2CSTAT_SS, &i2c->iicstat); in i2c_transfer()
433 i2c_clear_irq(i2c); in i2c_transfer()
434 result = wait_for_xfer(i2c); in i2c_transfer()
445 clrbits_le32(&i2c->iiccon, I2CCON_ACKGEN); in i2c_transfer()
447 i2c_clear_irq(i2c); in i2c_transfer()
448 result = wait_for_xfer(i2c); in i2c_transfer()
449 data[i++] = readb(&i2c->iicds); in i2c_transfer()
475 struct nx_i2c_bus *i2c; in nx_i2c_read() local
479 i2c = dev_get_priv(dev); in nx_i2c_read()
480 if (!i2c) in nx_i2c_read()
498 ret = i2c_transfer(i2c->regs, I2C_READ, chip_addr << 1, in nx_i2c_read()
512 struct nx_i2c_bus *i2c; in nx_i2c_write() local
516 i2c = dev_get_priv(dev); in nx_i2c_write()
517 if (!i2c) in nx_i2c_write()
532 ret = i2c_transfer(i2c->regs, I2C_WRITE, chip_addr << 1, in nx_i2c_write()
545 struct nx_i2c_regs *i2c = bus->regs; in nx_i2c_xfer() local
554 ret = i2c_is_busy(i2c); in nx_i2c_xfer()