Lines Matching refs:msgs
439 static int octeon_i2c_hlc_read(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_read() argument
449 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_read()
451 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_read()
453 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_read()
467 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_read()
468 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
470 if (msgs[0].len > 4) { in octeon_i2c_hlc_read()
472 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_read()
473 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
481 static int octeon_i2c_hlc_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_write() argument
491 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_write()
493 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_write()
495 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_write()
500 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_write()
501 cmd |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
503 if (msgs[0].len > 4) { in octeon_i2c_hlc_write()
506 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_write()
507 ext |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
525 static int octeon_i2c_hlc_comp_read(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_read() argument
534 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_read()
536 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_read()
538 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_read()
543 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_read()
547 ext = (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
548 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
551 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
565 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
566 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
568 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_read()
570 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
571 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
579 static int octeon_i2c_hlc_comp_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_write() argument
589 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_write()
591 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_write()
593 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_write()
598 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_write()
600 ext |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
602 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
604 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
607 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
608 cmd |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
610 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_write()
611 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
612 ext |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
641 int octeon_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in octeon_i2c_xfer() argument
647 if (msgs[0].len > 0 && msgs[0].len <= 8) { in octeon_i2c_xfer()
648 if (msgs[0].flags & I2C_M_RD) in octeon_i2c_xfer()
649 ret = octeon_i2c_hlc_read(i2c, msgs); in octeon_i2c_xfer()
651 ret = octeon_i2c_hlc_write(i2c, msgs); in octeon_i2c_xfer()
655 if ((msgs[0].flags & I2C_M_RD) == 0 && in octeon_i2c_xfer()
656 (msgs[1].flags & I2C_M_RECV_LEN) == 0 && in octeon_i2c_xfer()
657 msgs[0].len > 0 && msgs[0].len <= 2 && in octeon_i2c_xfer()
658 msgs[1].len > 0 && msgs[1].len <= 8 && in octeon_i2c_xfer()
659 msgs[0].addr == msgs[1].addr) { in octeon_i2c_xfer()
660 if (msgs[1].flags & I2C_M_RD) in octeon_i2c_xfer()
661 ret = octeon_i2c_hlc_comp_read(i2c, msgs); in octeon_i2c_xfer()
663 ret = octeon_i2c_hlc_comp_write(i2c, msgs); in octeon_i2c_xfer()
669 struct i2c_msg *pmsg = &msgs[i]; in octeon_i2c_xfer()