Lines Matching refs:msgs

416 static int octeon_i2c_hlc_read(struct octeon_i2c *i2c, struct i2c_msg *msgs)  in octeon_i2c_hlc_read()  argument
426 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_read()
428 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_read()
430 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_read()
444 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_read()
445 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
447 if (msgs[0].len > 4) { in octeon_i2c_hlc_read()
449 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_read()
450 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
458 static int octeon_i2c_hlc_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_write() argument
468 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_write()
470 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_write()
472 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_write()
477 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_write()
478 cmd |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
480 if (msgs[0].len > 4) { in octeon_i2c_hlc_write()
483 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_write()
484 ext |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
502 static int octeon_i2c_hlc_comp_read(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_read() argument
511 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_read()
513 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_read()
515 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_read()
520 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_read()
524 ext = (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
525 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
528 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
542 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
543 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
545 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_read()
547 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
548 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
556 static int octeon_i2c_hlc_comp_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_write() argument
566 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_write()
568 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_write()
570 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_write()
575 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_write()
577 ext |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
579 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
581 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
584 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
585 cmd |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
587 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_write()
588 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
589 ext |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
618 int octeon_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in octeon_i2c_xfer() argument
625 if (msgs[0].len > 0 && msgs[0].len <= 8) { in octeon_i2c_xfer()
626 if (msgs[0].flags & I2C_M_RD) in octeon_i2c_xfer()
627 ret = octeon_i2c_hlc_read(i2c, msgs); in octeon_i2c_xfer()
629 ret = octeon_i2c_hlc_write(i2c, msgs); in octeon_i2c_xfer()
633 if ((msgs[0].flags & I2C_M_RD) == 0 && in octeon_i2c_xfer()
634 (msgs[1].flags & I2C_M_RECV_LEN) == 0 && in octeon_i2c_xfer()
635 msgs[0].len > 0 && msgs[0].len <= 2 && in octeon_i2c_xfer()
636 msgs[1].len > 0 && msgs[1].len <= 8 && in octeon_i2c_xfer()
637 msgs[0].addr == msgs[1].addr) { in octeon_i2c_xfer()
638 if (msgs[1].flags & I2C_M_RD) in octeon_i2c_xfer()
639 ret = octeon_i2c_hlc_comp_read(i2c, msgs); in octeon_i2c_xfer()
641 ret = octeon_i2c_hlc_comp_write(i2c, msgs); in octeon_i2c_xfer()
648 struct i2c_msg *pmsg = &msgs[i]; in octeon_i2c_xfer()