media: st-mipid02: Use v4l2_async_notifier_add_fwnode_remote_subdev
The use of v4l2_async_notifier_add_subdev will be discouraged. Drivers are instead encouraged to use a helper such as v4l2_async_notifier_add_fwnode_remote_subdev. This fixes a misuse of the API, as v4l2_async_notifier_add_subdev should get a kmalloc'ed struct v4l2_async_subdev, removing some boilerplate code while at it. Use the appropriate helper v4l2_async_notifier_add_fwnode_remote_subdev, which handles the needed setup, instead of open-coding it. Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Reviewed-by: Helen Koike <helen.koike@collabora.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
3a2822bfe4
commit
5bbefdefe8
|
|
@ -92,7 +92,6 @@ struct mipid02_dev {
|
|||
u64 link_frequency;
|
||||
struct v4l2_fwnode_endpoint tx;
|
||||
/* remote source */
|
||||
struct v4l2_async_subdev asd;
|
||||
struct v4l2_async_notifier notifier;
|
||||
struct v4l2_subdev *s_subdev;
|
||||
/* registers */
|
||||
|
|
@ -844,6 +843,7 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge)
|
|||
{
|
||||
struct v4l2_fwnode_endpoint ep = { .bus_type = V4L2_MBUS_CSI2_DPHY };
|
||||
struct i2c_client *client = bridge->i2c_client;
|
||||
struct v4l2_async_subdev *asd;
|
||||
struct device_node *ep_node;
|
||||
int ret;
|
||||
|
||||
|
|
@ -875,18 +875,17 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge)
|
|||
bridge->rx = ep;
|
||||
|
||||
/* register async notifier so we get noticed when sensor is connected */
|
||||
bridge->asd.match.fwnode =
|
||||
fwnode_graph_get_remote_port_parent(of_fwnode_handle(ep_node));
|
||||
bridge->asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
|
||||
v4l2_async_notifier_init(&bridge->notifier);
|
||||
asd = v4l2_async_notifier_add_fwnode_remote_subdev(
|
||||
&bridge->notifier,
|
||||
of_fwnode_handle(ep_node),
|
||||
sizeof(*asd));
|
||||
of_node_put(ep_node);
|
||||
|
||||
v4l2_async_notifier_init(&bridge->notifier);
|
||||
ret = v4l2_async_notifier_add_subdev(&bridge->notifier, &bridge->asd);
|
||||
if (ret) {
|
||||
dev_err(&client->dev, "fail to register asd to notifier %d",
|
||||
ret);
|
||||
fwnode_handle_put(bridge->asd.match.fwnode);
|
||||
return ret;
|
||||
if (IS_ERR(asd)) {
|
||||
dev_err(&client->dev, "fail to register asd to notifier %ld",
|
||||
PTR_ERR(asd));
|
||||
return PTR_ERR(asd);
|
||||
}
|
||||
bridge->notifier.ops = &mipid02_notifier_ops;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue