Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: mfd: Fix max8925 irq control bit incorrect setting mfd: Ignore non-GPIO IRQs when setting wm831x IRQ types
This commit is contained in:
@@ -429,24 +429,25 @@ static void max8925_irq_sync_unlock(unsigned int irq)
|
|||||||
irq_tsc = cache_tsc;
|
irq_tsc = cache_tsc;
|
||||||
for (i = 0; i < ARRAY_SIZE(max8925_irqs); i++) {
|
for (i = 0; i < ARRAY_SIZE(max8925_irqs); i++) {
|
||||||
irq_data = &max8925_irqs[i];
|
irq_data = &max8925_irqs[i];
|
||||||
|
/* 1 -- disable, 0 -- enable */
|
||||||
switch (irq_data->mask_reg) {
|
switch (irq_data->mask_reg) {
|
||||||
case MAX8925_CHG_IRQ1_MASK:
|
case MAX8925_CHG_IRQ1_MASK:
|
||||||
irq_chg[0] &= irq_data->enable;
|
irq_chg[0] &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
case MAX8925_CHG_IRQ2_MASK:
|
case MAX8925_CHG_IRQ2_MASK:
|
||||||
irq_chg[1] &= irq_data->enable;
|
irq_chg[1] &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
case MAX8925_ON_OFF_IRQ1_MASK:
|
case MAX8925_ON_OFF_IRQ1_MASK:
|
||||||
irq_on[0] &= irq_data->enable;
|
irq_on[0] &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
case MAX8925_ON_OFF_IRQ2_MASK:
|
case MAX8925_ON_OFF_IRQ2_MASK:
|
||||||
irq_on[1] &= irq_data->enable;
|
irq_on[1] &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
case MAX8925_RTC_IRQ_MASK:
|
case MAX8925_RTC_IRQ_MASK:
|
||||||
irq_rtc &= irq_data->enable;
|
irq_rtc &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
case MAX8925_TSC_IRQ_MASK:
|
case MAX8925_TSC_IRQ_MASK:
|
||||||
irq_tsc &= irq_data->enable;
|
irq_tsc &= ~irq_data->enable;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dev_err(chip->dev, "wrong IRQ\n");
|
dev_err(chip->dev, "wrong IRQ\n");
|
||||||
|
@@ -394,8 +394,13 @@ static int wm831x_irq_set_type(unsigned int irq, unsigned int type)
|
|||||||
|
|
||||||
irq = irq - wm831x->irq_base;
|
irq = irq - wm831x->irq_base;
|
||||||
|
|
||||||
if (irq < WM831X_IRQ_GPIO_1 || irq > WM831X_IRQ_GPIO_11)
|
if (irq < WM831X_IRQ_GPIO_1 || irq > WM831X_IRQ_GPIO_11) {
|
||||||
return -EINVAL;
|
/* Ignore internal-only IRQs */
|
||||||
|
if (irq >= 0 && irq < WM831X_NUM_IRQS)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQ_TYPE_EDGE_BOTH:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
|
Reference in New Issue
Block a user