nybble
int nybble = 4 * ap->port_no;
r &= (0x0F << nybble);
(optidma_make_bits43(&link->device[0]) << 2)) << nybble;
uint8_t val = (nybble(data[0]) << 4) | nybble(data[1]);