Lines Matching refs:msgs
476 rk_i2c_transfer(device_t dev, struct iic_msg *msgs, uint32_t nmsgs) in rk_i2c_transfer() argument
501 if (msgs == NULL || msgs[i].buf == NULL || in rk_i2c_transfer()
502 msgs[i].len == 0) { in rk_i2c_transfer()
511 if ((msgs[i + 1].flags & IIC_M_NOSTART) && in rk_i2c_transfer()
512 ((msgs[i].flags & IIC_M_RD) != in rk_i2c_transfer()
513 (msgs[i + 1].flags & IIC_M_RD) || in rk_i2c_transfer()
514 (msgs[i].slave != msgs[i + 1].slave))) { in rk_i2c_transfer()
526 if (nmsgs - i >= 2 && msgs[i].len < 4 && in rk_i2c_transfer()
527 msgs[i].flags == (IIC_M_WR | IIC_M_NOSTOP) && in rk_i2c_transfer()
528 (msgs[i + 1].flags & IIC_M_RD) == IIC_M_RD && in rk_i2c_transfer()
529 (msgs[i].slave & ~LSB) == (msgs[i + 1].slave & ~LSB)) { in rk_i2c_transfer()
533 reg = msgs[i].slave & ~LSB; in rk_i2c_transfer()
539 for (j = 0; j < msgs[i].len ; j++) { in rk_i2c_transfer()
540 reg |= (uint32_t)msgs[i].buf[j] << (j * 8); in rk_i2c_transfer()
547 if (msgs[i].flags & IIC_M_RD) { in rk_i2c_transfer()
548 if (msgs[i].flags & IIC_M_NOSTART) { in rk_i2c_transfer()
552 reg = msgs[i].slave & ~LSB; in rk_i2c_transfer()
563 !(msgs[i + 1].flags & IIC_M_NOSTART); in rk_i2c_transfer()
564 rk_i2c_start_xfer(sc, msgs + i, last_msg); in rk_i2c_transfer()