hal2_read
ret = hal2_read(®s->idr0) & 0xffff;
ret |= (hal2_read(®s->idr0) & 0xffff) << 16;
hal2_write((hal2_read(®s->idr0) & 0xffff) | bit, ®s->idr0);
hal2_write((hal2_read(®s->idr0) & 0xffff) & ~bit, ®s->idr0);
rev = hal2_read(&hal2->ctl_regs->rev);
#define H2_INDIRECT_WAIT(regs) while (hal2_read(®s->isr) & H2_ISR_TSTATUS);