spin_lock_init(&vrc4173_giu_lock);
}
+void vrc4173_enable_piuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_PIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MPIUINTREG);
+ val |= mask;
+ vrc4173_outw(val, VRC4173_MPIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_eanble_piuint);
+
+void vrc4173_disable_piuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_PIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MPIUINTREG);
+ val &= ~mask;
+ vrc4173_outw(val, VRC4173_MPIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_disable_piuint);
+
+void vrc4173_enable_aiuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_AIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MAIUINTREG);
+ val |= mask;
+ vrc4173_outw(val, VRC4173_MAIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_enable_aiuint);
+
+void vrc4173_disable_aiuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_AIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MAIUINTREG);
+ val &= ~mask;
+ vrc4173_outw(val, VRC4173_MAIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_disable_aiuint);
+
+void vrc4173_enable_kiuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_KIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MKIUINTREG);
+ val |= mask;
+ vrc4173_outw(val, VRC4173_MKIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_enable_kiuint);
+
+void vrc4173_disable_kiuint(uint16_t mask)
+{
+ irq_desc_t *desc = irq_desc + VRC4173_KIU_IRQ;
+ unsigned long flags;
+ uint16_t val;
+
+ spin_lock_irqsave(&desc->lock, flags);
+ val = vrc4173_inw(VRC4173_MKIUINTREG);
+ val &= ~mask;
+ vrc4173_outw(val, VRC4173_MKIUINTREG);
+ spin_unlock_irqrestore(&desc->lock, flags);
+}
+
+EXPORT_SYMBOL(vrc4173_disable_kiuint);
+
static void enable_vrc4173_irq(unsigned int irq)
{
uint16_t val;