Lines Matching refs:twsi
262 static int twsi_wait(struct mvtwsi_registers *twsi, int expected_status, in twsi_wait() argument
269 control = readl(&twsi->control); in twsi_wait()
271 status = readl(&twsi->status); in twsi_wait()
281 status = readl(&twsi->status); in twsi_wait()
299 static int twsi_start(struct mvtwsi_registers *twsi, int expected_status, in twsi_start() argument
304 MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_start()
306 return twsi_wait(twsi, expected_status, tick); in twsi_start()
322 static int twsi_send(struct mvtwsi_registers *twsi, u8 byte, in twsi_send() argument
326 writel(byte, &twsi->data); in twsi_send()
329 &twsi->control); in twsi_send()
331 return twsi_wait(twsi, expected_status, tick); in twsi_send()
347 static int twsi_recv(struct mvtwsi_registers *twsi, u8 *byte, int ack_flag, in twsi_recv() argument
358 writel(control | MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_recv()
360 status = twsi_wait(twsi, expected_status, tick); in twsi_recv()
363 *byte = readl(&twsi->data); in twsi_recv()
378 static int twsi_stop(struct mvtwsi_registers *twsi, uint tick) in twsi_stop() argument
386 writel(control | MVTWSI_CONTROL_CLEAR_IFLG, &twsi->control); in twsi_stop()
389 stop_status = readl(&twsi->status); in twsi_stop()
394 control = readl(&twsi->control); in twsi_stop()
425 static void twsi_reset(struct mvtwsi_registers *twsi) in twsi_reset() argument
428 writel(0, &twsi->soft_reset); in twsi_reset()
444 static uint __twsi_i2c_set_bus_speed(struct mvtwsi_registers *twsi, in __twsi_i2c_set_bus_speed() argument
464 writel(baud, &twsi->baudrate); in __twsi_i2c_set_bus_speed()
487 static void __twsi_i2c_init(struct mvtwsi_registers *twsi, int speed, in __twsi_i2c_init() argument
491 twsi_reset(twsi); in __twsi_i2c_init()
493 *actual_speed = __twsi_i2c_set_bus_speed(twsi, speed); in __twsi_i2c_init()
495 writel(slaveadd, &twsi->slave_address); in __twsi_i2c_init()
496 writel(0, &twsi->xtnd_slave_addr); in __twsi_i2c_init()
499 (void) twsi_stop(twsi, calc_tick(*actual_speed)); in __twsi_i2c_init()
501 (void) twsi_stop(twsi, 10000); in __twsi_i2c_init()
522 static int i2c_begin(struct mvtwsi_registers *twsi, int expected_start_status, in i2c_begin() argument
534 status = twsi_start(twsi, expected_start_status, tick); in i2c_begin()
537 status = twsi_send(twsi, addr, expected_addr_status, tick); in i2c_begin()
554 static int __twsi_i2c_probe_chip(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_probe_chip() argument
561 status = i2c_begin(twsi, MVTWSI_STATUS_START, (chip << 1) | 1, tick); in __twsi_i2c_probe_chip()
564 status = twsi_recv(twsi, &dummy_byte, MVTWSI_READ_NAK, tick); in __twsi_i2c_probe_chip()
566 twsi_stop(twsi, tick); in __twsi_i2c_probe_chip()
593 static int __twsi_i2c_read(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_read() argument
603 status = i2c_begin(twsi, expected_start, (chip << 1), tick); in __twsi_i2c_read()
606 status = twsi_send(twsi, addr[alen], in __twsi_i2c_read()
613 status = i2c_begin(twsi, expected_start, (chip << 1) | 1, tick); in __twsi_i2c_read()
617 status = twsi_recv(twsi, data++, in __twsi_i2c_read()
621 stop_status = twsi_stop(twsi, tick); in __twsi_i2c_read()
642 static int __twsi_i2c_write(struct mvtwsi_registers *twsi, uchar chip, in __twsi_i2c_write() argument
650 status = i2c_begin(twsi, MVTWSI_STATUS_START, (chip << 1), tick); in __twsi_i2c_write()
653 status = twsi_send(twsi, addr[alen], MVTWSI_STATUS_DATA_W_ACK, in __twsi_i2c_write()
657 status = twsi_send(twsi, *(data++), MVTWSI_STATUS_DATA_W_ACK, in __twsi_i2c_write()
660 stop_status = twsi_stop(twsi, tick); in __twsi_i2c_write()
669 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_init() local
670 __twsi_i2c_init(twsi, speed, slaveadd, NULL); in twsi_i2c_init()
676 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_set_bus_speed() local
677 __twsi_i2c_set_bus_speed(twsi, requested_speed); in twsi_i2c_set_bus_speed()
683 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_probe() local
684 return __twsi_i2c_probe_chip(twsi, chip, 10000); in twsi_i2c_probe()
690 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_read() local
698 return __twsi_i2c_read(twsi, chip, addr_bytes, alen, data, length, in twsi_i2c_read()
705 struct mvtwsi_registers *twsi = twsi_get_base(adap); in twsi_i2c_write() local
713 return __twsi_i2c_write(twsi, chip, addr_bytes, alen, data, length, in twsi_i2c_write()