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)  {  	struct snvs_rtc_data *data = dev_get_drvdata(dev);  	unsigned long time; +	int ret;  	rtc_tm_to_time(tm, &time);  	/* Disable RTC first */ -	snvs_rtc_enable(data, false); +	ret = snvs_rtc_enable(data, false); +	if (ret) +		return ret;  	/* Write 32-bit time to 47-bit timer, leaving 15 LSBs blank */  	regmap_write(data->regmap, data->offset + SNVS_LPSRTCLR, time << CNTR_TO_SECS_SH);  	regmap_write(data->regmap, data->offset + SNVS_LPSRTCMR, time >> (32 - CNTR_TO_SECS_SH));  	/* Enable RTC again */ -	snvs_rtc_enable(data, true); +	ret = snvs_rtc_enable(data, true); -	return 0; +	return ret;  }  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)  	regmap_write(data->regmap, data->offset + SNVS_LPSR, 0xffffffff);  	/* Enable RTC */ -	snvs_rtc_enable(data, true); +	ret = snvs_rtc_enable(data, true); +	if (ret) { +		dev_err(&pdev->dev, "failed to enable rtc %d\n", ret); +		goto error_rtc_device_register; +	}  	device_init_wakeup(&pdev->dev, true);  | 
