SV_REG
outb(SV_RESET, SV_REG(sonic, CONTROL)); /* reset chip */
outb(0, SV_REG(sonic, CONTROL)); /* release reset */
outb(SV_ENHANCED | SV_INTA | (reverb ? SV_REVERB : 0), SV_REG(sonic, CONTROL));
inb(SV_REG(sonic, STATUS)); /* clear IRQs */
outb(sonic->irqmask = ~(SV_DMAA_MASK | SV_DMAC_MASK | SV_UD_MASK), SV_REG(sonic, IRQMASK));
inb(SV_REG(sonic, STATUS)); /* clear IRQs */
outb(sonic->irqmask &= ~SV_MIDI_MASK, SV_REG(sonic, IRQMASK));
outb(sonic->irqmask |= SV_MIDI_MASK, SV_REG(sonic, IRQMASK));
outb(reg, SV_REG(sonic, INDEX));
outb(value, SV_REG(sonic, DATA));
outb(reg, SV_REG(sonic, INDEX));
outb(value, SV_REG(sonic, DATA));
outb(reg, SV_REG(sonic, INDEX));
value = inb(SV_REG(sonic, DATA));
outb(reg, SV_REG(sonic, INDEX));
value = inb(SV_REG(sonic, DATA));
inb(SV_REG(sonic, INDEX)), inb(SV_REG(sonic, STATUS)));
outb(SV_MCE | SV_IREG_DMA_DATA_FMT, SV_REG(sonic, INDEX));
sonic->format = inb(SV_REG(sonic, DATA));
outb(sonic->format, SV_REG(sonic, DATA));
outb(0, SV_REG(sonic, INDEX));
status = inb(SV_REG(sonic, STATUS));
outb(sonic->irqmask = ~0, SV_REG(sonic, IRQMASK));