/* A restriction with interrupts exists when using the ucb1400, as the codec read/write routines may sleep while waiting for codec access completion and uses semaphores for access control to the AC97 bus. A complete codec read cycle could take anywhere from 60 to 100uSec so we  */
static irqreturn_t ucb1400_hard_irq(int irqnr, void *devid)
/* A restriction with interrupts exists when using the ucb1400, as the codec read/write routines may sleep while waiting for codec access completion and uses semaphores for access control to the AC97 bus. A complete codec read cycle could take anywhere from 60 to 100uSec so we  */
static irqreturn_t ucb1400_hard_irq(int irqnr, void *devid)
{
	struct ucb1400_ts *ucb = devid;
	if (irqnr == ucb->irq) {
		disable_irq_nosync(ucb->irq);
		ucb->irq_pending = 1;
		wake_up(&ucb->ts_wait);
		return IRQ_HANDLED;
	}
	return IRQ_NONE;
}