iic_wr
iic_wr(pd, offs, (iic_rd(pd, offs) | set) & ~clr);
iic_wr(pd, ICCR, ICCR_ICE | ICCR_TRS | ICCR_BBSY);
iic_wr(pd, ICIC, ICIC_WAITE | ICIC_ALE | ICIC_TACKE);
iic_wr(pd, ICDR, i2c_8bit_addr_from_msg(pd->msg));
iic_wr(pd, ICDR, pd->msg->buf[pd->pos]);
iic_wr(pd, ICCR, pd->send_stop ? ICCR_ICE | ICCR_TRS
iic_wr(pd, ICCR, ICCR_ICE | ICCR_SCP);
iic_wr(pd, ICIC,
iic_wr(pd, ICCR, ICCR_ICE | ICCR_RACK);
iic_wr(pd, ICIC,
iic_wr(pd, ICCR, ICCR_ICE | ICCR_RACK);
iic_wr(pd, ICSR, sr & ~(ICSR_AL | ICSR_TACK));
iic_wr(pd, ICSR, sr & ~ICSR_WAIT);
iic_wr(pd, ICCR, ICCR_SCP);
iic_wr(pd, ICCR, ICCR_ICE | ICCR_SCP);
iic_wr(pd, ICCL, pd->iccl & 0xff);
iic_wr(pd, ICCH, pd->icch & 0xff);
iic_wr(pd, ICIC, ICIC_DTEE | ICIC_WAITE | ICIC_ALE | ICIC_TACKE);
iic_wr(pd, ICCR, ICCR_SCP);
iic_wr(pd, ICCR, ICCR_SCP);
iic_wr(pd, ICSTART, 0);
iic_wr(pd, ICCR, ICCR_TRS);
iic_wr(pd, ICCR, 0);
iic_wr(pd, ICCR, ICCR_TRS);