Lines Matching defs:i2c

13 #include <i2c.h>
125 struct synquacer_i2c *i2c = dev_get_priv(dev);
129 if (readb(i2c->base + REG_BCR) & BCR_INT)
137 static int synquacer_i2c_xfer_start(struct synquacer_i2c *i2c,
142 writeb((addr << 1) | (read ? 1 : 0), i2c->base + REG_DAR);
144 bsr = readb(i2c->base + REG_BSR);
145 bcr = readb(i2c->base + REG_BCR);
151 writeb(bcr | BCR_SCC, i2c->base + REG_BCR);
156 writeb(bcr | BCR_MSS | BCR_INTE | BCR_BEIE, i2c->base + REG_BCR);
166 struct synquacer_i2c *i2c = dev_get_priv(bus);
171 synquacer_i2c_xfer_start(i2c, msg->addr, msg->flags & I2C_M_RD);
175 bsr = readb(i2c->base + REG_BSR);
183 bsr = readb(i2c->base + REG_BSR);
184 bcr = readb(i2c->base + REG_BCR);
198 writeb(bcr, i2c->base + REG_BCR);
201 bsr = readb(i2c->base + REG_BSR);
203 msg->buf[idx++] = readb(i2c->base + REG_DAR);
205 writeb(msg->buf[idx++], i2c->base + REG_DAR);
207 writeb(bcr, i2c->base + REG_BCR);
210 bsr = readb(i2c->base + REG_BSR);
220 writeb(0, i2c->base + REG_BCR);
226 static void synquacer_i2c_hw_reset(struct synquacer_i2c *i2c)
229 writeb(0, i2c->base + REG_CCR);
230 writeb(0, i2c->base + REG_CSR);
233 writeb(0, i2c->base + REG_ADR);
236 writeb(BUS_CLK_FR(i2c->pclkrate), i2c->base + REG_FSR);
239 writeb(0, i2c->base + REG_BCR);
240 writeb(0, i2c->base + REG_BC2R);
245 struct synquacer_i2c *i2c = dev_get_priv(bus);
247 return i2c->speed_khz * 1000;
252 struct synquacer_i2c *i2c = dev_get_priv(bus);
253 u32 rt = i2c->pclkrate;
257 writeb(BUS_CLK_FR(i2c->pclkrate), i2c->base + REG_FSR);
260 i2c->speed_khz = SPEED_FM;
261 if (i2c->pclkrate <= CLK_RATE_18M) {
270 writeb(ccr_cs | CCR_FM | CCR_EN, i2c->base + REG_CCR);
271 writeb(csr_cs, i2c->base + REG_CSR);
273 i2c->speed_khz = SPEED_SM;
274 if (i2c->pclkrate <= CLK_RATE_18M) {
283 writeb(ccr_cs | CCR_EN, i2c->base + REG_CCR);
284 writeb(csr_cs, i2c->base + REG_CSR);
309 struct synquacer_i2c *i2c = dev_get_priv(bus);
311 i2c->base = dev_read_addr_ptr(bus);
312 synquacer_i2c_hw_reset(i2c);
325 .compatible = "socionext,synquacer-i2c",