Commit 8fe784b9 authored by Steve Longerbeam's avatar Steve Longerbeam Committed by Mauro Carvalho Chehab

media: v4l2-subdev: add v4l2_subdev_get_fwnode_pad_1_to_1

Add a convenience function that can be used as the .get_fwnode_pad
operation for subdevices that map port numbers and pad indexes 1:1.
The function verifies the endpoint is owned by the subdevice, and if
so returns the endpoint port number.
Signed-off-by: default avatarSteve Longerbeam <slongerbeam@gmail.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 70d4a9ef
...@@ -749,6 +749,28 @@ const struct v4l2_file_operations v4l2_subdev_fops = { ...@@ -749,6 +749,28 @@ const struct v4l2_file_operations v4l2_subdev_fops = {
}; };
#ifdef CONFIG_MEDIA_CONTROLLER #ifdef CONFIG_MEDIA_CONTROLLER
int v4l2_subdev_get_fwnode_pad_1_to_1(struct media_entity *entity,
struct fwnode_endpoint *endpoint)
{
struct fwnode_handle *fwnode;
struct v4l2_subdev *sd;
if (!is_media_entity_v4l2_subdev(entity))
return -EINVAL;
sd = media_entity_to_v4l2_subdev(entity);
fwnode = fwnode_graph_get_port_parent(endpoint->local_fwnode);
fwnode_handle_put(fwnode);
if (dev_fwnode(sd->dev) == fwnode)
return endpoint->port;
return -ENXIO;
}
EXPORT_SYMBOL_GPL(v4l2_subdev_get_fwnode_pad_1_to_1);
int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd, int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
struct media_link *link, struct media_link *link,
struct v4l2_subdev_format *source_fmt, struct v4l2_subdev_format *source_fmt,
......
...@@ -1027,6 +1027,23 @@ static inline void *v4l2_get_subdev_hostdata(const struct v4l2_subdev *sd) ...@@ -1027,6 +1027,23 @@ static inline void *v4l2_get_subdev_hostdata(const struct v4l2_subdev *sd)
#ifdef CONFIG_MEDIA_CONTROLLER #ifdef CONFIG_MEDIA_CONTROLLER
/**
* v4l2_subdev_get_fwnode_pad_1_to_1 - Get pad number from a subdev fwnode
* endpoint, assuming 1:1 port:pad
*
* @entity - Pointer to the subdev entity
* @endpoint - Pointer to a parsed fwnode endpoint
*
* This function can be used as the .get_fwnode_pad operation for
* subdevices that map port numbers and pad indexes 1:1. If the endpoint
* is owned by the subdevice, the function returns the endpoint port
* number.
*
* Returns the endpoint port number on success or a negative error code.
*/
int v4l2_subdev_get_fwnode_pad_1_to_1(struct media_entity *entity,
struct fwnode_endpoint *endpoint);
/** /**
* v4l2_subdev_link_validate_default - validates a media link * v4l2_subdev_link_validate_default - validates a media link
* *
......
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