One more clean-up possibility:

On Tue, 13 Sep 2011, Scott Jiang wrote:

> this is a v4l2 bridge driver for Blackfin video capture device,
> support ppi interface
> 
> Signed-off-by: Scott Jiang <scott.jiang.li...@gmail.com>
> ---

[snip]

> diff --git a/drivers/media/video/blackfin/bfin_capture.c 
> b/drivers/media/video/blackfin/bfin_capture.c
> new file mode 100644
> index 0000000..24f89f2
> --- /dev/null
> +++ b/drivers/media/video/blackfin/bfin_capture.c
> @@ -0,0 +1,1099 @@

[snip]

> +static int __devinit bcap_probe(struct platform_device *pdev)
> +{
> +     struct bcap_device *bcap_dev;
> +     struct video_device *vfd;
> +     struct i2c_adapter *i2c_adap;
> +     struct bfin_capture_config *config;
> +     struct vb2_queue *q;
> +     int ret;
> +
> +     config = pdev->dev.platform_data;
> +     if (!config) {
> +             v4l2_err(pdev->dev.driver, "Unable to get board config\n");
> +             return -ENODEV;
> +     }
> +
> +     bcap_dev = kzalloc(sizeof(*bcap_dev), GFP_KERNEL);
> +     if (!bcap_dev) {
> +             v4l2_err(pdev->dev.driver, "Unable to alloc bcap_dev\n");
> +             return -ENOMEM;
> +     }
> +
> +     bcap_dev->cfg = config;
> +
> +     bcap_dev->ppi = create_ppi_instance(config->ppi_info);
> +     if (!bcap_dev->ppi) {
> +             v4l2_err(pdev->dev.driver, "Unable to create ppi\n");
> +             ret = -ENODEV;
> +             goto err_free_dev;
> +     }
> +     bcap_dev->ppi->priv = bcap_dev;
> +
> +     bcap_dev->alloc_ctx = vb2_dma_contig_init_ctx(&pdev->dev);
> +     if (IS_ERR(bcap_dev->alloc_ctx)) {
> +             ret = PTR_ERR(bcap_dev->alloc_ctx);
> +             goto err_free_ppi;
> +     }
> +
> +     vfd = video_device_alloc();
> +     if (!vfd) {
> +             ret = -ENOMEM;
> +             v4l2_err(pdev->dev.driver, "Unable to alloc video device\n");
> +             goto err_cleanup_ctx;
> +     }
> +
> +     /* initialize field of video device */
> +     vfd->release            = video_device_release;
> +     vfd->fops               = &bcap_fops;
> +     vfd->ioctl_ops          = &bcap_ioctl_ops;
> +     vfd->tvnorms            = 0;
> +     vfd->v4l2_dev           = &bcap_dev->v4l2_dev;
> +     set_bit(V4L2_FL_USE_FH_PRIO, &vfd->flags);
> +     strncpy(vfd->name, CAPTURE_DRV_NAME, sizeof(vfd->name));
> +     bcap_dev->video_dev     = vfd;
> +
> +     ret = v4l2_device_register(&pdev->dev, &bcap_dev->v4l2_dev);
> +     if (ret) {
> +             v4l2_err(pdev->dev.driver,
> +                             "Unable to register v4l2 device\n");
> +             goto err_release_vdev;
> +     }
> +     v4l2_info(&bcap_dev->v4l2_dev, "v4l2 device registered\n");
> +
> +     spin_lock_init(&bcap_dev->lock);
> +     /* initialize queue */
> +     q = &bcap_dev->buffer_queue;
> +     memset(q, 0, sizeof(*q));

This is superfluous: bcap_dev is allocated with kzalloc().

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to