Lines Matching refs:controller

50 static int bus_is_idle(intel_serialio_i2c_device_t *controller) {  in bus_is_idle()  argument
51 uint32_t i2c_sta = readl(&controller->regs->i2c_sta); in bus_is_idle()
56 static int stop_detected(intel_serialio_i2c_device_t *controller) { in stop_detected() argument
57 return (readl(&controller->regs->raw_intr_stat) & in stop_detected()
61 static int rx_fifo_empty(intel_serialio_i2c_device_t *controller) { in rx_fifo_empty() argument
62 return !(readl(&controller->regs->i2c_sta) & (0x1 << I2C_STA_RFNE)); in rx_fifo_empty()
81 intel_serialio_i2c_device_t* controller = slave->controller; in intel_serialio_i2c_slave_transfer() local
97 mtx_lock(&slave->controller->mutex); in intel_serialio_i2c_slave_transfer()
99 if (!WAIT_FOR(bus_is_idle(controller), ZX_USEC(50))) { in intel_serialio_i2c_slave_transfer()
105 RMWREG32(&controller->regs->ctl, CTL_ADDRESSING_MODE, 1, ctl_addr_mode_bit); in intel_serialio_i2c_slave_transfer()
108 &controller->regs->tar_add); in intel_serialio_i2c_slave_transfer()
111 RMWREG32(&controller->regs->i2c_en, I2C_EN_ENABLE, 1, 1); in intel_serialio_i2c_slave_transfer()
134 if (!(readl(&controller->regs->i2c_sta) & in intel_serialio_i2c_slave_transfer()
137 controller, zx_deadline_after(timeout_ns)); in intel_serialio_i2c_slave_transfer()
161 status = intel_serialio_i2c_issue_rx(controller, cmd); in intel_serialio_i2c_slave_transfer()
164 status = intel_serialio_i2c_issue_tx(controller, cmd); in intel_serialio_i2c_slave_transfer()
176 if (rx_fifo_empty(controller)) { in intel_serialio_i2c_slave_transfer()
180 if (rx_fifo_empty(controller)) { in intel_serialio_i2c_slave_transfer()
185 intel_serialio_i2c_get_rx_fifo_threshold(controller, &rx_threshold); in intel_serialio_i2c_slave_transfer()
187 status = intel_serialio_i2c_set_rx_fifo_threshold(controller, in intel_serialio_i2c_slave_transfer()
195 status = intel_serialio_i2c_wait_for_rx_full(controller, in intel_serialio_i2c_slave_transfer()
202 status = intel_serialio_i2c_set_rx_fifo_threshold(controller, in intel_serialio_i2c_slave_transfer()
210 status = intel_serialio_i2c_read_rx(controller, buf); in intel_serialio_i2c_slave_transfer()
227 status = intel_serialio_i2c_wait_for_stop_detect(controller, zx_deadline_after(timeout_ns)); in intel_serialio_i2c_slave_transfer()
231 status = intel_serialio_i2c_clear_stop_detect(controller); in intel_serialio_i2c_slave_transfer()
236 if (!WAIT_FOR(bus_is_idle(controller), ZX_USEC(50))) { in intel_serialio_i2c_slave_transfer()
242 if (!DO_UNTIL(rx_fifo_empty(controller), in intel_serialio_i2c_slave_transfer()
243 readl(&controller->regs->data_cmd), 0)) { in intel_serialio_i2c_slave_transfer()
248 status = intel_serialio_i2c_check_for_error(controller); in intel_serialio_i2c_slave_transfer()
253 intel_serialio_i2c_reset_controller(controller); in intel_serialio_i2c_slave_transfer()
255 mtx_unlock(&controller->mutex); in intel_serialio_i2c_slave_transfer()