OUTB
OUTB(sc, BT_CTRL_REG, v);
OUTB(sc, BT_INTMASK_REG, v);
OUTB(sc, BT_CTRL_REG, BT_C_CLR_WR_PTR);
OUTB(sc, BT_DATA_REG, req->ir_requestlen + BTMSG_REQLEN);
OUTB(sc, BT_DATA_REG, req->ir_addr);
OUTB(sc, BT_DATA_REG, sc->ipmi_bt_seq);
OUTB(sc, BT_DATA_REG, req->ir_command);
OUTB(sc, BT_DATA_REG, req->ir_request[i]);
OUTB(sc, BT_CTRL_REG, BT_C_H2B_ATN);
OUTB(sc, BT_CTRL_REG, BT_C_H_BUSY);
OUTB(sc, BT_CTRL_REG, BT_C_B2H_ATN);
OUTB(sc, BT_CTRL_REG, BT_C_CLR_RD_PTR);
OUTB(sc, BT_CTRL_REG, BT_C_H_BUSY);
OUTB(sc, KCS_CTL_STS, KCS_CONTROL_GET_STATUS_ABORT);
OUTB(sc, KCS_DATA, 0x00);
OUTB(sc, KCS_DATA, KCS_DATA_IN_READ);
OUTB(sc, KCS_CTL_STS, KCS_CONTROL_WRITE_START);
OUTB(sc, KCS_DATA, data);
OUTB(sc, KCS_CTL_STS, KCS_CONTROL_WRITE_END);
OUTB(sc, KCS_DATA, data);
OUTB(sc, KCS_DATA, KCS_DATA_IN_READ);
OUTB(sc, KCS_CTL_STS, KCS_CONTROL_GET_STATUS_ABORT);
OUTB(sc, KCS_DATA, 0);
OUTB(sc, KCS_DATA, KCS_DATA_IN_READ);
OUTB(sc, SMIC_CTL_STS, SMIC_CC_SMS_WR_START);
OUTB(sc, SMIC_DATA, data);
OUTB(sc, SMIC_CTL_STS, SMIC_CC_SMS_WR_NEXT);
OUTB(sc, SMIC_DATA, data);
OUTB(sc, SMIC_CTL_STS, SMIC_CC_SMS_WR_END);
OUTB(sc, SMIC_DATA, data);
OUTB(sc, SMIC_CTL_STS, SMIC_CC_SMS_RD_START);
OUTB(sc, SMIC_CTL_STS, SMIC_SC_SMS_RD_NEXT);
OUTB(sc, SMIC_CTL_STS, SMIC_CC_SMS_RD_END);
OUTB(sc, SMIC_FLAGS, flags);
OUTB (nc_istat, SIGP|np->istat_sem);
OUTB (nc_istat, SRST);
OUTB (nc_istat, 0);
OUTB (nc_istat, CABRT);
OUTB (nc_istat, 0);
OUTB (nc_stest3, TE);
OUTB (nc_dcntl, (np->rv_dcntl & IRQM));
OUTB (nc_scntl1, CRST);
OUTB (nc_scntl1, 0);
OUTB (nc_stest3, TE|CSF);
OUTB (nc_istat, 0x00 ); /* Remove Reset, abort */
OUTB (nc_scntl0, np->rv_scntl0 | 0xc0);
OUTB (nc_scntl1, 0x00); /* odd parity, and remove CRST!! */
OUTB (nc_scid , RRE|np->myaddr); /* Adapter SCSI address */
OUTB (nc_istat , SIGP ); /* Signal Process */
OUTB (nc_dmode , np->rv_dmode); /* Burst length, dma mode */
OUTB (nc_ctest5, np->rv_ctest5); /* Large fifo + large burst */
OUTB (nc_dcntl , NOCOM|np->rv_dcntl); /* Protect SFBR */
OUTB (nc_ctest3, np->rv_ctest3); /* Write and invalidate */
OUTB (nc_ctest4, np->rv_ctest4); /* Master parity checking */
OUTB (nc_stest2, np->rv_stest2);
OUTB (nc_stest2, EXT|np->rv_stest2);
OUTB (nc_stest3, TE); /* TolerANT enable */
OUTB (nc_stime0, 0x0c); /* HTH disabled STO 0.25 sec */
OUTB (nc_aipcntl1, DISAIP);
OUTB (nc_stest1, INB(nc_stest1) | 0x30);
OUTB (nc_ctest0, (1<<5));
OUTB (nc_ccntl0, np->rv_ccntl0);
OUTB (nc_ccntl1, np->rv_ccntl1);
OUTB(nc_gpcntl, INB(nc_gpcntl) & ~0x01);
OUTB(nc_gpcntl, (INB(nc_gpcntl) & ~0x41) | 0x20);
OUTB (nc_dien , MDPE|BF|SSI|SIR|IID);
OUTB (nc_sxfer, tp->head.sval);
OUTB (nc_scntl3, tp->head.wval);
OUTB (nc_scntl4, tp->head.uval);
OUTB (nc_istat, (istat & SIGP) | INTF | np->istat_sem);
OUTB (nc_istat, CABRT);
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */
OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */
OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */
OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* dma fifo */
OUTB (nc_stest3, TE|CSF); /* scsi fifo */
OUTB (HF_PRT, hflags);
OUTB (nc_istat, SIGP);
OUTB (HF_PRT, hflags);
OUTB (HS_PRT, HS_BUSY);
OUTB (HS_PRT, HS_BUSY);
OUTB (HS_PRT, HS_BUSY);
OUTB (HS_PRT, HS_NEGOTIATE);
OUTB (HS_PRT, HS_BUSY);
OUTB (HS_PRT, HS_BUSY);
OUTB (nc_ctest4, (np->rv_ctest4 & MPEE));
OUTB(nc_scntl3, scntl3);
OUTB(nc_stest1, DBLEN); /* Enable clock multiplier */
OUTB(nc_stest3, HSC); /* Halt the scsi clock */
OUTB(nc_scntl3, scntl3);
OUTB(nc_stest1, (DBLEN|DBLSEL));/* Select clock multiplier */
OUTB(nc_stest3, 0x00); /* Restart scsi clock */
OUTB (nc_dien , 0); /* mask all dma interrupts */
OUTB (nc_scntl3, 4); /* set pre-scaler to divide by 3 */
OUTB (nc_stime1, 0); /* disable general purpose timer */
OUTB (nc_stime1, gen); /* set to nominal delay of 1<<gen * 125us */
OUTB (nc_stime1, 0); /* disable general purpose timer */
OUTB (nc_scntl3, 0);
OUTB (nc_stest1, 0); /* make sure doubler is OFF */
OUTB (nc_stest1, SCLK); /* Use the PCI clock as SCSI clock */
OUTB (nc_stest1, 0);
OUTB (nc_istat, SIGP|SEM);
OUTB (nc_istat, SIGP|SEM);
#define OUTONB(r, m) OUTB(r, INB(r) | (m))
#define OUTOFFB(r, m) OUTB(r, INB(r) & ~(m))
OUTB (nc_gpreg, *gpreg);
OUTB (nc_gpcntl, *gpcntl & 0xfe);
OUTB (nc_gpcntl, *gpcntl);
OUTB (nc_gpcntl, *gpcntl | 0x01);
OUTB (nc_gpcntl, *gpcntl);
OUTB (nc_gpreg, old_gpreg);
OUTB (nc_gpcntl, gpcntl);
OUTB (nc_gpcntl, gpcntl);
OUTB (nc_gpcntl, gpcntl);
OUTB (nc_gpcntl, old_gpcntl);
OUTB (nc_gpreg, old_gpreg);
OUTB (nc_gpreg, *gpreg | 0x04);
OUTB (nc_gpreg, *gpreg);
OUTB (nc_gpreg, *gpreg);
OUTB (nc_gpreg, *gpreg);
OUTB (nc_gpreg, gpreg);
OUTB (nc_gpcntl, gpcntl);
OUTB (nc_gpcntl, old_gpcntl);
OUTB (nc_gpreg, old_gpreg);