diff options
Diffstat (limited to 'drivers/rtc/rtc-omap.c')
-rw-r--r-- | drivers/rtc/rtc-omap.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c index 39086398833e..323ff55cc165 100644 --- a/drivers/rtc/rtc-omap.c +++ b/drivers/rtc/rtc-omap.c | |||
@@ -449,6 +449,7 @@ static void omap_rtc_power_off(void) | |||
449 | 449 | ||
450 | if (tm2bcd(&tm) < 0) { | 450 | if (tm2bcd(&tm) < 0) { |
451 | dev_err(&rtc->rtc->dev, "power off failed\n"); | 451 | dev_err(&rtc->rtc->dev, "power off failed\n"); |
452 | rtc->type->lock(rtc); | ||
452 | return; | 453 | return; |
453 | } | 454 | } |
454 | 455 | ||
@@ -582,9 +583,7 @@ static int rtc_pinconf_get(struct pinctrl_dev *pctldev, | |||
582 | u32 val; | 583 | u32 val; |
583 | u16 arg = 0; | 584 | u16 arg = 0; |
584 | 585 | ||
585 | rtc->type->unlock(rtc); | ||
586 | val = rtc_readl(rtc, OMAP_RTC_PMIC_REG); | 586 | val = rtc_readl(rtc, OMAP_RTC_PMIC_REG); |
587 | rtc->type->lock(rtc); | ||
588 | 587 | ||
589 | switch (param) { | 588 | switch (param) { |
590 | case PIN_CONFIG_INPUT_ENABLE: | 589 | case PIN_CONFIG_INPUT_ENABLE: |
@@ -614,9 +613,7 @@ static int rtc_pinconf_set(struct pinctrl_dev *pctldev, | |||
614 | u32 param_val; | 613 | u32 param_val; |
615 | int i; | 614 | int i; |
616 | 615 | ||
617 | rtc->type->unlock(rtc); | ||
618 | val = rtc_readl(rtc, OMAP_RTC_PMIC_REG); | 616 | val = rtc_readl(rtc, OMAP_RTC_PMIC_REG); |
619 | rtc->type->lock(rtc); | ||
620 | 617 | ||
621 | /* active low by default */ | 618 | /* active low by default */ |
622 | val |= OMAP_RTC_PMIC_EXT_WKUP_POL(pin); | 619 | val |= OMAP_RTC_PMIC_EXT_WKUP_POL(pin); |
@@ -861,13 +858,6 @@ static int omap_rtc_probe(struct platform_device *pdev) | |||
861 | goto err; | 858 | goto err; |
862 | } | 859 | } |
863 | 860 | ||
864 | if (rtc->is_pmic_controller) { | ||
865 | if (!pm_power_off) { | ||
866 | omap_rtc_power_off_rtc = rtc; | ||
867 | pm_power_off = omap_rtc_power_off; | ||
868 | } | ||
869 | } | ||
870 | |||
871 | /* Support ext_wakeup pinconf */ | 861 | /* Support ext_wakeup pinconf */ |
872 | rtc_pinctrl_desc.name = dev_name(&pdev->dev); | 862 | rtc_pinctrl_desc.name = dev_name(&pdev->dev); |
873 | 863 | ||
@@ -880,12 +870,21 @@ static int omap_rtc_probe(struct platform_device *pdev) | |||
880 | 870 | ||
881 | ret = rtc_register_device(rtc->rtc); | 871 | ret = rtc_register_device(rtc->rtc); |
882 | if (ret) | 872 | if (ret) |
883 | goto err; | 873 | goto err_deregister_pinctrl; |
884 | 874 | ||
885 | rtc_nvmem_register(rtc->rtc, &omap_rtc_nvmem_config); | 875 | rtc_nvmem_register(rtc->rtc, &omap_rtc_nvmem_config); |
886 | 876 | ||
877 | if (rtc->is_pmic_controller) { | ||
878 | if (!pm_power_off) { | ||
879 | omap_rtc_power_off_rtc = rtc; | ||
880 | pm_power_off = omap_rtc_power_off; | ||
881 | } | ||
882 | } | ||
883 | |||
887 | return 0; | 884 | return 0; |
888 | 885 | ||
886 | err_deregister_pinctrl: | ||
887 | pinctrl_unregister(rtc->pctldev); | ||
889 | err: | 888 | err: |
890 | clk_disable_unprepare(rtc->clk); | 889 | clk_disable_unprepare(rtc->clk); |
891 | device_init_wakeup(&pdev->dev, false); | 890 | device_init_wakeup(&pdev->dev, false); |