aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-omap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-omap.c')
-rw-r--r--drivers/rtc/rtc-omap.c23
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
886err_deregister_pinctrl:
887 pinctrl_unregister(rtc->pctldev);
889err: 888err:
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);