diff options
Diffstat (limited to 'drivers/rtc')
| -rw-r--r-- | drivers/rtc/rtc-efi.c | 1 | ||||
| -rw-r--r-- | drivers/rtc/rtc-s5m.c | 21 |
2 files changed, 15 insertions, 7 deletions
diff --git a/drivers/rtc/rtc-efi.c b/drivers/rtc/rtc-efi.c index 8225b89de810..c384fec6d173 100644 --- a/drivers/rtc/rtc-efi.c +++ b/drivers/rtc/rtc-efi.c | |||
| @@ -232,6 +232,7 @@ static struct platform_driver efi_rtc_driver = { | |||
| 232 | 232 | ||
| 233 | module_platform_driver_probe(efi_rtc_driver, efi_rtc_probe); | 233 | module_platform_driver_probe(efi_rtc_driver, efi_rtc_probe); |
| 234 | 234 | ||
| 235 | MODULE_ALIAS("platform:rtc-efi"); | ||
| 235 | MODULE_AUTHOR("dann frazier <dannf@hp.com>"); | 236 | MODULE_AUTHOR("dann frazier <dannf@hp.com>"); |
| 236 | MODULE_LICENSE("GPL"); | 237 | MODULE_LICENSE("GPL"); |
| 237 | MODULE_DESCRIPTION("EFI RTC driver"); | 238 | MODULE_DESCRIPTION("EFI RTC driver"); |
diff --git a/drivers/rtc/rtc-s5m.c b/drivers/rtc/rtc-s5m.c index 8f06250a0389..8754c33361e8 100644 --- a/drivers/rtc/rtc-s5m.c +++ b/drivers/rtc/rtc-s5m.c | |||
| @@ -717,12 +717,14 @@ static int s5m_rtc_probe(struct platform_device *pdev) | |||
| 717 | info->device_type = s5m87xx->device_type; | 717 | info->device_type = s5m87xx->device_type; |
| 718 | info->wtsr_smpl = s5m87xx->wtsr_smpl; | 718 | info->wtsr_smpl = s5m87xx->wtsr_smpl; |
| 719 | 719 | ||
| 720 | info->irq = regmap_irq_get_virq(s5m87xx->irq_data, alarm_irq); | 720 | if (s5m87xx->irq_data) { |
| 721 | if (info->irq <= 0) { | 721 | info->irq = regmap_irq_get_virq(s5m87xx->irq_data, alarm_irq); |
| 722 | ret = -EINVAL; | 722 | if (info->irq <= 0) { |
| 723 | dev_err(&pdev->dev, "Failed to get virtual IRQ %d\n", | 723 | ret = -EINVAL; |
| 724 | dev_err(&pdev->dev, "Failed to get virtual IRQ %d\n", | ||
| 724 | alarm_irq); | 725 | alarm_irq); |
| 725 | goto err; | 726 | goto err; |
| 727 | } | ||
| 726 | } | 728 | } |
| 727 | 729 | ||
| 728 | platform_set_drvdata(pdev, info); | 730 | platform_set_drvdata(pdev, info); |
| @@ -744,6 +746,11 @@ static int s5m_rtc_probe(struct platform_device *pdev) | |||
| 744 | goto err; | 746 | goto err; |
| 745 | } | 747 | } |
| 746 | 748 | ||
| 749 | if (!info->irq) { | ||
| 750 | dev_info(&pdev->dev, "Alarm IRQ not available\n"); | ||
| 751 | return 0; | ||
| 752 | } | ||
| 753 | |||
| 747 | ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL, | 754 | ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL, |
| 748 | s5m_rtc_alarm_irq, 0, "rtc-alarm0", | 755 | s5m_rtc_alarm_irq, 0, "rtc-alarm0", |
| 749 | info); | 756 | info); |
| @@ -802,7 +809,7 @@ static int s5m_rtc_resume(struct device *dev) | |||
| 802 | struct s5m_rtc_info *info = dev_get_drvdata(dev); | 809 | struct s5m_rtc_info *info = dev_get_drvdata(dev); |
| 803 | int ret = 0; | 810 | int ret = 0; |
| 804 | 811 | ||
| 805 | if (device_may_wakeup(dev)) | 812 | if (info->irq && device_may_wakeup(dev)) |
| 806 | ret = disable_irq_wake(info->irq); | 813 | ret = disable_irq_wake(info->irq); |
| 807 | 814 | ||
| 808 | return ret; | 815 | return ret; |
| @@ -813,7 +820,7 @@ static int s5m_rtc_suspend(struct device *dev) | |||
| 813 | struct s5m_rtc_info *info = dev_get_drvdata(dev); | 820 | struct s5m_rtc_info *info = dev_get_drvdata(dev); |
| 814 | int ret = 0; | 821 | int ret = 0; |
| 815 | 822 | ||
| 816 | if (device_may_wakeup(dev)) | 823 | if (info->irq && device_may_wakeup(dev)) |
| 817 | ret = enable_irq_wake(info->irq); | 824 | ret = enable_irq_wake(info->irq); |
| 818 | 825 | ||
| 819 | return ret; | 826 | return ret; |
