On Mon, Apr 01, 2019 at 02:55:18PM -0600, Fletcher Woodruff wrote: > From: Ben Zhang > > This patch allows headphone plug detect and mic present > detect to be enabled at the same time. This patch implements > an irq_chip with irq_domain directly instead of using > regmap_irq, so that interrupt source line polarities can > be flipped to support irq sharing. regmap-irq should support active high/low, and if it doesn't it can't be a unique thing that only this device wants to implement so the common code should be improved. > + mutex_lock(&rt5677->irq_lock); > + /* > + * Loop to handle interrupts until the last i2c read shows no pending > + * irqs. The interrupt line is shared by multiple interrupt sources. > + * After the regmap_read() below, a new interrupt source line may > + * become high before the regmap_write() finishes, so there isn't a > + * rising edge on the shared interrupt line for the new interrupt. Thus, > + * the loop is needed to avoid missing irqs. > + * > + * A safeguard of 20 loops is used to avoid hanging in the irq handler > + * if there is something wrong with the interrupt status update. The > + * interrupt sources here are audio jack plug/unplug events which > + * shouldn't happen at a high frequency for a long period of time. > + * Empirically, more than 3 loops have never been seen. > + */ > + for (loop = 0; loop < 20; loop++) { This looks unrelated to the polarity of the interupt?