aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/wm8350-irq.c4
-rw-r--r--drivers/power/wm8350_power.c26
-rw-r--r--drivers/regulator/wm8350-regulator.c3
-rw-r--r--drivers/rtc/rtc-wm8350.c7
-rw-r--r--sound/soc/codecs/wm8350.c10
5 files changed, 9 insertions, 41 deletions
diff --git a/drivers/mfd/wm8350-irq.c b/drivers/mfd/wm8350-irq.c
index 2ea2b8b4c72a..c8df547c4747 100644
--- a/drivers/mfd/wm8350-irq.c
+++ b/drivers/mfd/wm8350-irq.c
@@ -445,6 +445,8 @@ int wm8350_register_irq(struct wm8350 *wm8350, int irq,
445 wm8350->irq[irq].data = data; 445 wm8350->irq[irq].data = data;
446 mutex_unlock(&wm8350->irq_mutex); 446 mutex_unlock(&wm8350->irq_mutex);
447 447
448 wm8350_unmask_irq(wm8350, irq);
449
448 return 0; 450 return 0;
449} 451}
450EXPORT_SYMBOL_GPL(wm8350_register_irq); 452EXPORT_SYMBOL_GPL(wm8350_register_irq);
@@ -454,6 +456,8 @@ int wm8350_free_irq(struct wm8350 *wm8350, int irq)
454 if (irq < 0 || irq > WM8350_NUM_IRQ) 456 if (irq < 0 || irq > WM8350_NUM_IRQ)
455 return -EINVAL; 457 return -EINVAL;
456 458
459 wm8350_mask_irq(wm8350, irq);
460
457 mutex_lock(&wm8350->irq_mutex); 461 mutex_lock(&wm8350->irq_mutex);
458 wm8350->irq[irq].handler = NULL; 462 wm8350->irq[irq].handler = NULL;
459 mutex_unlock(&wm8350->irq_mutex); 463 mutex_unlock(&wm8350->irq_mutex);
diff --git a/drivers/power/wm8350_power.c b/drivers/power/wm8350_power.c
index 6e634cf7fc14..ad4f071e1287 100644
--- a/drivers/power/wm8350_power.c
+++ b/drivers/power/wm8350_power.c
@@ -391,80 +391,54 @@ static void wm8350_init_charger(struct wm8350 *wm8350)
391 /* register our interest in charger events */ 391 /* register our interest in charger events */
392 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT, 392 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT,
393 wm8350_charger_handler, 0, "Battery hot", wm8350); 393 wm8350_charger_handler, 0, "Battery hot", wm8350);
394 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT);
395 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD, 394 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD,
396 wm8350_charger_handler, 0, "Battery cold", wm8350); 395 wm8350_charger_handler, 0, "Battery cold", wm8350);
397 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD);
398 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL, 396 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL,
399 wm8350_charger_handler, 0, "Battery fail", wm8350); 397 wm8350_charger_handler, 0, "Battery fail", wm8350);
400 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL);
401 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO, 398 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO,
402 wm8350_charger_handler, 0, 399 wm8350_charger_handler, 0,
403 "Charger timeout", wm8350); 400 "Charger timeout", wm8350);
404 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_TO);
405 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END, 401 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END,
406 wm8350_charger_handler, 0, 402 wm8350_charger_handler, 0,
407 "Charge end", wm8350); 403 "Charge end", wm8350);
408 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_END);
409 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START, 404 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START,
410 wm8350_charger_handler, 0, 405 wm8350_charger_handler, 0,
411 "Charge start", wm8350); 406 "Charge start", wm8350);
412 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_START);
413 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY, 407 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY,
414 wm8350_charger_handler, 0, 408 wm8350_charger_handler, 0,
415 "Fast charge ready", wm8350); 409 "Fast charge ready", wm8350);
416 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY);
417 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, 410 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9,
418 wm8350_charger_handler, 0, 411 wm8350_charger_handler, 0,
419 "Battery <3.9V", wm8350); 412 "Battery <3.9V", wm8350);
420 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9);
421 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, 413 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1,
422 wm8350_charger_handler, 0, 414 wm8350_charger_handler, 0,
423 "Battery <3.1V", wm8350); 415 "Battery <3.1V", wm8350);
424 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1);
425 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, 416 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85,
426 wm8350_charger_handler, 0, 417 wm8350_charger_handler, 0,
427 "Battery <2.85V", wm8350); 418 "Battery <2.85V", wm8350);
428 419
429 wm8350_unmask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85);
430
431 /* and supply change events */ 420 /* and supply change events */
432 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB, 421 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB,
433 wm8350_charger_handler, 0, "USB", wm8350); 422 wm8350_charger_handler, 0, "USB", wm8350);
434 wm8350_unmask_irq(wm8350, WM8350_IRQ_EXT_USB_FB);
435 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB, 423 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB,
436 wm8350_charger_handler, 0, "Wall", wm8350); 424 wm8350_charger_handler, 0, "Wall", wm8350);
437 wm8350_unmask_irq(wm8350, WM8350_IRQ_EXT_WALL_FB);
438 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB, 425 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB,
439 wm8350_charger_handler, 0, "Battery", wm8350); 426 wm8350_charger_handler, 0, "Battery", wm8350);
440 wm8350_unmask_irq(wm8350, WM8350_IRQ_EXT_BAT_FB);
441} 427}
442 428
443static void free_charger_irq(struct wm8350 *wm8350) 429static void free_charger_irq(struct wm8350 *wm8350)
444{ 430{
445 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT);
446 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT); 431 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT);
447 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD);
448 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD); 432 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD);
449 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL);
450 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL); 433 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL);
451 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_TO);
452 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO); 434 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO);
453 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_END);
454 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END); 435 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END);
455 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_START);
456 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START); 436 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START);
457 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9);
458 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9); 437 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9);
459 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1);
460 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1); 438 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1);
461 wm8350_mask_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85);
462 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85); 439 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85);
463 wm8350_mask_irq(wm8350, WM8350_IRQ_EXT_USB_FB);
464 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_USB_FB); 440 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_USB_FB);
465 wm8350_mask_irq(wm8350, WM8350_IRQ_EXT_WALL_FB);
466 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_WALL_FB); 441 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_WALL_FB);
467 wm8350_mask_irq(wm8350, WM8350_IRQ_EXT_BAT_FB);
468 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_BAT_FB); 442 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_BAT_FB);
469} 443}
470 444
diff --git a/drivers/regulator/wm8350-regulator.c b/drivers/regulator/wm8350-regulator.c
index 8c289fd4add2..1bbff099a546 100644
--- a/drivers/regulator/wm8350-regulator.c
+++ b/drivers/regulator/wm8350-regulator.c
@@ -1399,8 +1399,6 @@ static int wm8350_regulator_probe(struct platform_device *pdev)
1399 return ret; 1399 return ret;
1400 } 1400 }
1401 1401
1402 wm8350_unmask_irq(wm8350, wm8350_reg[pdev->id].irq);
1403
1404 return 0; 1402 return 0;
1405} 1403}
1406 1404
@@ -1409,7 +1407,6 @@ static int wm8350_regulator_remove(struct platform_device *pdev)
1409 struct regulator_dev *rdev = platform_get_drvdata(pdev); 1407 struct regulator_dev *rdev = platform_get_drvdata(pdev);
1410 struct wm8350 *wm8350 = rdev_get_drvdata(rdev); 1408 struct wm8350 *wm8350 = rdev_get_drvdata(rdev);
1411 1409
1412 wm8350_mask_irq(wm8350, wm8350_reg[pdev->id].irq);
1413 wm8350_free_irq(wm8350, wm8350_reg[pdev->id].irq); 1410 wm8350_free_irq(wm8350, wm8350_reg[pdev->id].irq);
1414 1411
1415 regulator_unregister(rdev); 1412 regulator_unregister(rdev);
diff --git a/drivers/rtc/rtc-wm8350.c b/drivers/rtc/rtc-wm8350.c
index 56e56e552813..f16486635a8e 100644
--- a/drivers/rtc/rtc-wm8350.c
+++ b/drivers/rtc/rtc-wm8350.c
@@ -459,17 +459,14 @@ static int wm8350_rtc_probe(struct platform_device *pdev)
459 return ret; 459 return ret;
460 } 460 }
461 461
462 wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC);
463 wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_PER);
464
465 wm8350_register_irq(wm8350, WM8350_IRQ_RTC_SEC, 462 wm8350_register_irq(wm8350, WM8350_IRQ_RTC_SEC,
466 wm8350_rtc_update_handler, 0, 463 wm8350_rtc_update_handler, 0,
467 "RTC Seconds", wm8350); 464 "RTC Seconds", wm8350);
465 wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC);
468 466
469 wm8350_register_irq(wm8350, WM8350_IRQ_RTC_ALM, 467 wm8350_register_irq(wm8350, WM8350_IRQ_RTC_ALM,
470 wm8350_rtc_alarm_handler, 0, 468 wm8350_rtc_alarm_handler, 0,
471 "RTC Alarm", wm8350); 469 "RTC Alarm", wm8350);
472 wm8350_unmask_irq(wm8350, WM8350_IRQ_RTC_ALM);
473 470
474 return 0; 471 return 0;
475} 472}
@@ -479,8 +476,6 @@ static int __devexit wm8350_rtc_remove(struct platform_device *pdev)
479 struct wm8350 *wm8350 = platform_get_drvdata(pdev); 476 struct wm8350 *wm8350 = platform_get_drvdata(pdev);
480 struct wm8350_rtc *wm_rtc = &wm8350->rtc; 477 struct wm8350_rtc *wm_rtc = &wm8350->rtc;
481 478
482 wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC);
483
484 wm8350_free_irq(wm8350, WM8350_IRQ_RTC_SEC); 479 wm8350_free_irq(wm8350, WM8350_IRQ_RTC_SEC);
485 wm8350_free_irq(wm8350, WM8350_IRQ_RTC_ALM); 480 wm8350_free_irq(wm8350, WM8350_IRQ_RTC_ALM);
486 481
diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
index 17a327d67fd5..ebbf11b653a4 100644
--- a/sound/soc/codecs/wm8350.c
+++ b/sound/soc/codecs/wm8350.c
@@ -1426,8 +1426,6 @@ int wm8350_hp_jack_detect(struct snd_soc_codec *codec, enum wm8350_jack which,
1426 /* Sync status */ 1426 /* Sync status */
1427 wm8350_hp_jack_handler(irq, priv); 1427 wm8350_hp_jack_handler(irq, priv);
1428 1428
1429 wm8350_unmask_irq(wm8350, irq);
1430
1431 return 0; 1429 return 0;
1432} 1430}
1433EXPORT_SYMBOL_GPL(wm8350_hp_jack_detect); 1431EXPORT_SYMBOL_GPL(wm8350_hp_jack_detect);
@@ -1485,8 +1483,10 @@ static int wm8350_probe(struct platform_device *pdev)
1485 wm8350_set_bits(wm8350, WM8350_ROUT2_VOLUME, 1483 wm8350_set_bits(wm8350, WM8350_ROUT2_VOLUME,
1486 WM8350_OUT2_VU | WM8350_OUT2R_MUTE); 1484 WM8350_OUT2_VU | WM8350_OUT2R_MUTE);
1487 1485
1488 wm8350_mask_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L); 1486 /* Make sure jack detect is disabled to start off with */
1489 wm8350_mask_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R); 1487 wm8350_clear_bits(wm8350, WM8350_JACK_DETECT,
1488 WM8350_JDL_ENA | WM8350_JDR_ENA);
1489
1490 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L, 1490 wm8350_register_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L,
1491 wm8350_hp_jack_handler, 0, "Left jack detect", 1491 wm8350_hp_jack_handler, 0, "Left jack detect",
1492 priv); 1492 priv);
@@ -1521,8 +1521,6 @@ static int wm8350_remove(struct platform_device *pdev)
1521 WM8350_JDL_ENA | WM8350_JDR_ENA); 1521 WM8350_JDL_ENA | WM8350_JDR_ENA);
1522 wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_TOCLK_ENA); 1522 wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_4, WM8350_TOCLK_ENA);
1523 1523
1524 wm8350_mask_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L);
1525 wm8350_mask_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R);
1526 wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L); 1524 wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_L);
1527 wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R); 1525 wm8350_free_irq(wm8350, WM8350_IRQ_CODEC_JCK_DET_R);
1528 1526