diff options
Diffstat (limited to 'drivers/rtc/rtc-palmas.c')
| -rw-r--r-- | drivers/rtc/rtc-palmas.c | 19 | 
1 files changed, 12 insertions, 7 deletions
| diff --git a/drivers/rtc/rtc-palmas.c b/drivers/rtc/rtc-palmas.c index 59c42986254e..50204d474eb7 100644 --- a/drivers/rtc/rtc-palmas.c +++ b/drivers/rtc/rtc-palmas.c @@ -30,6 +30,7 @@  #include <linux/kernel.h>  #include <linux/mfd/palmas.h>  #include <linux/module.h> +#include <linux/of.h>  #include <linux/rtc.h>  #include <linux/types.h>  #include <linux/platform_device.h> @@ -264,7 +265,7 @@ static int palmas_rtc_probe(struct platform_device *pdev)  	palmas_rtc->irq = platform_get_irq(pdev, 0); -	palmas_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, +	palmas_rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,  				&palmas_rtc_ops, THIS_MODULE);  	if (IS_ERR(palmas_rtc->rtc)) {  		ret = PTR_ERR(palmas_rtc->rtc); @@ -272,14 +273,13 @@ static int palmas_rtc_probe(struct platform_device *pdev)  		return ret;  	} -	ret = request_threaded_irq(palmas_rtc->irq, NULL, +	ret = devm_request_threaded_irq(&pdev->dev, palmas_rtc->irq, NULL,  			palmas_rtc_interrupt,  			IRQF_TRIGGER_LOW | IRQF_ONESHOT |  			IRQF_EARLY_RESUME,  			dev_name(&pdev->dev), palmas_rtc);  	if (ret < 0) {  		dev_err(&pdev->dev, "IRQ request failed, err = %d\n", ret); -		rtc_device_unregister(palmas_rtc->rtc);  		return ret;  	} @@ -289,11 +289,7 @@ static int palmas_rtc_probe(struct platform_device *pdev)  static int palmas_rtc_remove(struct platform_device *pdev)  { -	struct palmas_rtc *palmas_rtc = platform_get_drvdata(pdev); -  	palmas_rtc_alarm_irq_enable(&pdev->dev, 0); -	free_irq(palmas_rtc->irq, palmas_rtc); -	rtc_device_unregister(palmas_rtc->rtc);  	return 0;  } @@ -321,6 +317,14 @@ static const struct dev_pm_ops palmas_rtc_pm_ops = {  	SET_SYSTEM_SLEEP_PM_OPS(palmas_rtc_suspend, palmas_rtc_resume)  }; +#ifdef CONFIG_OF +static struct of_device_id of_palmas_rtc_match[] = { +	{ .compatible = "ti,palmas-rtc"}, +	{ }, +}; +MODULE_DEVICE_TABLE(of, of_palmas_rtc_match); +#endif +  static struct platform_driver palmas_rtc_driver = {  	.probe		= palmas_rtc_probe,  	.remove		= palmas_rtc_remove, @@ -328,6 +332,7 @@ static struct platform_driver palmas_rtc_driver = {  		.owner	= THIS_MODULE,  		.name	= "palmas-rtc",  		.pm	= &palmas_rtc_pm_ops, +		.of_match_table = of_match_ptr(of_palmas_rtc_match),  	},  }; | 
