Lines Matching refs:msg
56 struct i2c_msg *msg; /* Current I2C message */ member
130 bool write = !(i2c->msg->flags & I2C_M_RD); in meson_i2c_prepare_xfer()
133 i2c->count = min(i2c->msg->len - i2c->pos, 8u); in meson_i2c_prepare_xfer()
139 if (write || i2c->pos + i2c->count < i2c->msg->len) in meson_i2c_prepare_xfer()
146 meson_i2c_put_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); in meson_i2c_prepare_xfer()
148 if (i2c->last && i2c->pos + i2c->count >= i2c->msg->len) in meson_i2c_prepare_xfer()
155 static void meson_i2c_do_start(struct meson_i2c *i2c, struct i2c_msg *msg) in meson_i2c_do_start() argument
159 token = (msg->flags & I2C_M_RD) ? TOKEN_SLAVE_ADDR_READ : in meson_i2c_do_start()
162 writel(msg->addr << 1, &i2c->regs->slave_addr); in meson_i2c_do_start()
167 static int meson_i2c_xfer_msg(struct meson_i2c *i2c, struct i2c_msg *msg, in meson_i2c_xfer_msg() argument
173 (msg->flags & I2C_M_RD) ? "read" : "write", in meson_i2c_xfer_msg()
174 msg->addr, msg->len); in meson_i2c_xfer_msg()
176 i2c->msg = msg; in meson_i2c_xfer_msg()
182 meson_i2c_do_start(i2c, msg); in meson_i2c_xfer_msg()
206 if ((msg->flags & I2C_M_RD) && i2c->count) { in meson_i2c_xfer_msg()
207 meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, in meson_i2c_xfer_msg()
211 } while (i2c->pos < msg->len); in meson_i2c_xfer_msg()
216 static int meson_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, in meson_i2c_xfer() argument
223 ret = meson_i2c_xfer_msg(i2c, msg + i, i == nmsgs - 1); in meson_i2c_xfer()