Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271774
b: refs/heads/master
c: 96a8574
h: refs/heads/master
v: v3
  • Loading branch information
Sylwester Nawrocki authored and Mauro Carvalho Chehab committed Sep 6, 2011
1 parent 6a7e67f commit 457b069
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 54 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: 574e171788ce84366e77dea5ba3db2a3a9912d34
refs/heads/master: 96a857421a9d212696364d210bd85a2162e73966
14 changes: 3 additions & 11 deletions trunk/drivers/media/video/s5p-fimc/fimc-capture.c
Original file line number Diff line number Diff line change
Expand Up @@ -905,19 +905,8 @@ int fimc_register_capture_device(struct fimc_dev *fimc)
if (ret)
goto err_ent;

ret = video_register_device(vfd, VFL_TYPE_GRABBER, -1);
if (ret) {
v4l2_err(v4l2_dev, "Failed to register video device\n");
goto err_vd_reg;
}

v4l2_info(v4l2_dev,
"FIMC capture driver registered as /dev/video%d\n",
vfd->num);
return 0;

err_vd_reg:
media_entity_cleanup(&vfd->entity);
err_ent:
video_device_release(vfd);
err_v4l2_reg:
Expand All @@ -934,7 +923,10 @@ void fimc_unregister_capture_device(struct fimc_dev *fimc)

if (vfd) {
media_entity_cleanup(&vfd->entity);
/* Can also be called if video device was
not registered */
video_unregister_device(vfd);
}
kfree(fimc->vid_cap.ctx);
fimc->vid_cap.ctx = NULL;
}
55 changes: 13 additions & 42 deletions trunk/drivers/media/video/s5p-fimc/fimc-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1494,7 +1494,7 @@ static struct v4l2_m2m_ops m2m_ops = {
.job_abort = fimc_job_abort,
};

static int fimc_register_m2m_device(struct fimc_dev *fimc)
int fimc_register_m2m_device(struct fimc_dev *fimc)
{
struct video_device *vfd;
struct platform_device *pdev;
Expand Down Expand Up @@ -1541,22 +1541,9 @@ static int fimc_register_m2m_device(struct fimc_dev *fimc)
}

ret = media_entity_init(&vfd->entity, 0, NULL, 0);
if (ret)
goto err_m2m_r3;

ret = video_register_device(vfd, VFL_TYPE_GRABBER, -1);
if (ret) {
v4l2_err(v4l2_dev,
"%s(): failed to register video device\n", __func__);
goto err_m2m_r4;
}
v4l2_info(v4l2_dev,
"FIMC m2m driver registered as /dev/video%d\n", vfd->num);
if (!ret)
return 0;

return 0;
err_m2m_r4:
media_entity_cleanup(&vfd->entity);
err_m2m_r3:
v4l2_m2m_release(fimc->m2m.m2m_dev);
err_m2m_r2:
video_device_release(fimc->m2m.vfd);
Expand All @@ -1566,15 +1553,19 @@ static int fimc_register_m2m_device(struct fimc_dev *fimc)
return ret;
}

static void fimc_unregister_m2m_device(struct fimc_dev *fimc)
void fimc_unregister_m2m_device(struct fimc_dev *fimc)
{
if (fimc == NULL)
if (!fimc)
return;

v4l2_m2m_release(fimc->m2m.m2m_dev);
if (fimc->m2m.m2m_dev)
v4l2_m2m_release(fimc->m2m.m2m_dev);
v4l2_device_unregister(&fimc->m2m.v4l2_dev);
media_entity_cleanup(&fimc->m2m.vfd->entity);
video_unregister_device(fimc->m2m.vfd);
if (fimc->m2m.vfd) {
media_entity_cleanup(&fimc->m2m.vfd->entity);
/* Can also be called if video device wasn't registered */
video_unregister_device(fimc->m2m.vfd);
}
}

static void fimc_clk_put(struct fimc_dev *fimc)
Expand Down Expand Up @@ -1739,27 +1730,11 @@ static int fimc_probe(struct platform_device *pdev)
goto err_pm;
}

ret = fimc_register_m2m_device(fimc);
if (ret)
goto err_alloc;

/* At least one camera sensor is required to register capture node */
if (cap_input_index >= 0) {
ret = fimc_register_capture_device(fimc);
if (ret)
goto err_m2m;
}

dev_dbg(&pdev->dev, "%s(): fimc-%d registered successfully\n",
__func__, fimc->id);
dev_dbg(&pdev->dev, "FIMC.%d registered successfully\n", fimc->id);

pm_runtime_put(&pdev->dev);
return 0;

err_m2m:
fimc_unregister_m2m_device(fimc);
err_alloc:
vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx);
err_pm:
pm_runtime_put(&pdev->dev);
err_irq:
Expand All @@ -1773,7 +1748,6 @@ static int fimc_probe(struct platform_device *pdev)
kfree(fimc->regs_res);
err_info:
kfree(fimc);

return ret;
}

Expand Down Expand Up @@ -1862,9 +1836,6 @@ static int __devexit fimc_remove(struct platform_device *pdev)
fimc_runtime_suspend(&pdev->dev);
pm_runtime_set_suspended(&pdev->dev);

fimc_unregister_m2m_device(fimc);
fimc_unregister_capture_device(fimc);

vb2_dma_contig_cleanup_ctx(fimc->alloc_ctx);

clk_disable(fimc->clock[CLK_BUS]);
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/video/s5p-fimc/fimc-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,7 @@ int fimc_set_scaler_info(struct fimc_ctx *ctx);
int fimc_prepare_config(struct fimc_ctx *ctx, u32 flags);
int fimc_prepare_addr(struct fimc_ctx *ctx, struct vb2_buffer *vb,
struct fimc_frame *frame, struct fimc_addr *paddr);
int fimc_register_m2m_device(struct fimc_dev *fimc);

/* -----------------------------------------------------*/
/* fimc-capture.c */
Expand Down

0 comments on commit 457b069

Please sign in to comment.