Commit 8a10b4e3 authored by Lad Prabhakar's avatar Lad Prabhakar Committed by Mauro Carvalho Chehab

media: i2c: ov772x: Parse endpoint properties

Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
to determine the bus type and store it in the driver structure.

Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one
Signed-off-by: default avatarLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: default avatarJacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 055e124e
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <media/v4l2-ctrls.h> #include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h> #include <media/v4l2-device.h>
#include <media/v4l2-event.h> #include <media/v4l2-event.h>
#include <media/v4l2-fwnode.h>
#include <media/v4l2-image-sizes.h> #include <media/v4l2-image-sizes.h>
#include <media/v4l2-subdev.h> #include <media/v4l2-subdev.h>
...@@ -434,6 +435,7 @@ struct ov772x_priv { ...@@ -434,6 +435,7 @@ struct ov772x_priv {
#ifdef CONFIG_MEDIA_CONTROLLER #ifdef CONFIG_MEDIA_CONTROLLER
struct media_pad pad; struct media_pad pad;
#endif #endif
enum v4l2_mbus_type bus_type;
}; };
/* /*
...@@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = { ...@@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
.pad = &ov772x_subdev_pad_ops, .pad = &ov772x_subdev_pad_ops,
}; };
static int ov772x_parse_dt(struct i2c_client *client,
struct ov772x_priv *priv)
{
struct v4l2_fwnode_endpoint bus_cfg = {
.bus_type = V4L2_MBUS_PARALLEL
};
struct fwnode_handle *ep;
int ret;
ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev), NULL);
if (!ep) {
dev_err(&client->dev, "Endpoint node not found\n");
return -EINVAL;
}
ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
if (ret)
goto error_fwnode_put;
priv->bus_type = bus_cfg.bus_type;
v4l2_fwnode_endpoint_free(&bus_cfg);
error_fwnode_put:
fwnode_handle_put(ep);
return ret;
}
/* /*
* i2c_driver function * i2c_driver function
*/ */
...@@ -1415,6 +1445,10 @@ static int ov772x_probe(struct i2c_client *client) ...@@ -1415,6 +1445,10 @@ static int ov772x_probe(struct i2c_client *client)
goto error_clk_put; goto error_clk_put;
} }
ret = ov772x_parse_dt(client, priv);
if (ret)
goto error_clk_put;
ret = ov772x_video_probe(priv); ret = ov772x_video_probe(priv);
if (ret < 0) if (ret < 0)
goto error_gpio_put; goto error_gpio_put;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment