Lines Matching refs:cbuf

45 static void cmdbuf_add(struct pt3_i2cbuf *cbuf, enum ctl_cmd cmd)  in cmdbuf_add()  argument
49 if ((cbuf->num_cmds % 2) == 0) in cmdbuf_add()
50 cbuf->tmp = cmd; in cmdbuf_add()
52 cbuf->tmp |= cmd << 4; in cmdbuf_add()
53 buf_idx = cbuf->num_cmds / 2; in cmdbuf_add()
54 if (buf_idx < ARRAY_SIZE(cbuf->data)) in cmdbuf_add()
55 cbuf->data[buf_idx] = cbuf->tmp; in cmdbuf_add()
57 cbuf->num_cmds++; in cmdbuf_add()
60 static void put_end(struct pt3_i2cbuf *cbuf) in put_end() argument
62 cmdbuf_add(cbuf, I_END); in put_end()
63 if (cbuf->num_cmds % 2) in put_end()
64 cmdbuf_add(cbuf, I_END); in put_end()
67 static void put_start(struct pt3_i2cbuf *cbuf) in put_start() argument
69 cmdbuf_add(cbuf, I_DATA_H); in put_start()
70 cmdbuf_add(cbuf, I_CLOCK_H); in put_start()
71 cmdbuf_add(cbuf, I_DATA_L); in put_start()
72 cmdbuf_add(cbuf, I_CLOCK_L); in put_start()
75 static void put_byte_write(struct pt3_i2cbuf *cbuf, u8 val) in put_byte_write() argument
80 cmdbuf_add(cbuf, (val & mask) ? I_DATA_H_NOP : I_DATA_L_NOP); in put_byte_write()
81 cmdbuf_add(cbuf, I_DATA_H_ACK0); in put_byte_write()
84 static void put_byte_read(struct pt3_i2cbuf *cbuf, u32 size) in put_byte_read() argument
90 cmdbuf_add(cbuf, I_DATA_H_READ); in put_byte_read()
91 cmdbuf_add(cbuf, (i == size - 1) ? I_DATA_H_NOP : I_DATA_L_NOP); in put_byte_read()
95 static void put_stop(struct pt3_i2cbuf *cbuf) in put_stop() argument
97 cmdbuf_add(cbuf, I_DATA_L); in put_stop()
98 cmdbuf_add(cbuf, I_CLOCK_H); in put_stop()
99 cmdbuf_add(cbuf, I_DATA_H); in put_stop()
104 static void translate(struct pt3_i2cbuf *cbuf, struct i2c_msg *msgs, int num) in translate() argument
109 cbuf->num_cmds = 0; in translate()
112 put_start(cbuf); in translate()
113 put_byte_write(cbuf, msgs[i].addr << 1 | rd); in translate()
115 put_byte_read(cbuf, msgs[i].len); in translate()
118 put_byte_write(cbuf, msgs[i].buf[j]); in translate()
121 put_stop(cbuf); in translate()
122 put_end(cbuf); in translate()
195 struct pt3_i2cbuf *cbuf; in pt3_i2c_master_xfer() local
200 cbuf = pt3->i2c_buf; in pt3_i2c_master_xfer()
210 translate(cbuf, msgs, num); in pt3_i2c_master_xfer()
212 cbuf->data, cbuf->num_cmds); in pt3_i2c_master_xfer()