diff options
author | Luc Verhaegen <libv@skynet.be> | 2014-11-14 07:26:49 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2014-11-14 08:28:39 -0500 |
commit | bf2fda157a9ab50f65da60a365ede3a5b529d025 (patch) | |
tree | 8e8f1df828d61876101d4aeb7605c72ffc38bfef | |
parent | 1270be4a4fb852630280638cbb169b67c485b3e3 (diff) |
simplefb: add goto error path to probe
Use the usual kernel style of goto error_foo to free resources on probe
error. This is a preparation patch for adding clocks support.
While at it also update ioremap_wc error return from ENODEV to ENOMEM.
Signed-off-by: Luc Verhaegen <libv@skynet.be>
Acked-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r-- | drivers/video/fbdev/simplefb.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/video/fbdev/simplefb.c b/drivers/video/fbdev/simplefb.c index ec112c13eb05..cdcf1fe46eae 100644 --- a/drivers/video/fbdev/simplefb.c +++ b/drivers/video/fbdev/simplefb.c | |||
@@ -220,8 +220,8 @@ static int simplefb_probe(struct platform_device *pdev) | |||
220 | 220 | ||
221 | info->apertures = alloc_apertures(1); | 221 | info->apertures = alloc_apertures(1); |
222 | if (!info->apertures) { | 222 | if (!info->apertures) { |
223 | framebuffer_release(info); | 223 | ret = -ENOMEM; |
224 | return -ENOMEM; | 224 | goto error_fb_release; |
225 | } | 225 | } |
226 | info->apertures->ranges[0].base = info->fix.smem_start; | 226 | info->apertures->ranges[0].base = info->fix.smem_start; |
227 | info->apertures->ranges[0].size = info->fix.smem_len; | 227 | info->apertures->ranges[0].size = info->fix.smem_len; |
@@ -231,8 +231,8 @@ static int simplefb_probe(struct platform_device *pdev) | |||
231 | info->screen_base = ioremap_wc(info->fix.smem_start, | 231 | info->screen_base = ioremap_wc(info->fix.smem_start, |
232 | info->fix.smem_len); | 232 | info->fix.smem_len); |
233 | if (!info->screen_base) { | 233 | if (!info->screen_base) { |
234 | framebuffer_release(info); | 234 | ret = -ENOMEM; |
235 | return -ENODEV; | 235 | goto error_fb_release; |
236 | } | 236 | } |
237 | info->pseudo_palette = par->palette; | 237 | info->pseudo_palette = par->palette; |
238 | 238 | ||
@@ -247,14 +247,18 @@ static int simplefb_probe(struct platform_device *pdev) | |||
247 | ret = register_framebuffer(info); | 247 | ret = register_framebuffer(info); |
248 | if (ret < 0) { | 248 | if (ret < 0) { |
249 | dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret); | 249 | dev_err(&pdev->dev, "Unable to register simplefb: %d\n", ret); |
250 | iounmap(info->screen_base); | 250 | goto error_unmap; |
251 | framebuffer_release(info); | ||
252 | return ret; | ||
253 | } | 251 | } |
254 | 252 | ||
255 | dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node); | 253 | dev_info(&pdev->dev, "fb%d: simplefb registered!\n", info->node); |
256 | 254 | ||
257 | return 0; | 255 | return 0; |
256 | |||
257 | error_unmap: | ||
258 | iounmap(info->screen_base); | ||
259 | error_fb_release: | ||
260 | framebuffer_release(info); | ||
261 | return ret; | ||
258 | } | 262 | } |
259 | 263 | ||
260 | static int simplefb_remove(struct platform_device *pdev) | 264 | static int simplefb_remove(struct platform_device *pdev) |