Lines Matching refs:i2c

40 static int WaitForXfer(struct s3c24x0_i2c *i2c)  in WaitForXfer()  argument
45 if (readl(&i2c->iiccon) & I2CCON_IRPND) in WaitForXfer()
46 return (readl(&i2c->iicstat) & I2CSTAT_NACK) ? in WaitForXfer()
53 static void read_write_byte(struct s3c24x0_i2c *i2c) in read_write_byte() argument
55 clrbits_le32(&i2c->iiccon, I2CCON_IRPND); in read_write_byte()
58 static void i2c_ch_init(struct s3c24x0_i2c *i2c, int speed, int slaveadd) in i2c_ch_init() argument
76 writel((div & 0x0F) | 0xA0 | ((pres == 512) ? 0x40 : 0), &i2c->iiccon); in i2c_ch_init()
79 writel(0, &i2c->iicstat); in i2c_ch_init()
80 writel(slaveadd, &i2c->iicadd); in i2c_ch_init()
82 writel(I2C_MODE_MT | I2C_TXRX_ENA, &i2c->iicstat); in i2c_ch_init()
104 static int i2c_transfer(struct s3c24x0_i2c *i2c, in i2c_transfer() argument
121 while (readl(&i2c->iicstat) & I2CSTAT_BSY) { in i2c_transfer()
126 writel(readl(&i2c->iiccon) | I2CCON_ACKGEN, &i2c->iiccon); in i2c_transfer()
129 writel(chip, &i2c->iicds); in i2c_transfer()
132 &i2c->iicstat); in i2c_transfer()
135 &i2c->iicstat); in i2c_transfer()
138 result = WaitForXfer(i2c); in i2c_transfer()
145 writel(addr[i++], &i2c->iicds); in i2c_transfer()
146 read_write_byte(i2c); in i2c_transfer()
147 result = WaitForXfer(i2c); in i2c_transfer()
157 writel(data[i++], &i2c->iicds); in i2c_transfer()
158 read_write_byte(i2c); in i2c_transfer()
159 result = WaitForXfer(i2c); in i2c_transfer()
169 writel(chip, &i2c->iicds); in i2c_transfer()
173 &i2c->iicstat); in i2c_transfer()
174 read_write_byte(i2c); in i2c_transfer()
175 result = WaitForXfer(i2c); in i2c_transfer()
184 writel(readl(&i2c->iiccon) in i2c_transfer()
186 &i2c->iiccon); in i2c_transfer()
187 read_write_byte(i2c); in i2c_transfer()
188 result = WaitForXfer(i2c); in i2c_transfer()
189 data[i++] = readl(&i2c->iicds); in i2c_transfer()
203 writel(I2C_MODE_MR | I2C_TXRX_ENA, &i2c->iicstat); in i2c_transfer()
204 read_write_byte(i2c); in i2c_transfer()
230 struct s3c24x0_i2c *i2c = i2c_bus->regs; in s3c24x0_do_msg() local
237 setbits_le32(&i2c->iiccon, I2CCON_ACKGEN); in s3c24x0_do_msg()
241 writel(addr, &i2c->iicds); in s3c24x0_do_msg()
247 writel(status, &i2c->iicstat); in s3c24x0_do_msg()
249 read_write_byte(i2c); in s3c24x0_do_msg()
252 ret = WaitForXfer(i2c); in s3c24x0_do_msg()
260 clrbits_le32(&i2c->iiccon, I2CCON_ACKGEN); in s3c24x0_do_msg()
261 read_write_byte(i2c); in s3c24x0_do_msg()
262 ret = WaitForXfer(i2c); in s3c24x0_do_msg()
263 msg->buf[i] = readl(&i2c->iicds); in s3c24x0_do_msg()
269 writel(msg->buf[i], &i2c->iicds); in s3c24x0_do_msg()
270 read_write_byte(i2c); in s3c24x0_do_msg()
271 ret = WaitForXfer(i2c); in s3c24x0_do_msg()
283 struct s3c24x0_i2c *i2c = i2c_bus->regs; in s3c24x0_i2c_xfer() local
288 while (readl(&i2c->iicstat) & I2CSTAT_BSY) { in s3c24x0_i2c_xfer()
299 writel(I2C_MODE_MR | I2C_TXRX_ENA, &i2c->iicstat); in s3c24x0_i2c_xfer()
300 read_write_byte(i2c); in s3c24x0_i2c_xfer()