diff options
Diffstat (limited to 'drivers/rtc')
| -rw-r--r-- | drivers/rtc/rtc-m48t35.c | 42 | 
1 files changed, 10 insertions, 32 deletions
diff --git a/drivers/rtc/rtc-m48t35.c b/drivers/rtc/rtc-m48t35.c index 31c9190a1fc..37444246e5e 100644 --- a/drivers/rtc/rtc-m48t35.c +++ b/drivers/rtc/rtc-m48t35.c @@ -145,12 +145,11 @@ static int m48t35_probe(struct platform_device *pdev)  {  	struct resource *res;  	struct m48t35_priv *priv; -	int ret = 0;  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	if (!res)  		return -ENODEV; -	priv = kzalloc(sizeof(struct m48t35_priv), GFP_KERNEL); +	priv = devm_kzalloc(&pdev->dev, sizeof(struct m48t35_priv), GFP_KERNEL);  	if (!priv)  		return -ENOMEM; @@ -160,50 +159,29 @@ static int m48t35_probe(struct platform_device *pdev)  	 * conflicts are resolved  	 */  #ifndef CONFIG_SGI_IP27 -	if (!request_mem_region(res->start, priv->size, pdev->name)) { -		ret = -EBUSY; -		goto out; -	} +	if (!devm_request_mem_region(&pdev->dev, res->start, priv->size, +				     pdev->name)) +		return -EBUSY;  #endif  	priv->baseaddr = res->start; -	priv->reg = ioremap(priv->baseaddr, priv->size); -	if (!priv->reg) { -		ret = -ENOMEM; -		goto out; -	} +	priv->reg = devm_ioremap(&pdev->dev, priv->baseaddr, priv->size); +	if (!priv->reg) +		return -ENOMEM;  	spin_lock_init(&priv->lock);  	platform_set_drvdata(pdev, priv); -	priv->rtc = rtc_device_register("m48t35", &pdev->dev, +	priv->rtc = devm_rtc_device_register(&pdev->dev, "m48t35",  				  &m48t35_ops, THIS_MODULE); -	if (IS_ERR(priv->rtc)) { -		ret = PTR_ERR(priv->rtc); -		goto out; -	} +	if (IS_ERR(priv->rtc)) +		return PTR_ERR(priv->rtc);  	return 0; - -out: -	if (priv->reg) -		iounmap(priv->reg); -	if (priv->baseaddr) -		release_mem_region(priv->baseaddr, priv->size); -	kfree(priv); -	return ret;  }  static int m48t35_remove(struct platform_device *pdev)  { -	struct m48t35_priv *priv = platform_get_drvdata(pdev); - -	rtc_device_unregister(priv->rtc); -	iounmap(priv->reg); -#ifndef CONFIG_SGI_IP27 -	release_mem_region(priv->baseaddr, priv->size); -#endif -	kfree(priv);  	return 0;  }  |