diff options
Diffstat (limited to 'drivers/rtc/rtc-snvs.c')
| -rw-r--r-- | drivers/rtc/rtc-snvs.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/rtc/rtc-snvs.c b/drivers/rtc/rtc-snvs.c index d8ef9e052c4f..9af591d5223c 100644 --- a/drivers/rtc/rtc-snvs.c +++ b/drivers/rtc/rtc-snvs.c | |||
| @@ -132,20 +132,23 @@ static int snvs_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
| 132 | { | 132 | { |
| 133 | struct snvs_rtc_data *data = dev_get_drvdata(dev); | 133 | struct snvs_rtc_data *data = dev_get_drvdata(dev); |
| 134 | unsigned long time; | 134 | unsigned long time; |
| 135 | int ret; | ||
| 135 | 136 | ||
| 136 | rtc_tm_to_time(tm, &time); | 137 | rtc_tm_to_time(tm, &time); |
| 137 | 138 | ||
| 138 | /* Disable RTC first */ | 139 | /* Disable RTC first */ |
| 139 | snvs_rtc_enable(data, false); | 140 | ret = snvs_rtc_enable(data, false); |
| 141 | if (ret) | ||
| 142 | return ret; | ||
| 140 | 143 | ||
| 141 | /* Write 32-bit time to 47-bit timer, leaving 15 LSBs blank */ | 144 | /* Write 32-bit time to 47-bit timer, leaving 15 LSBs blank */ |
| 142 | regmap_write(data->regmap, data->offset + SNVS_LPSRTCLR, time << CNTR_TO_SECS_SH); | 145 | regmap_write(data->regmap, data->offset + SNVS_LPSRTCLR, time << CNTR_TO_SECS_SH); |
| 143 | regmap_write(data->regmap, data->offset + SNVS_LPSRTCMR, time >> (32 - CNTR_TO_SECS_SH)); | 146 | regmap_write(data->regmap, data->offset + SNVS_LPSRTCMR, time >> (32 - CNTR_TO_SECS_SH)); |
| 144 | 147 | ||
| 145 | /* Enable RTC again */ | 148 | /* Enable RTC again */ |
| 146 | snvs_rtc_enable(data, true); | 149 | ret = snvs_rtc_enable(data, true); |
| 147 | 150 | ||
| 148 | return 0; | 151 | return ret; |
| 149 | } | 152 | } |
| 150 | 153 | ||
| 151 | static int snvs_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) | 154 | static int snvs_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) |
| @@ -288,7 +291,11 @@ static int snvs_rtc_probe(struct platform_device *pdev) | |||
| 288 | regmap_write(data->regmap, data->offset + SNVS_LPSR, 0xffffffff); | 291 | regmap_write(data->regmap, data->offset + SNVS_LPSR, 0xffffffff); |
| 289 | 292 | ||
| 290 | /* Enable RTC */ | 293 | /* Enable RTC */ |
| 291 | snvs_rtc_enable(data, true); | 294 | ret = snvs_rtc_enable(data, true); |
| 295 | if (ret) { | ||
| 296 | dev_err(&pdev->dev, "failed to enable rtc %d\n", ret); | ||
| 297 | goto error_rtc_device_register; | ||
| 298 | } | ||
| 292 | 299 | ||
| 293 | device_init_wakeup(&pdev->dev, true); | 300 | device_init_wakeup(&pdev->dev, true); |
| 294 | 301 | ||
