Lines Matching defs:i2c

4 #include <i2c.h>
77 /* s5pxx18 i2c must be reset before enabled */
124 struct nx_i2c_regs *i2c = bus->regs;
158 writel(delay, &i2c->iiclc);
167 struct nx_i2c_regs *i2c = bus->regs;
196 &i2c->iiccon);
199 writel(0, &i2c->iicstat);
200 writel(0x00, &i2c->iicadd);
203 writel(I2CSTAT_MTM | I2CSTAT_RXTXEN, &i2c->iicstat);
229 bus->sda_delay = dev_read_s32_default(dev, "i2c-sda-delay-ns", 0);
238 /* get regs = i2c base address */
246 /* i2c node parsing */
257 /* i2c bus busy check */
258 static int i2c_is_busy(struct nx_i2c_regs *i2c)
263 while (readl(&i2c->iicstat) & I2CSTAT_BSY) {
273 static void i2c_enable_irq(struct nx_i2c_regs *i2c)
277 reg = readl(&i2c->iiccon);
279 writel(reg, &i2c->iiccon);
283 static void i2c_clear_irq(struct nx_i2c_regs *i2c)
287 reg = readl(&i2c->iiccon);
298 writel(reg, &i2c->iiccon);
302 static void i2c_enable_ack(struct nx_i2c_regs *i2c)
306 reg = readl(&i2c->iiccon);
308 writel(reg, &i2c->iiccon);
313 struct nx_i2c_regs *i2c = bus->regs;
318 reg = readl(&i2c->iicstat);
322 writel(reg, &i2c->iicstat);
323 i2c_clear_irq(i2c);
325 writel(STOPCON_NAG, &i2c->iicstopcon);
327 i2c_clear_irq(i2c);
333 writel(STOPCON_CLR, &i2c->iicstopcon);
338 i2c_clear_irq(i2c);
341 writel(I2CSTAT_MRM, &i2c->iicstat);
345 static int wait_for_xfer(struct nx_i2c_regs *i2c)
350 if (readl(&i2c->iiccon) & I2CCON_IRPND)
352 return (readl(&i2c->iicstat) & I2CSTAT_NACK) ?
359 static int i2c_transfer(struct nx_i2c_regs *i2c,
373 i2c_enable_irq(i2c);
374 i2c_enable_ack(i2c);
378 writel(I2CSTAT_RXTXEN, &i2c->iicstat);
380 writel(chip_addr, &i2c->iicds);
387 writel(status, &i2c->iicstat);
389 i2c_clear_irq(i2c);
392 result = wait_for_xfer(i2c);
401 writel(addr[i++], &i2c->iicds);
402 i2c_clear_irq(i2c);
403 result = wait_for_xfer(i2c);
417 writel(data[i++], &i2c->iicds);
418 i2c_clear_irq(i2c);
419 result = wait_for_xfer(i2c);
428 writel(chip_addr, &i2c->iicds);
432 I2CSTAT_SS, &i2c->iicstat);
433 i2c_clear_irq(i2c);
434 result = wait_for_xfer(i2c);
445 clrbits_le32(&i2c->iiccon, I2CCON_ACKGEN);
447 i2c_clear_irq(i2c);
448 result = wait_for_xfer(i2c);
449 data[i++] = readb(&i2c->iicds);
475 struct nx_i2c_bus *i2c;
479 i2c = dev_get_priv(dev);
480 if (!i2c)
498 ret = i2c_transfer(i2c->regs, I2C_READ, chip_addr << 1,
512 struct nx_i2c_bus *i2c;
516 i2c = dev_get_priv(dev);
517 if (!i2c)
532 ret = i2c_transfer(i2c->regs, I2C_WRITE, chip_addr << 1,
545 struct nx_i2c_regs *i2c = bus->regs;
554 ret = i2c_is_busy(i2c);
616 { .compatible = "nexell,s5pxx18-i2c" },