Lines Matching refs:twsi

265 static int twsi_wait(struct mvtwsi_registers *twsi, int expected_status,  in twsi_wait()  argument
272 control = readl(&twsi->control); in twsi_wait()
274 status = readl(&twsi->status); in twsi_wait()
284 status = readl(&twsi->status); in twsi_wait()
302 static int twsi_start(struct mvtwsi_registers *twsi, int expected_status, in twsi_start() argument
307 MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_start()
309 return twsi_wait(twsi, expected_status, tick); in twsi_start()
325 static int twsi_send(struct mvtwsi_registers *twsi, u8 byte, in twsi_send() argument
329 writel(byte, &twsi->data); in twsi_send()
332 &twsi->control); in twsi_send()
334 return twsi_wait(twsi, expected_status, tick); in twsi_send()
350 static int twsi_recv(struct mvtwsi_registers *twsi, u8 *byte, int ack_flag, in twsi_recv() argument
361 writel(control | MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_recv()
363 status = twsi_wait(twsi, expected_status, tick); in twsi_recv()
366 *byte = readl(&twsi->data); in twsi_recv()
381 static int twsi_stop(struct mvtwsi_registers *twsi, uint tick) in twsi_stop() argument
389 writel(control | MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_stop()
392 stop_status = readl(&twsi->status); in twsi_stop()
397 control = readl(&twsi->control); in twsi_stop()
428 static void twsi_reset(struct mvtwsi_registers *twsi) in twsi_reset() argument
431 writel(0, &twsi->soft_reset); in twsi_reset()
447 static uint __twsi_i2c_set_bus_speed(struct mvtwsi_registers *twsi, in __twsi_i2c_set_bus_speed() argument
467 writel(baud, &twsi->baudrate); in __twsi_i2c_set_bus_speed()
490 static void __twsi_i2c_init(struct mvtwsi_registers *twsi, int speed, in __twsi_i2c_init() argument
496 twsi_reset(twsi); in __twsi_i2c_init()
498 tmp_speed = __twsi_i2c_set_bus_speed(twsi, speed); in __twsi_i2c_init()
502 writel(slaveadd, &twsi->slave_address); in __twsi_i2c_init()
503 writel(0, &twsi->xtnd_slave_addr); in __twsi_i2c_init()
506 (void) twsi_stop(twsi, calc_tick(*actual_speed)); in __twsi_i2c_init()
508 (void) twsi_stop(twsi, 10000); in __twsi_i2c_init()
529 static int i2c_begin(struct mvtwsi_registers *twsi, int expected_start_status, in i2c_begin() argument
541 status = twsi_start(twsi, expected_start_status, tick); in i2c_begin()
544 status = twsi_send(twsi, addr, expected_addr_status, tick); in i2c_begin()
561 static int __twsi_i2c_probe_chip(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_probe_chip() argument
568 status = i2c_begin(twsi, MVTWSI_STATUS_START, (chip << 1) | 1, tick); in __twsi_i2c_probe_chip()
571 status = twsi_recv(twsi, &dummy_byte, MVTWSI_READ_NAK, tick); in __twsi_i2c_probe_chip()
573 twsi_stop(twsi, tick); in __twsi_i2c_probe_chip()
600 static int __twsi_i2c_read(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_read() argument
610 status = i2c_begin(twsi, expected_start, (chip << 1), tick); in __twsi_i2c_read()
613 status = twsi_send(twsi, addr[alen], in __twsi_i2c_read()
620 status = i2c_begin(twsi, expected_start, (chip << 1) | 1, tick); in __twsi_i2c_read()
624 status = twsi_recv(twsi, data++, in __twsi_i2c_read()
628 stop_status = twsi_stop(twsi, tick); in __twsi_i2c_read()
649 static int __twsi_i2c_write(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_write() argument
657 status = i2c_begin(twsi, MVTWSI_STATUS_START, (chip << 1), tick); in __twsi_i2c_write()
660 status = twsi_send(twsi, addr[alen], MVTWSI_STATUS_DATA_W_ACK, in __twsi_i2c_write()
664 status = twsi_send(twsi, *(data++), MVTWSI_STATUS_DATA_W_ACK, in __twsi_i2c_write()
667 stop_status = twsi_stop(twsi, tick); in __twsi_i2c_write()
676 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_init() local
677 __twsi_i2c_init(twsi, speed, slaveadd, NULL); in twsi_i2c_init()
683 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_set_bus_speed() local
684 __twsi_i2c_set_bus_speed(twsi, requested_speed); in twsi_i2c_set_bus_speed()
690 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_probe() local
691 return __twsi_i2c_probe_chip(twsi, chip, 10000); in twsi_i2c_probe()
697 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_read() local
705 return __twsi_i2c_read(twsi, chip, addr_bytes, alen, data, length, in twsi_i2c_read()
712 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_write() local
720 return __twsi_i2c_write(twsi, chip, addr_bytes, alen, data, length, in twsi_i2c_write()
802 static void twsi_disable_i2c_slave(struct mvtwsi_registers *twsi)
804 clrbits_le32(&twsi->debug, BIT(18));
809 struct mvtwsi_registers *twsi = devfdt_get_addr_ptr(bus);
814 twsi_disable_i2c_slave(twsi);