/* Attempt to re-trigger the interrupt. The SA1111 contains a register (INTSET) which claims to do this. However, in practice no amount of manipulation of INTEN and INTSET guarantees that the interrupt will be triggered. In fact, its very difficult, if not impossible to get INTSET to re-trigger the interrupt.  */
static int sa1111_retrigger_highirq(unsigned int irq)
/* Attempt to re-trigger the interrupt. The SA1111 contains a register (INTSET) which claims to do this. However, in practice no amount of manipulation of INTEN and INTSET guarantees that the interrupt will be triggered. In fact, its very difficult, if not impossible to get INTSET to re-trigger the interrupt.  */
static int sa1111_retrigger_highirq(unsigned int irq)
{
	unsigned int mask = SA1111_IRQMASK_HI(irq);
	void __iomem *mapbase = get_irq_chip_data(irq);
	unsigned long ip1;
	int i;
	ip1 = sa1111_readl(mapbase + SA1111_INTPOL1);
	for (i = 0; i < 8; i++) {
		sa1111_writel(ip1 ^ mask, mapbase + SA1111_INTPOL1);
		sa1111_writel(ip1, mapbase + SA1111_INTPOL1);
		if (sa1111_readl(mapbase + SA1111_INTSTATCLR1) & mask)
			break;
	}
	if (i == 8)
		printk(KERN_ERR "Danger Will Robinson: failed to "
			"re-trigger IRQ%d\n", irq);
	return i == 8 ? -1 : 0;
}