Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 294965
b: refs/heads/master
c: 6d91a51
h: refs/heads/master
i:
  294963: 5341bfc
v: v3
  • Loading branch information
Sylwester Nawrocki authored and Mauro Carvalho Chehab committed Mar 8, 2012
1 parent f6c83bd commit 51eb717
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 52 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: 2def9946c3dfb7fd8ff47af7499bb3f6b5a5743f
refs/heads/master: 6d91a51ae1cb597100e17a75370bb2ad9c7da6d6
56 changes: 12 additions & 44 deletions trunk/drivers/media/video/s5p-fimc/fimc-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1678,8 +1678,6 @@ static int fimc_probe(struct platform_device *pdev)
struct s5p_platform_fimc *pdata;
int ret = 0;

dev_dbg(&pdev->dev, "%s():\n", __func__);

drv_data = (struct samsung_fimc_driverdata *)
platform_get_device_id(pdev)->driver_data;

Expand All @@ -1689,7 +1687,7 @@ static int fimc_probe(struct platform_device *pdev)
return -EINVAL;
}

fimc = kzalloc(sizeof(struct fimc_dev), GFP_KERNEL);
fimc = devm_kzalloc(&pdev->dev, sizeof(*fimc), GFP_KERNEL);
if (!fimc)
return -ENOMEM;

Expand All @@ -1700,51 +1698,35 @@ static int fimc_probe(struct platform_device *pdev)
pdata = pdev->dev.platform_data;
fimc->pdata = pdata;


init_waitqueue_head(&fimc->irq_queue);
spin_lock_init(&fimc->slock);
mutex_init(&fimc->lock);

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
dev_err(&pdev->dev, "failed to find the registers\n");
ret = -ENOENT;
goto err_info;
}

fimc->regs_res = request_mem_region(res->start, resource_size(res),
dev_name(&pdev->dev));
if (!fimc->regs_res) {
dev_err(&pdev->dev, "failed to obtain register region\n");
ret = -ENOENT;
goto err_info;
}

fimc->regs = ioremap(res->start, resource_size(res));
if (!fimc->regs) {
dev_err(&pdev->dev, "failed to map registers\n");
ret = -ENXIO;
goto err_req_region;
fimc->regs = devm_request_and_ioremap(&pdev->dev, res);
if (fimc->regs == NULL) {
dev_err(&pdev->dev, "Failed to obtain io memory\n");
return -ENOENT;
}

res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!res) {
dev_err(&pdev->dev, "failed to get IRQ resource\n");
ret = -ENXIO;
goto err_regs_unmap;
if (res == NULL) {
dev_err(&pdev->dev, "Failed to get IRQ resource\n");
return -ENXIO;
}
fimc->irq = res->start;

fimc->num_clocks = MAX_FIMC_CLOCKS;
ret = fimc_clk_get(fimc);
if (ret)
goto err_regs_unmap;
return ret;
clk_set_rate(fimc->clock[CLK_BUS], drv_data->lclk_frequency);
clk_enable(fimc->clock[CLK_BUS]);

platform_set_drvdata(pdev, fimc);

ret = request_irq(fimc->irq, fimc_irq_handler, 0, pdev->name, fimc);
ret = devm_request_irq(&pdev->dev, fimc->irq, fimc_irq_handler,
0, pdev->name, fimc);
if (ret) {
dev_err(&pdev->dev, "failed to install irq (%d)\n", ret);
goto err_clk;
Expand All @@ -1753,7 +1735,7 @@ static int fimc_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev);
ret = pm_runtime_get_sync(&pdev->dev);
if (ret < 0)
goto err_irq;
goto err_clk;
/* Initialize contiguous memory allocator */
fimc->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
if (IS_ERR(fimc->alloc_ctx)) {
Expand All @@ -1768,17 +1750,8 @@ static int fimc_probe(struct platform_device *pdev)

err_pm:
pm_runtime_put(&pdev->dev);
err_irq:
free_irq(fimc->irq, fimc);
err_clk:
fimc_clk_put(fimc);
err_regs_unmap:
iounmap(fimc->regs);
err_req_region:
release_resource(fimc->regs_res);
kfree(fimc->regs_res);
err_info:
kfree(fimc);
return ret;
}

Expand Down Expand Up @@ -1865,11 +1838,6 @@ static int __devexit fimc_remove(struct platform_device *pdev)

clk_disable(fimc->clock[CLK_BUS]);
fimc_clk_put(fimc);
free_irq(fimc->irq, fimc);
iounmap(fimc->regs);
release_resource(fimc->regs_res);
kfree(fimc->regs_res);
kfree(fimc);

dev_info(&pdev->dev, "driver unloaded\n");
return 0;
Expand Down
2 changes: 0 additions & 2 deletions trunk/drivers/media/video/s5p-fimc/fimc-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,6 @@ struct fimc_ctx;
* @num_clocks: the number of clocks managed by this device instance
* @clock: clocks required for FIMC operation
* @regs: the mapped hardware registers
* @regs_res: the resource claimed for IO registers
* @irq: FIMC interrupt number
* @irq_queue: interrupt handler waitqueue
* @v4l2_dev: root v4l2_device
Expand All @@ -454,7 +453,6 @@ struct fimc_dev {
u16 num_clocks;
struct clk *clock[MAX_FIMC_CLOCKS];
void __iomem *regs;
struct resource *regs_res;
int irq;
wait_queue_head_t irq_queue;
struct v4l2_device *v4l2_dev;
Expand Down
7 changes: 2 additions & 5 deletions trunk/drivers/media/video/s5p-fimc/fimc-mdevice.c
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,7 @@ static int __devinit fimc_md_probe(struct platform_device *pdev)
struct fimc_md *fmd;
int ret;

fmd = kzalloc(sizeof(struct fimc_md), GFP_KERNEL);
fmd = devm_kzalloc(&pdev->dev, sizeof(*fmd), GFP_KERNEL);
if (!fmd)
return -ENOMEM;

Expand All @@ -774,7 +774,7 @@ static int __devinit fimc_md_probe(struct platform_device *pdev)
ret = v4l2_device_register(&pdev->dev, &fmd->v4l2_dev);
if (ret < 0) {
v4l2_err(v4l2_dev, "Failed to register v4l2_device: %d\n", ret);
goto err1;
return ret;
}
ret = media_device_register(&fmd->media_dev);
if (ret < 0) {
Expand Down Expand Up @@ -816,8 +816,6 @@ static int __devinit fimc_md_probe(struct platform_device *pdev)
fimc_md_unregister_entities(fmd);
err2:
v4l2_device_unregister(&fmd->v4l2_dev);
err1:
kfree(fmd);
return ret;
}

Expand All @@ -831,7 +829,6 @@ static int __devexit fimc_md_remove(struct platform_device *pdev)
fimc_md_unregister_entities(fmd);
media_device_unregister(&fmd->media_dev);
fimc_md_put_clocks(fmd);
kfree(fmd);
return 0;
}

Expand Down

0 comments on commit 51eb717

Please sign in to comment.