[media] ov2640: add MC support
The MC support is needed by the em28xx driver. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
46796cfcd3
commit
ff0e9c1d6d
@ -282,6 +282,9 @@ struct ov2640_win_size {
|
||||
|
||||
struct ov2640_priv {
|
||||
struct v4l2_subdev subdev;
|
||||
#if defined(CONFIG_MEDIA_CONTROLLER)
|
||||
struct media_pad pad;
|
||||
#endif
|
||||
struct v4l2_ctrl_handler hdl;
|
||||
u32 cfmt_code;
|
||||
struct clk *clk;
|
||||
@ -1063,6 +1066,7 @@ static int ov2640_probe(struct i2c_client *client,
|
||||
goto err_clk;
|
||||
|
||||
v4l2_i2c_subdev_init(&priv->subdev, client, &ov2640_subdev_ops);
|
||||
priv->subdev.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
v4l2_ctrl_handler_init(&priv->hdl, 2);
|
||||
v4l2_ctrl_new_std(&priv->hdl, &ov2640_ctrl_ops,
|
||||
V4L2_CID_VFLIP, 0, 1, 1, 0);
|
||||
@ -1073,19 +1077,30 @@ static int ov2640_probe(struct i2c_client *client,
|
||||
ret = priv->hdl.error;
|
||||
goto err_hdl;
|
||||
}
|
||||
#if defined(CONFIG_MEDIA_CONTROLLER)
|
||||
priv->pad.flags = MEDIA_PAD_FL_SOURCE;
|
||||
priv->subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR;
|
||||
ret = media_entity_pads_init(&priv->subdev.entity, 1, &priv->pad);
|
||||
if (ret < 0)
|
||||
goto err_hdl;
|
||||
#endif
|
||||
|
||||
ret = ov2640_video_probe(client);
|
||||
if (ret < 0)
|
||||
goto err_hdl;
|
||||
goto err_videoprobe;
|
||||
|
||||
ret = v4l2_async_register_subdev(&priv->subdev);
|
||||
if (ret < 0)
|
||||
goto err_hdl;
|
||||
goto err_videoprobe;
|
||||
|
||||
dev_info(&adapter->dev, "OV2640 Probed\n");
|
||||
|
||||
return 0;
|
||||
|
||||
err_videoprobe:
|
||||
#if defined(CONFIG_MEDIA_CONTROLLER)
|
||||
media_entity_cleanup(&priv->subdev.entity);
|
||||
#endif
|
||||
err_hdl:
|
||||
v4l2_ctrl_handler_free(&priv->hdl);
|
||||
err_clk:
|
||||
@ -1099,6 +1114,9 @@ static int ov2640_remove(struct i2c_client *client)
|
||||
|
||||
v4l2_async_unregister_subdev(&priv->subdev);
|
||||
v4l2_ctrl_handler_free(&priv->hdl);
|
||||
#if defined(CONFIG_MEDIA_CONTROLLER)
|
||||
media_entity_cleanup(&priv->subdev.entity);
|
||||
#endif
|
||||
v4l2_device_unregister_subdev(&priv->subdev);
|
||||
clk_disable_unprepare(priv->clk);
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user