/* This interrupt occurs 10 ms before the watchdog WILL bark.  */
static irqreturn_t coh901327_interrupt(int irq, void *data)
/* This interrupt occurs 10 ms before the watchdog WILL bark.  */
static irqreturn_t coh901327_interrupt(int irq, void *data)
{
	u16 val;
	clk_enable(clk);
	val = readw(virtbase + U300_WDOG_IER);
	if (val == U300_WDOG_IER_WILL_BARK_IRQ_EVENT_IND)
		writew(U300_WDOG_IER_WILL_BARK_IRQ_ACK_ENABLE,
		       virtbase + U300_WDOG_IER);
	writew(0x0000U, virtbase + U300_WDOG_IMR);
	clk_disable(clk);
	dev_crit(parent, "watchdog is barking!\n");
	return IRQ_HANDLED;
}