Lines Matching refs:msgs
403 static int octeon_i2c_hlc_read(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_read() argument
413 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_read()
415 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_read()
417 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_read()
431 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_read()
432 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
434 if (msgs[0].len > 4) { in octeon_i2c_hlc_read()
436 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_read()
437 msgs[0].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_read()
445 static int octeon_i2c_hlc_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_write() argument
455 cmd |= (u64)(msgs[0].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_write()
457 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_write()
459 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_write()
464 for (i = 0, j = msgs[0].len - 1; i < msgs[0].len && i < 4; i++, j--) in octeon_i2c_hlc_write()
465 cmd |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
467 if (msgs[0].len > 4) { in octeon_i2c_hlc_write()
470 for (i = 0; i < msgs[0].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_write()
471 ext |= (u64)msgs[0].buf[j] << (8 * i); in octeon_i2c_hlc_write()
489 static int octeon_i2c_hlc_comp_read(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_read() argument
498 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_read()
500 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_read()
502 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_read()
507 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_read()
511 ext = (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
512 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
515 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_read()
529 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
530 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
532 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_read()
534 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_read()
535 msgs[1].buf[j] = (cmd >> (8 * i)) & 0xff; in octeon_i2c_hlc_comp_read()
543 static int octeon_i2c_hlc_comp_write(struct octeon_i2c *i2c, struct i2c_msg *msgs) in octeon_i2c_hlc_comp_write() argument
553 cmd |= (u64)(msgs[1].len - 1) << SW_TWSI_SIZE_SHIFT; in octeon_i2c_hlc_comp_write()
555 cmd |= (u64)(msgs[0].addr & 0x7full) << SW_TWSI_ADDR_SHIFT; in octeon_i2c_hlc_comp_write()
557 if (msgs[0].flags & I2C_M_TEN) in octeon_i2c_hlc_comp_write()
562 if (msgs[0].len == 2) { in octeon_i2c_hlc_comp_write()
564 ext |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
566 cmd |= (u64)msgs[0].buf[1] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
568 cmd |= (u64)msgs[0].buf[0] << SW_TWSI_IA_SHIFT; in octeon_i2c_hlc_comp_write()
571 for (i = 0, j = msgs[1].len - 1; i < msgs[1].len && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
572 cmd |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
574 if (msgs[1].len > 4) { in octeon_i2c_hlc_comp_write()
575 for (i = 0; i < msgs[1].len - 4 && i < 4; i++, j--) in octeon_i2c_hlc_comp_write()
576 ext |= (u64)msgs[1].buf[j] << (8 * i); in octeon_i2c_hlc_comp_write()
605 int octeon_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) in octeon_i2c_xfer() argument
611 if (msgs[0].len > 0 && msgs[0].len <= 8) { in octeon_i2c_xfer()
612 if (msgs[0].flags & I2C_M_RD) in octeon_i2c_xfer()
613 ret = octeon_i2c_hlc_read(i2c, msgs); in octeon_i2c_xfer()
615 ret = octeon_i2c_hlc_write(i2c, msgs); in octeon_i2c_xfer()
619 if ((msgs[0].flags & I2C_M_RD) == 0 && in octeon_i2c_xfer()
620 (msgs[1].flags & I2C_M_RECV_LEN) == 0 && in octeon_i2c_xfer()
621 msgs[0].len > 0 && msgs[0].len <= 2 && in octeon_i2c_xfer()
622 msgs[1].len > 0 && msgs[1].len <= 8 && in octeon_i2c_xfer()
623 msgs[0].addr == msgs[1].addr) { in octeon_i2c_xfer()
624 if (msgs[1].flags & I2C_M_RD) in octeon_i2c_xfer()
625 ret = octeon_i2c_hlc_comp_read(i2c, msgs); in octeon_i2c_xfer()
627 ret = octeon_i2c_hlc_comp_write(i2c, msgs); in octeon_i2c_xfer()
633 struct i2c_msg *pmsg = &msgs[i]; in octeon_i2c_xfer()