VIAI2C_CR_RX_END
val |= VIAI2C_CR_RX_END;
val &= ~(VIAI2C_CR_TX_END | VIAI2C_CR_RX_END);
val |= VIAI2C_CR_RX_END;
tmp |= read ? VIAI2C_CR_RX_END : VIAI2C_CR_TX_END;
tmp &= ~(VIAI2C_CR_RX_END | VIAI2C_CR_TX_END);
tmp |= read ? VIAI2C_CR_RX_END : VIAI2C_CR_TX_END;