Skip to content

Commit

Permalink
video: s3c-fb: Convert to devm style allocation
Browse files Browse the repository at this point in the history
Saves some code, especially useful as the code saved is mostly in the
infrequently tested error paths.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
  • Loading branch information
Mark Brown authored and Florian Tobias Schandinat committed Jan 28, 2012
1 parent f820917 commit 857a8df
Showing 1 changed file with 5 additions and 27 deletions.
32 changes: 5 additions & 27 deletions drivers/video/s3c-fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,6 @@ struct s3c_fb_vsync {
* struct s3c_fb - overall hardware state of the hardware
* @slock: The spinlock protection for this data sturcture.
* @dev: The device that we bound to, for printing, etc.
* @regs_res: The resource we claimed for the IO registers.
* @bus_clk: The clk (hclk) feeding our interface and possibly pixclk.
* @lcd_clk: The clk (sclk) feeding pixclk.
* @regs: The mapped hardware registers.
Expand All @@ -202,7 +201,6 @@ struct s3c_fb_vsync {
struct s3c_fb {
spinlock_t slock;
struct device *dev;
struct resource *regs_res;
struct clk *bus_clk;
struct clk *lcd_clk;
void __iomem *regs;
Expand Down Expand Up @@ -1361,7 +1359,7 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
return -EINVAL;
}

sfb = kzalloc(sizeof(struct s3c_fb), GFP_KERNEL);
sfb = devm_kzalloc(dev, sizeof(struct s3c_fb), GFP_KERNEL);
if (!sfb) {
dev_err(dev, "no memory for framebuffers\n");
return -ENOMEM;
Expand Down Expand Up @@ -1404,33 +1402,25 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
goto err_lcd_clk;
}

sfb->regs_res = request_mem_region(res->start, resource_size(res),
dev_name(dev));
if (!sfb->regs_res) {
dev_err(dev, "failed to claim register region\n");
ret = -ENOENT;
goto err_lcd_clk;
}

sfb->regs = ioremap(res->start, resource_size(res));
sfb->regs = devm_request_and_ioremap(dev, res);
if (!sfb->regs) {
dev_err(dev, "failed to map registers\n");
ret = -ENXIO;
goto err_req_region;
goto err_lcd_clk;
}

res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!res) {
dev_err(dev, "failed to acquire irq resource\n");
ret = -ENOENT;
goto err_ioremap;
goto err_lcd_clk;
}
sfb->irq_no = res->start;
ret = request_irq(sfb->irq_no, s3c_fb_irq,
0, "s3c_fb", sfb);
if (ret) {
dev_err(dev, "irq request failed\n");
goto err_ioremap;
goto err_lcd_clk;
}

dev_dbg(dev, "got resources (regs %p), probing windows\n", sfb->regs);
Expand Down Expand Up @@ -1486,12 +1476,6 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
pm_runtime_put_sync(sfb->dev);
free_irq(sfb->irq_no, sfb);

err_ioremap:
iounmap(sfb->regs);

err_req_region:
release_mem_region(sfb->regs_res->start, resource_size(sfb->regs_res));

err_lcd_clk:
pm_runtime_disable(sfb->dev);

Expand All @@ -1505,7 +1489,6 @@ static int __devinit s3c_fb_probe(struct platform_device *pdev)
clk_put(sfb->bus_clk);

err_sfb:
kfree(sfb);
return ret;
}

Expand All @@ -1529,8 +1512,6 @@ static int __devexit s3c_fb_remove(struct platform_device *pdev)

free_irq(sfb->irq_no, sfb);

iounmap(sfb->regs);

if (!sfb->variant.has_clksel) {
clk_disable(sfb->lcd_clk);
clk_put(sfb->lcd_clk);
Expand All @@ -1539,12 +1520,9 @@ static int __devexit s3c_fb_remove(struct platform_device *pdev)
clk_disable(sfb->bus_clk);
clk_put(sfb->bus_clk);

release_mem_region(sfb->regs_res->start, resource_size(sfb->regs_res));

pm_runtime_put_sync(sfb->dev);
pm_runtime_disable(sfb->dev);

kfree(sfb);
return 0;
}

Expand Down

0 comments on commit 857a8df

Please sign in to comment.