if (sr1 & (1 << STM_I2C_SR1_SB))
stm_i2c->dr = ao_i2c_addr[index];
if (sr1 & (1 << STM_I2C_SR1_ADDR)) {
- stm_i2c->cr2 &= ~(1 << STM_I2C_CR2_ITEVTEN);
+ stm_i2c->cr2 &= ~(1UL << STM_I2C_CR2_ITEVTEN);
ao_i2c_state[index] = I2C_RUNNING;
ao_wakeup(&ao_i2c_state[index]);
}
if (sr1 & (1 << STM_I2C_SR1_BTF)) {
- stm_i2c->cr2 &= ~(1 << STM_I2C_CR2_ITEVTEN);
+ stm_i2c->cr2 &= ~(1UL << STM_I2C_CR2_ITEVTEN);
ao_wakeup(&ao_i2c_state[index]);
}
if (sr1 & (1 << STM_I2C_SR1_RXNE)) {
if (ao_i2c_recv_len[index]) {
- *(ao_i2c_recv_data[index]++) = stm_i2c->dr;
+ *(ao_i2c_recv_data[index]++) = (uint8_t) stm_i2c->dr;
if (!--ao_i2c_recv_len[index])
ao_wakeup(&ao_i2c_recv_len[index]);
}
sr1 = stm_i2c->sr1;
if (sr1 & (1 << STM_I2C_SR1_AF)) {
ao_i2c_state[index] = I2C_ERROR;
- stm_i2c->sr1 = sr1 & ~(1 << STM_I2C_SR1_AF);
+ stm_i2c->sr1 = sr1 & ~(1UL << STM_I2C_SR1_AF);
ao_wakeup(&ao_i2c_state[index]);
}
}
return true;
}
-void
+static void
ao_i2c_recv_dma_isr(int index)
{
int i;
(0 << STM_DMA_CCR_PINC) |
(0 << STM_DMA_CCR_CIRC) |
(STM_DMA_CCR_DIR_PER_TO_MEM << STM_DMA_CCR_DIR));
+
+ /* XXX ao_i2c_recv_dma_isr hasn't ever been used, so it
+ * doesn't appear to be necessary. Testing with a device
+ * that uses i2c would really be useful here to discover
+ * whether this function is necessary or not.
+ */
+#if 0
+ ao_dma_set_isr(rx_dma_index, ao_i2c_recv_dma_isr);
+#else
+ (void) ao_i2c_recv_dma_isr;
+#endif
stm_i2c->cr1 = AO_STM_I2C_CR1 | (1 << STM_I2C_CR1_ACK);
stm_i2c->cr2 = AO_STM_I2C_CR2 |
(1 << STM_I2C_CR2_DMAEN) | (1 << STM_I2C_CR2_LAST);
return ret;
}
-void
+static void
ao_i2c_channel_init(uint8_t index)
{
struct stm_i2c *stm_i2c = ao_i2c_stm_info[index].stm_i2c;