Loading drivers/rtc/rtc-ds1216.c +9 −35 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ struct ds1216_regs { struct ds1216_priv { struct rtc_device *rtc; void __iomem *ioaddr; size_t size; unsigned long baseaddr; }; static const u8 magic[] = { Loading Loading @@ -144,57 +142,33 @@ static int __init ds1216_rtc_probe(struct platform_device *pdev) { struct resource *res; struct ds1216_priv *priv; int ret = 0; u8 dummy[8]; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return -ENODEV; priv = kzalloc(sizeof *priv, GFP_KERNEL); priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; platform_set_drvdata(pdev, priv); priv->size = resource_size(res); if (!request_mem_region(res->start, priv->size, pdev->name)) { ret = -EBUSY; goto out; } priv->baseaddr = res->start; priv->ioaddr = ioremap(priv->baseaddr, priv->size); if (!priv->ioaddr) { ret = -ENOMEM; goto out; } priv->rtc = rtc_device_register("ds1216", &pdev->dev, priv->ioaddr = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->ioaddr)) return PTR_ERR(priv->ioaddr); priv->rtc = devm_rtc_device_register(&pdev->dev, "ds1216", &ds1216_rtc_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); /* dummy read to get clock into a known state */ ds1216_read(priv->ioaddr, dummy); return 0; out: if (priv->ioaddr) iounmap(priv->ioaddr); if (priv->baseaddr) release_mem_region(priv->baseaddr, priv->size); kfree(priv); return ret; } static int __exit ds1216_rtc_remove(struct platform_device *pdev) { struct ds1216_priv *priv = platform_get_drvdata(pdev); rtc_device_unregister(priv->rtc); iounmap(priv->ioaddr); release_mem_region(priv->baseaddr, priv->size); kfree(priv); return 0; } Loading Loading
drivers/rtc/rtc-ds1216.c +9 −35 Original line number Diff line number Diff line Loading @@ -30,8 +30,6 @@ struct ds1216_regs { struct ds1216_priv { struct rtc_device *rtc; void __iomem *ioaddr; size_t size; unsigned long baseaddr; }; static const u8 magic[] = { Loading Loading @@ -144,57 +142,33 @@ static int __init ds1216_rtc_probe(struct platform_device *pdev) { struct resource *res; struct ds1216_priv *priv; int ret = 0; u8 dummy[8]; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return -ENODEV; priv = kzalloc(sizeof *priv, GFP_KERNEL); priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) return -ENOMEM; platform_set_drvdata(pdev, priv); priv->size = resource_size(res); if (!request_mem_region(res->start, priv->size, pdev->name)) { ret = -EBUSY; goto out; } priv->baseaddr = res->start; priv->ioaddr = ioremap(priv->baseaddr, priv->size); if (!priv->ioaddr) { ret = -ENOMEM; goto out; } priv->rtc = rtc_device_register("ds1216", &pdev->dev, priv->ioaddr = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(priv->ioaddr)) return PTR_ERR(priv->ioaddr); priv->rtc = devm_rtc_device_register(&pdev->dev, "ds1216", &ds1216_rtc_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); /* dummy read to get clock into a known state */ ds1216_read(priv->ioaddr, dummy); return 0; out: if (priv->ioaddr) iounmap(priv->ioaddr); if (priv->baseaddr) release_mem_region(priv->baseaddr, priv->size); kfree(priv); return ret; } static int __exit ds1216_rtc_remove(struct platform_device *pdev) { struct ds1216_priv *priv = platform_get_drvdata(pdev); rtc_device_unregister(priv->rtc); iounmap(priv->ioaddr); release_mem_region(priv->baseaddr, priv->size); kfree(priv); return 0; } Loading