in extcon-rt8973a.c [445:487]
static irqreturn_t rt8973a_muic_irq_handler(int irq, void *data)
{
struct rt8973a_muic_info *info = data;
int i, irq_type = -1;
for (i = 0; i < info->num_muic_irqs; i++)
if (irq == info->muic_irqs[i].virq)
irq_type = info->muic_irqs[i].irq;
switch (irq_type) {
case RT8973A_INT1_ATTACH:
info->irq_attach = true;
break;
case RT8973A_INT1_DETACH:
info->irq_detach = true;
break;
case RT8973A_INT1_OVP:
info->irq_ovp = true;
break;
case RT8973A_INT1_OTP:
info->irq_otp = true;
break;
case RT8973A_INT1_CHGDET:
case RT8973A_INT1_DCD_T:
case RT8973A_INT1_CONNECT:
case RT8973A_INT1_ADC_CHG:
case RT8973A_INT2_UVLO:
case RT8973A_INT2_POR:
case RT8973A_INT2_OTP_FET:
case RT8973A_INT2_OVP_FET:
case RT8973A_INT2_OCP_LATCH:
case RT8973A_INT2_OCP:
case RT8973A_INT2_OVP_OCP:
default:
dev_dbg(info->dev,
"Cannot handle this interrupt (%d)\n", irq_type);
break;
}
schedule_work(&info->irq_work);
return IRQ_HANDLED;
}