/* Allow the sequencer to continue program execution. We check here to ensure that no additional interrupt sources that would cause the sequencer to halt have been asserted. If, for example, a SCSI bus reset is detected while we are fielding a different, pausing, interrupt type, we don't want to release the sequencer before going back into our interrupt handler and dealing with this new condition.  */
void ahd_unpause(struct ahd_softc *ahd)
/* Allow the sequencer to continue program execution. We check here to ensure that no additional interrupt sources that would cause the sequencer to halt have been asserted. If, for example, a SCSI bus reset is detected while we are fielding a different, pausing, interrupt type, we don't want to release the sequencer before going back into our interrupt handler and dealing with this new condition.  */
void ahd_unpause(struct ahd_softc *ahd)
{
	if (ahd->saved_src_mode != AHD_MODE_UNKNOWN
	 && ahd->saved_dst_mode != AHD_MODE_UNKNOWN) {
		if ((ahd->flags & AHD_UPDATE_PEND_CMDS) != 0)
			ahd_reset_cmds_pending(ahd);
		ahd_set_modes(ahd, ahd->saved_src_mode, ahd->saved_dst_mode);
	}
	if ((ahd_inb(ahd, INTSTAT) & ~CMDCMPLT) == 0)
		ahd_outb(ahd, HCNTRL, ahd->unpause);
	ahd_known_modes(ahd, AHD_MODE_UNKNOWN, AHD_MODE_UNKNOWN);
}