media: stm32-dcmi: improve sensor subdev naming
Rename "subdev" entity struct field to "source" to prepare for several subdev support. Move asd field on top of entity struct. Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
6b338c720c
commit
510b318825
|
@ -100,10 +100,10 @@ enum state {
|
||||||
#define OVERRUN_ERROR_THRESHOLD 3
|
#define OVERRUN_ERROR_THRESHOLD 3
|
||||||
|
|
||||||
struct dcmi_graph_entity {
|
struct dcmi_graph_entity {
|
||||||
struct device_node *node;
|
|
||||||
|
|
||||||
struct v4l2_async_subdev asd;
|
struct v4l2_async_subdev asd;
|
||||||
struct v4l2_subdev *subdev;
|
|
||||||
|
struct device_node *remote_node;
|
||||||
|
struct v4l2_subdev *source;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dcmi_format {
|
struct dcmi_format {
|
||||||
|
@ -595,7 +595,7 @@ static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable stream on the sub device */
|
/* Enable stream on the sub device */
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, video, s_stream, 1);
|
ret = v4l2_subdev_call(dcmi->entity.source, video, s_stream, 1);
|
||||||
if (ret && ret != -ENOIOCTLCMD) {
|
if (ret && ret != -ENOIOCTLCMD) {
|
||||||
dev_err(dcmi->dev, "%s: Failed to start streaming, subdev streamon error",
|
dev_err(dcmi->dev, "%s: Failed to start streaming, subdev streamon error",
|
||||||
__func__);
|
__func__);
|
||||||
|
@ -685,7 +685,7 @@ static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_subdev_streamoff:
|
err_subdev_streamoff:
|
||||||
v4l2_subdev_call(dcmi->entity.subdev, video, s_stream, 0);
|
v4l2_subdev_call(dcmi->entity.source, video, s_stream, 0);
|
||||||
|
|
||||||
err_pm_put:
|
err_pm_put:
|
||||||
pm_runtime_put(dcmi->dev);
|
pm_runtime_put(dcmi->dev);
|
||||||
|
@ -713,7 +713,7 @@ static void dcmi_stop_streaming(struct vb2_queue *vq)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Disable stream on the sub device */
|
/* Disable stream on the sub device */
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, video, s_stream, 0);
|
ret = v4l2_subdev_call(dcmi->entity.source, video, s_stream, 0);
|
||||||
if (ret && ret != -ENOIOCTLCMD)
|
if (ret && ret != -ENOIOCTLCMD)
|
||||||
dev_err(dcmi->dev, "%s: Failed to stop streaming, subdev streamoff error (%d)\n",
|
dev_err(dcmi->dev, "%s: Failed to stop streaming, subdev streamoff error (%d)\n",
|
||||||
__func__, ret);
|
__func__, ret);
|
||||||
|
@ -857,7 +857,7 @@ static int dcmi_try_fmt(struct stm32_dcmi *dcmi, struct v4l2_format *f,
|
||||||
}
|
}
|
||||||
|
|
||||||
v4l2_fill_mbus_format(&format.format, pix, sd_fmt->mbus_code);
|
v4l2_fill_mbus_format(&format.format, pix, sd_fmt->mbus_code);
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad, set_fmt,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad, set_fmt,
|
||||||
&pad_cfg, &format);
|
&pad_cfg, &format);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -934,7 +934,7 @@ static int dcmi_set_fmt(struct stm32_dcmi *dcmi, struct v4l2_format *f)
|
||||||
mf->width = sd_framesize.width;
|
mf->width = sd_framesize.width;
|
||||||
mf->height = sd_framesize.height;
|
mf->height = sd_framesize.height;
|
||||||
|
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad,
|
||||||
set_fmt, NULL, &format);
|
set_fmt, NULL, &format);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -991,7 +991,7 @@ static int dcmi_get_sensor_format(struct stm32_dcmi *dcmi,
|
||||||
};
|
};
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad, get_fmt, NULL, &fmt);
|
ret = v4l2_subdev_call(dcmi->entity.source, pad, get_fmt, NULL, &fmt);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -1020,7 +1020,7 @@ static int dcmi_set_sensor_format(struct stm32_dcmi *dcmi,
|
||||||
}
|
}
|
||||||
|
|
||||||
v4l2_fill_mbus_format(&format.format, pix, sd_fmt->mbus_code);
|
v4l2_fill_mbus_format(&format.format, pix, sd_fmt->mbus_code);
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad, set_fmt,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad, set_fmt,
|
||||||
&pad_cfg, &format);
|
&pad_cfg, &format);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1043,7 +1043,7 @@ static int dcmi_get_sensor_bounds(struct stm32_dcmi *dcmi,
|
||||||
/*
|
/*
|
||||||
* Get sensor bounds first
|
* Get sensor bounds first
|
||||||
*/
|
*/
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad, get_selection,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad, get_selection,
|
||||||
NULL, &bounds);
|
NULL, &bounds);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
*r = bounds.r;
|
*r = bounds.r;
|
||||||
|
@ -1224,7 +1224,7 @@ static int dcmi_enum_framesizes(struct file *file, void *fh,
|
||||||
|
|
||||||
fse.code = sd_fmt->mbus_code;
|
fse.code = sd_fmt->mbus_code;
|
||||||
|
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad, enum_frame_size,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad, enum_frame_size,
|
||||||
NULL, &fse);
|
NULL, &fse);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1241,7 +1241,7 @@ static int dcmi_g_parm(struct file *file, void *priv,
|
||||||
{
|
{
|
||||||
struct stm32_dcmi *dcmi = video_drvdata(file);
|
struct stm32_dcmi *dcmi = video_drvdata(file);
|
||||||
|
|
||||||
return v4l2_g_parm_cap(video_devdata(file), dcmi->entity.subdev, p);
|
return v4l2_g_parm_cap(video_devdata(file), dcmi->entity.source, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dcmi_s_parm(struct file *file, void *priv,
|
static int dcmi_s_parm(struct file *file, void *priv,
|
||||||
|
@ -1249,7 +1249,7 @@ static int dcmi_s_parm(struct file *file, void *priv,
|
||||||
{
|
{
|
||||||
struct stm32_dcmi *dcmi = video_drvdata(file);
|
struct stm32_dcmi *dcmi = video_drvdata(file);
|
||||||
|
|
||||||
return v4l2_s_parm_cap(video_devdata(file), dcmi->entity.subdev, p);
|
return v4l2_s_parm_cap(video_devdata(file), dcmi->entity.source, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dcmi_enum_frameintervals(struct file *file, void *fh,
|
static int dcmi_enum_frameintervals(struct file *file, void *fh,
|
||||||
|
@ -1271,7 +1271,7 @@ static int dcmi_enum_frameintervals(struct file *file, void *fh,
|
||||||
|
|
||||||
fie.code = sd_fmt->mbus_code;
|
fie.code = sd_fmt->mbus_code;
|
||||||
|
|
||||||
ret = v4l2_subdev_call(dcmi->entity.subdev, pad,
|
ret = v4l2_subdev_call(dcmi->entity.source, pad,
|
||||||
enum_frame_interval, NULL, &fie);
|
enum_frame_interval, NULL, &fie);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1291,7 +1291,7 @@ MODULE_DEVICE_TABLE(of, stm32_dcmi_of_match);
|
||||||
static int dcmi_open(struct file *file)
|
static int dcmi_open(struct file *file)
|
||||||
{
|
{
|
||||||
struct stm32_dcmi *dcmi = video_drvdata(file);
|
struct stm32_dcmi *dcmi = video_drvdata(file);
|
||||||
struct v4l2_subdev *sd = dcmi->entity.subdev;
|
struct v4l2_subdev *sd = dcmi->entity.source;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (mutex_lock_interruptible(&dcmi->lock))
|
if (mutex_lock_interruptible(&dcmi->lock))
|
||||||
|
@ -1322,7 +1322,7 @@ unlock:
|
||||||
static int dcmi_release(struct file *file)
|
static int dcmi_release(struct file *file)
|
||||||
{
|
{
|
||||||
struct stm32_dcmi *dcmi = video_drvdata(file);
|
struct stm32_dcmi *dcmi = video_drvdata(file);
|
||||||
struct v4l2_subdev *sd = dcmi->entity.subdev;
|
struct v4l2_subdev *sd = dcmi->entity.source;
|
||||||
bool fh_singular;
|
bool fh_singular;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -1433,7 +1433,7 @@ static int dcmi_formats_init(struct stm32_dcmi *dcmi)
|
||||||
{
|
{
|
||||||
const struct dcmi_format *sd_fmts[ARRAY_SIZE(dcmi_formats)];
|
const struct dcmi_format *sd_fmts[ARRAY_SIZE(dcmi_formats)];
|
||||||
unsigned int num_fmts = 0, i, j;
|
unsigned int num_fmts = 0, i, j;
|
||||||
struct v4l2_subdev *subdev = dcmi->entity.subdev;
|
struct v4l2_subdev *subdev = dcmi->entity.source;
|
||||||
struct v4l2_subdev_mbus_code_enum mbus_code = {
|
struct v4l2_subdev_mbus_code_enum mbus_code = {
|
||||||
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
|
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||||
};
|
};
|
||||||
|
@ -1479,7 +1479,7 @@ static int dcmi_formats_init(struct stm32_dcmi *dcmi)
|
||||||
static int dcmi_framesizes_init(struct stm32_dcmi *dcmi)
|
static int dcmi_framesizes_init(struct stm32_dcmi *dcmi)
|
||||||
{
|
{
|
||||||
unsigned int num_fsize = 0;
|
unsigned int num_fsize = 0;
|
||||||
struct v4l2_subdev *subdev = dcmi->entity.subdev;
|
struct v4l2_subdev *subdev = dcmi->entity.source;
|
||||||
struct v4l2_subdev_frame_size_enum fse = {
|
struct v4l2_subdev_frame_size_enum fse = {
|
||||||
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
|
.which = V4L2_SUBDEV_FORMAT_ACTIVE,
|
||||||
.code = dcmi->sd_format->mbus_code,
|
.code = dcmi->sd_format->mbus_code,
|
||||||
|
@ -1526,7 +1526,7 @@ static int dcmi_graph_notify_complete(struct v4l2_async_notifier *notifier)
|
||||||
struct stm32_dcmi *dcmi = notifier_to_dcmi(notifier);
|
struct stm32_dcmi *dcmi = notifier_to_dcmi(notifier);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
dcmi->vdev->ctrl_handler = dcmi->entity.subdev->ctrl_handler;
|
dcmi->vdev->ctrl_handler = dcmi->entity.source->ctrl_handler;
|
||||||
ret = dcmi_formats_init(dcmi);
|
ret = dcmi_formats_init(dcmi);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dcmi->dev, "No supported mediabus format found\n");
|
dev_err(dcmi->dev, "No supported mediabus format found\n");
|
||||||
|
@ -1582,7 +1582,7 @@ static int dcmi_graph_notify_bound(struct v4l2_async_notifier *notifier,
|
||||||
|
|
||||||
dev_dbg(dcmi->dev, "Subdev %s bound\n", subdev->name);
|
dev_dbg(dcmi->dev, "Subdev %s bound\n", subdev->name);
|
||||||
|
|
||||||
dcmi->entity.subdev = subdev;
|
dcmi->entity.source = subdev;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1608,7 +1608,7 @@ static int dcmi_graph_parse(struct stm32_dcmi *dcmi, struct device_node *node)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* Remote node to connect */
|
/* Remote node to connect */
|
||||||
dcmi->entity.node = remote;
|
dcmi->entity.remote_node = remote;
|
||||||
dcmi->entity.asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
|
dcmi->entity.asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
|
||||||
dcmi->entity.asd.match.fwnode = of_fwnode_handle(remote);
|
dcmi->entity.asd.match.fwnode = of_fwnode_handle(remote);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1631,7 +1631,7 @@ static int dcmi_graph_init(struct stm32_dcmi *dcmi)
|
||||||
&dcmi->entity.asd);
|
&dcmi->entity.asd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dcmi->dev, "Failed to add subdev notifier\n");
|
dev_err(dcmi->dev, "Failed to add subdev notifier\n");
|
||||||
of_node_put(dcmi->entity.node);
|
of_node_put(dcmi->entity.remote_node);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue