Lines Matching refs:msg
92 struct i2c_msg *msg; member
253 bool write = !(i2c->msg->flags & I2C_M_RD); in meson_i2c_prepare_xfer()
256 i2c->count = min(i2c->msg->len - i2c->pos, 8); in meson_i2c_prepare_xfer()
262 if (write || i2c->pos + i2c->count < i2c->msg->len) in meson_i2c_prepare_xfer()
269 meson_i2c_put_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); in meson_i2c_prepare_xfer()
271 if (i2c->last && i2c->pos + i2c->count >= i2c->msg->len) in meson_i2c_prepare_xfer()
292 meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, in meson_i2c_transfer_complete()
297 if (i2c->pos >= i2c->msg->len) in meson_i2c_transfer_complete()
337 static void meson_i2c_do_start(struct meson_i2c *i2c, struct i2c_msg *msg) in meson_i2c_do_start() argument
341 token = (msg->flags & I2C_M_RD) ? TOKEN_SLAVE_ADDR_READ : in meson_i2c_do_start()
346 FIELD_PREP(REG_SLV_ADDR_MASK, msg->addr << 1)); in meson_i2c_do_start()
352 static int meson_i2c_xfer_msg(struct meson_i2c *i2c, struct i2c_msg *msg, in meson_i2c_xfer_msg() argument
359 i2c->msg = msg; in meson_i2c_xfer_msg()
367 flags = (msg->flags & I2C_M_IGNORE_NAK) ? REG_CTRL_ACK_IGNORE : 0; in meson_i2c_xfer_msg()
370 if (!(msg->flags & I2C_M_NOSTART)) in meson_i2c_xfer_msg()
371 meson_i2c_do_start(i2c, msg); in meson_i2c_xfer_msg()
373 i2c->state = (msg->flags & I2C_M_RD) ? STATE_READ : STATE_WRITE; in meson_i2c_xfer_msg()