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