| From 5528ed0bbde900200ce5497878af6a6d308b1098 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Tue, 30 Jul 2013 16:24:37 +0200 |
| Subject: clocksource: em_sti: Convert to devm_* managed helpers |
| |
| Replace kzalloc, clk_get, ioremap and request_irq by their managed |
| counterparts to simplify error paths. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org> |
| (cherry picked from commit 1745e696e174b54e37c057882970e50af1e80a7f) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/clocksource/em_sti.c | 49 +++++++++++++------------------------------- |
| 1 file changed, 14 insertions(+), 35 deletions(-) |
| |
| diff --git a/drivers/clocksource/em_sti.c b/drivers/clocksource/em_sti.c |
| index 4329a29a..b9c81b7c 100644 |
| --- a/drivers/clocksource/em_sti.c |
| +++ b/drivers/clocksource/em_sti.c |
| @@ -315,68 +315,47 @@ static int em_sti_probe(struct platform_device *pdev) |
| { |
| struct em_sti_priv *p; |
| struct resource *res; |
| - int irq, ret; |
| + int irq; |
| |
| - p = kzalloc(sizeof(*p), GFP_KERNEL); |
| + p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL); |
| if (p == NULL) { |
| dev_err(&pdev->dev, "failed to allocate driver data\n"); |
| - ret = -ENOMEM; |
| - goto err0; |
| + return -ENOMEM; |
| } |
| |
| p->pdev = pdev; |
| platform_set_drvdata(pdev, p); |
| |
| - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| - if (!res) { |
| - dev_err(&pdev->dev, "failed to get I/O memory\n"); |
| - ret = -EINVAL; |
| - goto err0; |
| - } |
| - |
| irq = platform_get_irq(pdev, 0); |
| if (irq < 0) { |
| dev_err(&pdev->dev, "failed to get irq\n"); |
| - ret = -EINVAL; |
| - goto err0; |
| + return -EINVAL; |
| } |
| |
| /* map memory, let base point to the STI instance */ |
| - p->base = ioremap_nocache(res->start, resource_size(res)); |
| - if (p->base == NULL) { |
| - dev_err(&pdev->dev, "failed to remap I/O memory\n"); |
| - ret = -ENXIO; |
| - goto err0; |
| - } |
| + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| + p->base = devm_ioremap_resource(&pdev->dev, res); |
| + if (IS_ERR(p->base)) |
| + return PTR_ERR(p->base); |
| |
| /* get hold of clock */ |
| - p->clk = clk_get(&pdev->dev, "sclk"); |
| + p->clk = devm_clk_get(&pdev->dev, "sclk"); |
| if (IS_ERR(p->clk)) { |
| dev_err(&pdev->dev, "cannot get clock\n"); |
| - ret = PTR_ERR(p->clk); |
| - goto err1; |
| + return PTR_ERR(p->clk); |
| } |
| |
| - if (request_irq(irq, em_sti_interrupt, |
| - IRQF_TIMER | IRQF_IRQPOLL | IRQF_NOBALANCING, |
| - dev_name(&pdev->dev), p)) { |
| + if (devm_request_irq(&pdev->dev, irq, em_sti_interrupt, |
| + IRQF_TIMER | IRQF_IRQPOLL | IRQF_NOBALANCING, |
| + dev_name(&pdev->dev), p)) { |
| dev_err(&pdev->dev, "failed to request low IRQ\n"); |
| - ret = -ENOENT; |
| - goto err2; |
| + return -ENOENT; |
| } |
| |
| raw_spin_lock_init(&p->lock); |
| em_sti_register_clockevent(p); |
| em_sti_register_clocksource(p); |
| return 0; |
| - |
| -err2: |
| - clk_put(p->clk); |
| -err1: |
| - iounmap(p->base); |
| -err0: |
| - kfree(p); |
| - return ret; |
| } |
| |
| static int em_sti_remove(struct platform_device *pdev) |
| -- |
| 1.8.4.3.gca3854a |
| |