diff options
Diffstat (limited to 'drivers/rtc/rtc-ls1x.c')
| -rw-r--r-- | drivers/rtc/rtc-ls1x.c | 32 | 
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/rtc/rtc-ls1x.c b/drivers/rtc/rtc-ls1x.c index 045af1135e48..f4c248655edd 100644 --- a/drivers/rtc/rtc-ls1x.c +++ b/drivers/rtc/rtc-ls1x.c @@ -87,16 +87,17 @@  static int ls1x_rtc_read_time(struct device *dev, struct rtc_time *rtm)  { -	unsigned long v, t; +	unsigned long v; +	time64_t t;  	v = readl(SYS_TOYREAD0);  	t = readl(SYS_TOYREAD1);  	memset(rtm, 0, sizeof(struct rtc_time)); -	t  = mktime((t & LS1X_YEAR_MASK), ls1x_get_month(v), +	t  = mktime64((t & LS1X_YEAR_MASK), ls1x_get_month(v),  			ls1x_get_day(v), ls1x_get_hour(v),  			ls1x_get_min(v), ls1x_get_sec(v)); -	rtc_time_to_tm(t, rtm); +	rtc_time64_to_tm(t, rtm);  	return 0;  } @@ -147,15 +148,13 @@ static int ls1x_rtc_probe(struct platform_device *pdev)  {  	struct rtc_device *rtcdev;  	unsigned long v; -	int ret;  	v = readl(SYS_COUNTER_CNTRL);  	if (!(v & RTC_CNTR_OK)) {  		dev_err(&pdev->dev, "rtc counters not working\n"); -		ret = -ENODEV; -		goto err; +		return -ENODEV;  	} -	ret = -ETIMEDOUT; +  	/* set to 1 HZ if needed */  	if (readl(SYS_TOYTRIM) != 32767) {  		v = 0x100000; @@ -164,7 +163,7 @@ static int ls1x_rtc_probe(struct platform_device *pdev)  		if (!v) {  			dev_err(&pdev->dev, "time out\n"); -			goto err; +			return -ETIMEDOUT;  		}  		writel(32767, SYS_TOYTRIM);  	} @@ -172,17 +171,16 @@ static int ls1x_rtc_probe(struct platform_device *pdev)  	while (readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_TTS)  		usleep_range(1000, 3000); -	rtcdev = devm_rtc_device_register(&pdev->dev, "ls1x-rtc", -					&ls1x_rtc_ops , THIS_MODULE); -	if (IS_ERR(rtcdev)) { -		ret = PTR_ERR(rtcdev); -		goto err; -	} +	rtcdev = devm_rtc_allocate_device(&pdev->dev); +	if (IS_ERR(rtcdev)) +		return PTR_ERR(rtcdev);  	platform_set_drvdata(pdev, rtcdev); -	return 0; -err: -	return ret; +	rtcdev->ops = &ls1x_rtc_ops; +	rtcdev->range_min = RTC_TIMESTAMP_BEGIN_1900; +	rtcdev->range_max = RTC_TIMESTAMP_END_2099; + +	return rtc_register_device(rtcdev);  }  static struct platform_driver  ls1x_rtc_driver = {  | 
