Commit 6ef83359 authored by Lad, Prabhakar's avatar Lad, Prabhakar Committed by Mauro Carvalho Chehab

[media] media: davinci: vpss: convert to devm* api

Replace existing resource handling in the driver with managed
device resource, this ensures more consistent error values and
simplifies error paths.
Signed-off-by: default avatarLad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 6b55b451
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/err.h>
#include <media/davinci/vpss.h> #include <media/davinci/vpss.h>
...@@ -404,9 +405,8 @@ EXPORT_SYMBOL(dm365_vpss_set_pg_frame_size); ...@@ -404,9 +405,8 @@ EXPORT_SYMBOL(dm365_vpss_set_pg_frame_size);
static int vpss_probe(struct platform_device *pdev) static int vpss_probe(struct platform_device *pdev)
{ {
struct resource *r1, *r2; struct resource *res;
char *platform_name; char *platform_name;
int status;
if (!pdev->dev.platform_data) { if (!pdev->dev.platform_data) {
dev_err(&pdev->dev, "no platform data\n"); dev_err(&pdev->dev, "no platform data\n");
...@@ -427,38 +427,19 @@ static int vpss_probe(struct platform_device *pdev) ...@@ -427,38 +427,19 @@ static int vpss_probe(struct platform_device *pdev)
} }
dev_info(&pdev->dev, "%s vpss probed\n", platform_name); dev_info(&pdev->dev, "%s vpss probed\n", platform_name);
r1 = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!r1)
return -ENOENT;
r1 = request_mem_region(r1->start, resource_size(r1), r1->name); oper_cfg.vpss_regs_base0 = devm_ioremap_resource(&pdev->dev, res);
if (!r1) if (IS_ERR(oper_cfg.vpss_regs_base0))
return -EBUSY; return PTR_ERR(oper_cfg.vpss_regs_base0);
oper_cfg.vpss_regs_base0 = ioremap(r1->start, resource_size(r1));
if (!oper_cfg.vpss_regs_base0) {
status = -EBUSY;
goto fail1;
}
if (oper_cfg.platform == DM355 || oper_cfg.platform == DM365) { if (oper_cfg.platform == DM355 || oper_cfg.platform == DM365) {
r2 = platform_get_resource(pdev, IORESOURCE_MEM, 1); res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
if (!r2) {
status = -ENOENT;
goto fail2;
}
r2 = request_mem_region(r2->start, resource_size(r2), r2->name);
if (!r2) {
status = -EBUSY;
goto fail2;
}
oper_cfg.vpss_regs_base1 = ioremap(r2->start, oper_cfg.vpss_regs_base1 = devm_ioremap_resource(&pdev->dev,
resource_size(r2)); res);
if (!oper_cfg.vpss_regs_base1) { if (IS_ERR(oper_cfg.vpss_regs_base1))
status = -EBUSY; return PTR_ERR(oper_cfg.vpss_regs_base1);
goto fail3;
}
} }
if (oper_cfg.platform == DM355) { if (oper_cfg.platform == DM355) {
...@@ -493,30 +474,13 @@ static int vpss_probe(struct platform_device *pdev) ...@@ -493,30 +474,13 @@ static int vpss_probe(struct platform_device *pdev)
spin_lock_init(&oper_cfg.vpss_lock); spin_lock_init(&oper_cfg.vpss_lock);
dev_info(&pdev->dev, "%s vpss probe success\n", platform_name); dev_info(&pdev->dev, "%s vpss probe success\n", platform_name);
return 0;
fail3: return 0;
release_mem_region(r2->start, resource_size(r2));
fail2:
iounmap(oper_cfg.vpss_regs_base0);
fail1:
release_mem_region(r1->start, resource_size(r1));
return status;
} }
static int vpss_remove(struct platform_device *pdev) static int vpss_remove(struct platform_device *pdev)
{ {
struct resource *res;
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
iounmap(oper_cfg.vpss_regs_base0);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
release_mem_region(res->start, resource_size(res));
if (oper_cfg.platform == DM355 || oper_cfg.platform == DM365) {
iounmap(oper_cfg.vpss_regs_base1);
res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
release_mem_region(res->start, resource_size(res));
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment