SMCR
while (ioread16(dev->base + SMCR) & SMCR_BBSY) {
iowrite16(ioread16(dev->base + SMCR) | SMCR_RST, dev->base + SMCR);
u16 tmp = ioread16(dev->base + SMCR);
smcr = ioread16(dev->base + SMCR);
iowrite16(ioread16(dev->base + SMCR) | SMCR_IEIC, dev->base + SMCR);
iowrite16(ioread16(dev->base + SMCR) & ~SMCR_IEIC, dev->base + SMCR);
iowrite16(ioread16(dev->base + SMCR) | SMCR_START, dev->base + SMCR);
iowrite16(ioread16(dev->base + SMCR) | SMCR_IRIC, dev->base + SMCR);