Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 98612
b: refs/heads/master
c: ee98476
h: refs/heads/master
v: v3
  • Loading branch information
Jaya Kumar authored and Russell King committed Jun 22, 2008
1 parent 5117b3a commit fc329c4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f1edfc420ac7beb90b27bf822036cbbfa32483f1
refs/heads/master: ee98476bbc565f8fe42e198602e647288b6a258d
34 changes: 24 additions & 10 deletions trunk/drivers/video/pxafb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1685,14 +1685,14 @@ static int __init pxafb_probe(struct platform_device *dev)
if (r == NULL) {
dev_err(&dev->dev, "no I/O memory resource defined\n");
ret = -ENODEV;
goto failed;
goto failed_fbi;
}

r = request_mem_region(r->start, r->end - r->start + 1, dev->name);
if (r == NULL) {
dev_err(&dev->dev, "failed to request I/O memory\n");
ret = -EBUSY;
goto failed;
goto failed_fbi;
}

fbi->mmio_base = ioremap(r->start, r->end - r->start + 1);
Expand Down Expand Up @@ -1735,16 +1735,25 @@ static int __init pxafb_probe(struct platform_device *dev)
* This makes sure that our colour bitfield
* descriptors are correctly initialised.
*/
pxafb_check_var(&fbi->fb.var, &fbi->fb);
pxafb_set_par(&fbi->fb);
ret = pxafb_check_var(&fbi->fb.var, &fbi->fb);
if (ret) {
dev_err(&dev->dev, "failed to get suitable mode\n");
goto failed_free_irq;
}

ret = pxafb_set_par(&fbi->fb);
if (ret) {
dev_err(&dev->dev, "Failed to set parameters\n");
goto failed_free_irq;
}

platform_set_drvdata(dev, fbi);

ret = register_framebuffer(&fbi->fb);
if (ret < 0) {
dev_err(&dev->dev,
"Failed to register framebuffer device: %d\n", ret);
goto failed_free_irq;
goto failed_free_cmap;
}

#ifdef CONFIG_CPU_FREQ
Expand All @@ -1763,18 +1772,23 @@ static int __init pxafb_probe(struct platform_device *dev)

return 0;

failed_free_cmap:
if (fbi->fb.cmap.len)
fb_dealloc_cmap(&fbi->fb.cmap);
failed_free_irq:
free_irq(irq, fbi);
failed_free_res:
release_mem_region(r->start, r->end - r->start + 1);
failed_free_io:
iounmap(fbi->mmio_base);
failed_free_mem:
dma_free_writecombine(&dev->dev, fbi->map_size,
fbi->map_cpu, fbi->map_dma);
failed:
failed_free_io:
iounmap(fbi->mmio_base);
failed_free_res:
release_mem_region(r->start, r->end - r->start + 1);
failed_fbi:
clk_put(fbi->clk);
platform_set_drvdata(dev, NULL);
kfree(fbi);
failed:
return ret;
}

Expand Down

0 comments on commit fc329c4

Please sign in to comment.