diff options
| author | Fabio Estevam <fabio.estevam@freescale.com> | 2012-10-03 23:15:08 -0400 |
|---|---|---|
| committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-11-20 06:21:11 -0500 |
| commit | 4b5edf7887c6ec8c09c9064a2d14b578ef1904fe (patch) | |
| tree | 866d78a4ceeca74208a3c1bd878cba3ee2de3f31 /drivers/power | |
| parent | 21eed07d122a69d32220256c9a461a9d047e92b9 (diff) | |
power: da9052-battery: Convert to the new da9052 interrupt functions
Convert to the new da9052 interrupt functions, so that we can get rid of
irq_base references.
Acked-by: Anton Vorontsov <cbouatmailru@gmail.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/power')
| -rw-r--r-- | drivers/power/da9052-battery.c | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/drivers/power/da9052-battery.c b/drivers/power/da9052-battery.c index d9d034d7496..3972dc0fc87 100644 --- a/drivers/power/da9052-battery.c +++ b/drivers/power/da9052-battery.c | |||
| @@ -440,8 +440,10 @@ static int da9052_bat_check_health(struct da9052_battery *bat, int *health) | |||
| 440 | static irqreturn_t da9052_bat_irq(int irq, void *data) | 440 | static irqreturn_t da9052_bat_irq(int irq, void *data) |
| 441 | { | 441 | { |
| 442 | struct da9052_battery *bat = data; | 442 | struct da9052_battery *bat = data; |
| 443 | int virq; | ||
| 443 | 444 | ||
| 444 | irq -= bat->da9052->irq_base; | 445 | virq = regmap_irq_get_virq(bat->da9052->irq_data, irq); |
| 446 | irq -= virq; | ||
| 445 | 447 | ||
| 446 | if (irq == DA9052_IRQ_CHGEND) | 448 | if (irq == DA9052_IRQ_CHGEND) |
| 447 | bat->status = POWER_SUPPLY_STATUS_FULL; | 449 | bat->status = POWER_SUPPLY_STATUS_FULL; |
| @@ -567,7 +569,7 @@ static struct power_supply template_battery = { | |||
| 567 | .get_property = da9052_bat_get_property, | 569 | .get_property = da9052_bat_get_property, |
| 568 | }; | 570 | }; |
| 569 | 571 | ||
| 570 | static const char *const da9052_bat_irqs[] = { | 572 | static char *da9052_bat_irqs[] = { |
| 571 | "BATT TEMP", | 573 | "BATT TEMP", |
| 572 | "DCIN DET", | 574 | "DCIN DET", |
| 573 | "DCIN REM", | 575 | "DCIN REM", |
| @@ -576,12 +578,20 @@ static const char *const da9052_bat_irqs[] = { | |||
| 576 | "CHG END", | 578 | "CHG END", |
| 577 | }; | 579 | }; |
| 578 | 580 | ||
| 581 | static int da9052_bat_irq_bits[] = { | ||
| 582 | DA9052_IRQ_TBAT, | ||
| 583 | DA9052_IRQ_DCIN, | ||
| 584 | DA9052_IRQ_DCINREM, | ||
| 585 | DA9052_IRQ_VBUS, | ||
| 586 | DA9052_IRQ_VBUSREM, | ||
| 587 | DA9052_IRQ_CHGEND, | ||
| 588 | }; | ||
| 589 | |||
| 579 | static s32 __devinit da9052_bat_probe(struct platform_device *pdev) | 590 | static s32 __devinit da9052_bat_probe(struct platform_device *pdev) |
| 580 | { | 591 | { |
| 581 | struct da9052_pdata *pdata; | 592 | struct da9052_pdata *pdata; |
| 582 | struct da9052_battery *bat; | 593 | struct da9052_battery *bat; |
| 583 | int ret; | 594 | int ret; |
| 584 | int irq; | ||
| 585 | int i; | 595 | int i; |
| 586 | 596 | ||
| 587 | bat = kzalloc(sizeof(struct da9052_battery), GFP_KERNEL); | 597 | bat = kzalloc(sizeof(struct da9052_battery), GFP_KERNEL); |
| @@ -602,15 +612,14 @@ static s32 __devinit da9052_bat_probe(struct platform_device *pdev) | |||
| 602 | bat->psy.use_for_apm = 1; | 612 | bat->psy.use_for_apm = 1; |
| 603 | 613 | ||
| 604 | for (i = 0; i < ARRAY_SIZE(da9052_bat_irqs); i++) { | 614 | for (i = 0; i < ARRAY_SIZE(da9052_bat_irqs); i++) { |
| 605 | irq = platform_get_irq_byname(pdev, da9052_bat_irqs[i]); | 615 | ret = da9052_request_irq(bat->da9052, |
| 606 | ret = request_threaded_irq(bat->da9052->irq_base + irq, | 616 | da9052_bat_irq_bits[i], da9052_bat_irqs[i], |
| 607 | NULL, da9052_bat_irq, | 617 | da9052_bat_irq, bat); |
| 608 | IRQF_TRIGGER_LOW | IRQF_ONESHOT, | 618 | |
| 609 | da9052_bat_irqs[i], bat); | ||
| 610 | if (ret != 0) { | 619 | if (ret != 0) { |
| 611 | dev_err(bat->da9052->dev, | 620 | dev_err(bat->da9052->dev, |
| 612 | "DA9052 failed to request %s IRQ %d: %d\n", | 621 | "DA9052 failed to request %s IRQ: %d\n", |
| 613 | da9052_bat_irqs[i], irq, ret); | 622 | da9052_bat_irqs[i], ret); |
| 614 | goto err; | 623 | goto err; |
| 615 | } | 624 | } |
| 616 | } | 625 | } |
| @@ -623,23 +632,20 @@ static s32 __devinit da9052_bat_probe(struct platform_device *pdev) | |||
| 623 | return 0; | 632 | return 0; |
| 624 | 633 | ||
| 625 | err: | 634 | err: |
| 626 | while (--i >= 0) { | 635 | while (--i >= 0) |
| 627 | irq = platform_get_irq_byname(pdev, da9052_bat_irqs[i]); | 636 | da9052_free_irq(bat->da9052, da9052_bat_irq_bits[i], bat); |
| 628 | free_irq(bat->da9052->irq_base + irq, bat); | 637 | |
| 629 | } | ||
| 630 | kfree(bat); | 638 | kfree(bat); |
| 631 | return ret; | 639 | return ret; |
| 632 | } | 640 | } |
| 633 | static int __devexit da9052_bat_remove(struct platform_device *pdev) | 641 | static int __devexit da9052_bat_remove(struct platform_device *pdev) |
| 634 | { | 642 | { |
| 635 | int i; | 643 | int i; |
| 636 | int irq; | ||
| 637 | struct da9052_battery *bat = platform_get_drvdata(pdev); | 644 | struct da9052_battery *bat = platform_get_drvdata(pdev); |
| 638 | 645 | ||
| 639 | for (i = 0; i < ARRAY_SIZE(da9052_bat_irqs); i++) { | 646 | for (i = 0; i < ARRAY_SIZE(da9052_bat_irqs); i++) |
| 640 | irq = platform_get_irq_byname(pdev, da9052_bat_irqs[i]); | 647 | da9052_free_irq(bat->da9052, da9052_bat_irq_bits[i], bat); |
| 641 | free_irq(bat->da9052->irq_base + irq, bat); | 648 | |
| 642 | } | ||
| 643 | power_supply_unregister(&bat->psy); | 649 | power_supply_unregister(&bat->psy); |
| 644 | kfree(bat); | 650 | kfree(bat); |
| 645 | 651 | ||
