Lines Matching refs:msg
47 struct i2c_msg *msg; /* Current I2C message */ member
121 bool write = !(i2c->msg->flags & I2C_M_RD); in meson_i2c_prepare_xfer()
124 i2c->count = min(i2c->msg->len - i2c->pos, 8u); in meson_i2c_prepare_xfer()
130 if (write || i2c->pos + i2c->count < i2c->msg->len) in meson_i2c_prepare_xfer()
137 meson_i2c_put_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); in meson_i2c_prepare_xfer()
139 if (i2c->last && i2c->pos + i2c->count >= i2c->msg->len) in meson_i2c_prepare_xfer()
146 static void meson_i2c_do_start(struct meson_i2c *i2c, struct i2c_msg *msg) in meson_i2c_do_start() argument
150 token = (msg->flags & I2C_M_RD) ? TOKEN_SLAVE_ADDR_READ : in meson_i2c_do_start()
153 writel(msg->addr << 1, &i2c->regs->slave_addr); in meson_i2c_do_start()
158 static int meson_i2c_xfer_msg(struct meson_i2c *i2c, struct i2c_msg *msg, in meson_i2c_xfer_msg() argument
164 (msg->flags & I2C_M_RD) ? "read" : "write", in meson_i2c_xfer_msg()
165 msg->addr, msg->len); in meson_i2c_xfer_msg()
167 i2c->msg = msg; in meson_i2c_xfer_msg()
173 meson_i2c_do_start(i2c, msg); in meson_i2c_xfer_msg()
197 if ((msg->flags & I2C_M_RD) && i2c->count) { in meson_i2c_xfer_msg()
198 meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, in meson_i2c_xfer_msg()
202 } while (i2c->pos < msg->len); in meson_i2c_xfer_msg()
207 static int meson_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, in meson_i2c_xfer() argument
214 ret = meson_i2c_xfer_msg(i2c, msg + i, i == nmsgs - 1); in meson_i2c_xfer()