Lines Matching +full:ctrl +full:- +full:len
37 printk(KERN_DEBUG "%s/0: " fmt, dev->name, ##arg); \
48 struct cx25821_i2c *bus = i2c_adap->algo_data; in i2c_slave_did_ack()
49 struct cx25821_dev *dev = bus->dev; in i2c_slave_did_ack()
50 return cx_read(bus->reg_stat) & 0x01; in i2c_slave_did_ack()
55 struct cx25821_i2c *bus = i2c_adap->algo_data; in i2c_is_busy()
56 struct cx25821_dev *dev = bus->dev; in i2c_is_busy()
57 return cx_read(bus->reg_stat) & 0x02 ? 1 : 0; in i2c_is_busy()
79 struct cx25821_i2c *bus = i2c_adap->algo_data; in i2c_sendbytes()
80 struct cx25821_dev *dev = bus->dev; in i2c_sendbytes()
81 u32 wdata, addr, ctrl; in i2c_sendbytes() local
85 dprintk(1, "%s(msg->wlen=%d, nextmsg->rlen=%d)\n", __func__, in i2c_sendbytes()
86 msg->len, joined_rlen); in i2c_sendbytes()
88 dprintk(1, "%s(msg->len=%d)\n", __func__, msg->len); in i2c_sendbytes()
91 if (msg->len == 0) { in i2c_sendbytes()
92 cx_write(bus->reg_addr, msg->addr << 25); in i2c_sendbytes()
93 cx_write(bus->reg_ctrl, bus->i2c_period | (1 << 2)); in i2c_sendbytes()
96 return -EIO; in i2c_sendbytes()
99 return -EIO; in i2c_sendbytes()
106 addr = (msg->addr << 25) | msg->buf[0]; in i2c_sendbytes()
107 wdata = msg->buf[0]; in i2c_sendbytes()
109 ctrl = bus->i2c_period | (1 << 12) | (1 << 2); in i2c_sendbytes()
111 if (msg->len > 1) in i2c_sendbytes()
112 ctrl |= I2C_NOSTOP | I2C_EXTEND; in i2c_sendbytes()
114 ctrl |= I2C_NOSTOP; in i2c_sendbytes()
116 cx_write(bus->reg_addr, addr); in i2c_sendbytes()
117 cx_write(bus->reg_wdata, wdata); in i2c_sendbytes()
118 cx_write(bus->reg_ctrl, ctrl); in i2c_sendbytes()
128 if (!(ctrl & I2C_NOSTOP)) in i2c_sendbytes()
132 for (cnt = 1; cnt < msg->len; cnt++) { in i2c_sendbytes()
134 wdata = msg->buf[cnt]; in i2c_sendbytes()
135 ctrl = bus->i2c_period | (1 << 12) | (1 << 2); in i2c_sendbytes()
137 if (cnt < msg->len - 1) in i2c_sendbytes()
138 ctrl |= I2C_NOSTOP | I2C_EXTEND; in i2c_sendbytes()
140 ctrl |= I2C_NOSTOP; in i2c_sendbytes()
142 cx_write(bus->reg_addr, addr); in i2c_sendbytes()
143 cx_write(bus->reg_wdata, wdata); in i2c_sendbytes()
144 cx_write(bus->reg_ctrl, ctrl); in i2c_sendbytes()
154 dprintk(1, " %02x", msg->buf[cnt]); in i2c_sendbytes()
155 if (!(ctrl & I2C_NOSTOP)) in i2c_sendbytes()
160 return msg->len; in i2c_sendbytes()
163 retval = -EIO; in i2c_sendbytes()
173 struct cx25821_i2c *bus = i2c_adap->algo_data; in i2c_readbytes()
174 struct cx25821_dev *dev = bus->dev; in i2c_readbytes()
175 u32 ctrl, cnt; in i2c_readbytes() local
179 dprintk(1, "6-%s(msg->len=%d)\n", __func__, msg->len); in i2c_readbytes()
182 if (msg->len == 0) { in i2c_readbytes()
183 cx_write(bus->reg_addr, msg->addr << 25); in i2c_readbytes()
184 cx_write(bus->reg_ctrl, bus->i2c_period | (1 << 2) | 1); in i2c_readbytes()
186 return -EIO; in i2c_readbytes()
188 return -EIO; in i2c_readbytes()
198 dprintk(1, " <R %02x", (msg->addr << 1) + 1); in i2c_readbytes()
201 for (cnt = 0; cnt < msg->len; cnt++) { in i2c_readbytes()
203 ctrl = bus->i2c_period | (1 << 12) | (1 << 2) | 1; in i2c_readbytes()
205 if (cnt < msg->len - 1) in i2c_readbytes()
206 ctrl |= I2C_NOSTOP | I2C_EXTEND; in i2c_readbytes()
208 cx_write(bus->reg_addr, msg->addr << 25); in i2c_readbytes()
209 cx_write(bus->reg_ctrl, ctrl); in i2c_readbytes()
216 msg->buf[cnt] = cx_read(bus->reg_rdata) & 0xff; in i2c_readbytes()
219 dprintk(1, " %02x", msg->buf[cnt]); in i2c_readbytes()
220 if (!(ctrl & I2C_NOSTOP)) in i2c_readbytes()
225 return msg->len; in i2c_readbytes()
227 retval = -EIO; in i2c_readbytes()
236 struct cx25821_i2c *bus = i2c_adap->algo_data; in i2c_xfer()
237 struct cx25821_dev *dev = bus->dev; in i2c_xfer()
243 dprintk(1, "%s(num = %d) addr = 0x%02x len = 0x%x\n", in i2c_xfer()
244 __func__, num, msgs[i].addr, msgs[i].len); in i2c_xfer()
253 msgs[i + 1].len); in i2c_xfer()
301 struct cx25821_dev *dev = bus->dev; in cx25821_i2c_register()
303 dprintk(1, "%s(bus = %d)\n", __func__, bus->nr); in cx25821_i2c_register()
305 bus->i2c_adap = cx25821_i2c_adap_template; in cx25821_i2c_register()
306 bus->i2c_client = cx25821_i2c_client_template; in cx25821_i2c_register()
307 bus->i2c_adap.dev.parent = &dev->pci->dev; in cx25821_i2c_register()
309 strlcpy(bus->i2c_adap.name, bus->dev->name, sizeof(bus->i2c_adap.name)); in cx25821_i2c_register()
311 bus->i2c_adap.algo_data = bus; in cx25821_i2c_register()
312 i2c_set_adapdata(&bus->i2c_adap, &dev->v4l2_dev); in cx25821_i2c_register()
313 i2c_add_adapter(&bus->i2c_adap); in cx25821_i2c_register()
315 bus->i2c_client.adapter = &bus->i2c_adap; in cx25821_i2c_register()
318 bus->i2c_client.addr = (0x88 >> 1); in cx25821_i2c_register()
320 return bus->i2c_rc; in cx25821_i2c_register()
325 i2c_del_adapter(&bus->i2c_adap); in cx25821_i2c_unregister()
347 msg.len = 3;
350 i2c_xfer(&dev->i2c_bus[0].i2c_adap, &msg, 1);
356 struct i2c_client *client = &bus->i2c_client; in cx25821_i2c_read()
363 .addr = client->addr, in cx25821_i2c_read()
365 .len = 2, in cx25821_i2c_read()
368 .addr = client->addr, in cx25821_i2c_read()
370 .len = 4, in cx25821_i2c_read()
380 i2c_xfer(client->adapter, msgs, 2); in cx25821_i2c_read()
390 struct i2c_client *client = &bus->i2c_client; in cx25821_i2c_write()
396 .addr = client->addr, in cx25821_i2c_write()
398 .len = 6, in cx25821_i2c_write()
409 client->flags = 0; in cx25821_i2c_write()
412 retval = i2c_xfer(client->adapter, msgs, 1); in cx25821_i2c_write()