Lines Matching refs:slave

26  * This driver only supports master mode. It doesn't support acting as a slave.
290 } slave;
392 * "If a master also incorporates a slave function and it loses arbitration
395 * immediately to its slave mode"
413 * If we are the slave-sender, we should not be sending a STOP signal.
418 * I2C slave."
437 /** Forces CLK pulses down the CLK line to trick a slave device that is holding
438 * SDA low, to release SDA eventually. The slave is expected to release SDA
444 * * Actual bus lockup caused by slave holding SDA low.
775 * or slave mode TX FIFO.
825 /** Takes a buffer and attempts to read as much data from the master or slave
1020 ZF_LOGE(IRQPREFIX "Slave failed to send ACK. Does this slave "
1085 tk1_i2c_mmode_read(i2c_slave_t* slave, void* buf, size_t size,
1089 assert(slave != NULL);
1090 assert(slave->bus != NULL);
1093 tk1_i2c_state_t *s = tk1_i2c_get_state(slave->bus);
1094 tk1_i2c_regs_t *r = tk1_i2c_get_priv(slave->bus);
1098 tk1_i2c_callback(slave->bus, I2CSTAT_COMPLETE, 0);
1102 error = tk1_i2c_set_speed(slave->bus, slave->max_speed);
1104 ZF_LOGE(PREFIX"Failed to set speed to %d for slave 0x%x.",
1105 r, i2c_speed_freqs[slave->max_speed], slave->address);
1109 tk1_i2c_flush_fifos(slave->bus, I2C_MODE_MASTER);
1111 if (tk1_i2c_bus_is_locked_up(slave->bus)) {
1112 if (!tk1_i2c_bus_clear(slave->bus, true)) {
1113 ZF_LOGE(PREFIX"slave is holding SDA line low, and bus clear "
1119 s->master.slave_id = slave->address;
1125 slave->bus->cb = cb;
1126 slave->bus->token = token;
1128 tk1_i2c_set_mode(slave->bus, I2C_MODE_MASTER);
1129 tk1_i2c_config_commit(slave->bus, COMMIT_MASTER_BIT);
1131 headers = tk1_i2c_prepare_mmode_xfer_headers(slave, size, false,
1138 tk1_i2c_toggle_irq(slave->bus, true, TK1I2C_INTMASK_SMODE_RX_FIFO_DATA_REQ_BIT);
1144 tk1_i2c_mmode_write(i2c_slave_t *slave, const void* buf, size_t size,
1148 assert(slave != NULL);
1149 assert(slave->bus != NULL);
1153 tk1_i2c_regs_t *r = tk1_i2c_get_priv(slave->bus);
1154 tk1_i2c_state_t *s = tk1_i2c_get_state(slave->bus);
1158 tk1_i2c_callback(slave->bus, I2CSTAT_COMPLETE, 0);
1168 error = tk1_i2c_set_speed(slave->bus, slave->max_speed);
1170 ZF_LOGE(PREFIX"Failed to set speed to %d for slave 0x%x.",
1171 r, i2c_speed_freqs[slave->max_speed], slave->address);
1175 tk1_i2c_flush_fifos(slave->bus, I2C_MODE_MASTER);
1177 if (tk1_i2c_bus_is_locked_up(slave->bus)) {
1178 if (!tk1_i2c_bus_clear(slave->bus, true)) {
1179 ZF_LOGE(PREFIX"slave is holding SDA line low, and bus clear "
1185 s->master.slave_id = slave->address;
1191 slave->bus->cb = cb;
1192 slave->bus->token = token;
1194 tk1_i2c_set_mode(slave->bus, I2C_MODE_MASTER);
1195 tk1_i2c_config_commit(slave->bus, COMMIT_MASTER_BIT);
1197 headers = tk1_i2c_prepare_mmode_xfer_headers(slave, size, true,
1202 ret = tk1_i2c_fill_tx_fifo(slave->bus, I2C_MODE_MASTER, buf, size);
1214 tk1_i2c_toggle_irq(slave->bus, true, TK1I2C_INTMASK_MMODE_TX_FIFO_DATA_REQ_BIT);
1305 ZF_LOGE(PREFIX"slave is holding SDA line low, and bus clear "