void vrc4173_select_function(int func) { u16 val; if (vrc4173_initialized) { val = vrc4173_inw(VRC4173_SELECTREG); switch(func) { case PS2CH1_SELECT: val |= 0x0004; break; case PS2CH2_SELECT: val |= 0x0002; break; case TOUCHPANEL_SELECT: val &= 0x0007; break; case KIU8_SELECT: val &= 0x000e; break; case KIU10_SELECT: val &= 0x000c; break; case KIU12_SELECT: val &= 0x0008; break; case GPIO_SELECT: val |= 0x0008; break; } vrc4173_outw(val, VRC4173_SELECTREG); } }
static inline void clear_cmusrst(uint16_t val) { uint16_t cmusrst; cmusrst = vrc4173_inw(VRC4173_CMUSRST); cmusrst &= ~val; vrc4173_outw(cmusrst, VRC4173_CMUSRST); }
static inline void set_cmusrst(uint16_t val) { uint16_t cmusrst; cmusrst = vrc4173_inw(VRC4173_CMUSRST); cmusrst |= val; vrc4173_outw(cmusrst, VRC4173_CMUSRST); }
static int vrc4173_get_irq_number(int irq) { uint16_t status, mask; int i; status = vrc4173_inw(VRC4173_SYSINT1REG); mask = vrc4173_inw(VRC4173_MSYSINT1REG); status &= mask; if (status) { for (i = 0; i < 16; i++) if (status & (0x0001 << i)) return VRC4173_IRQ(i); } return -EINVAL; }
static void disable_vrc4173_irq(unsigned int irq) { uint16_t val; val = vrc4173_inw(VRC4173_MSYSINT1REG); val &= ~((uint16_t)1 << (irq - VRC4173_IRQ_BASE)); vrc4173_outw(val, VRC4173_MSYSINT1REG); }
static void enable_vrc4173_irq(unsigned int irq) { u16 val; val = vrc4173_inw(VRC4173_MSYSINT1REG); val |= (u16)1 << (irq - VRC4173_IRQ_BASE); vrc4173_outw(val, VRC4173_MSYSINT1REG); }
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); }
static inline void vrc4173_giu_init(void) { vrc4173_selectreg = vrc4173_inw(VRC4173_SELECTREG); spin_lock_init(&vrc4173_giu_lock); }
static inline void vrc4173_cmu_init(void) { vrc4173_cmuclkmsk = vrc4173_inw(VRC4173_CMUCLKMSK); spin_lock_init(&vrc4173_cmu_lock); }
static inline void vrc4173_cmu_init(void) { vrc4173_cmuclkmsk = vrc4173_inw(VRC4173_CMUCLKMSK); }