mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
NotForUpstream: media: video-mux: Propagate controls to source
The i.MX8MP makes calls on it's source device to determine the link-frequency that should be configured on the CSI2 receiver. When the source is behind a video mux, we need to pass this call through to the connected device. Map the control handler of the source device to the video-mux, essentially proxying all controls on the mux to the device which has it's link enabled. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
committed by
Dom Cobley
parent
f304deeb4e
commit
7ac6a6a5a9
@@ -70,6 +70,7 @@ static int video_mux_link_setup(struct media_entity *entity,
|
||||
{
|
||||
struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(entity);
|
||||
struct v4l2_subdev_state *sd_state;
|
||||
struct v4l2_subdev *source_sd;
|
||||
struct video_mux *vmux = v4l2_subdev_to_video_mux(sd);
|
||||
u16 source_pad = entity->num_pads - 1;
|
||||
int ret = 0;
|
||||
@@ -110,6 +111,10 @@ static int video_mux_link_setup(struct media_entity *entity,
|
||||
source_pad);
|
||||
*source_mbusformat = *v4l2_subdev_state_get_format(sd_state,
|
||||
vmux->active);
|
||||
|
||||
source_sd = media_entity_to_v4l2_subdev(remote->entity);
|
||||
vmux->subdev.ctrl_handler = source_sd->ctrl_handler;
|
||||
|
||||
} else {
|
||||
if (vmux->active != local->index)
|
||||
goto out;
|
||||
@@ -117,6 +122,8 @@ static int video_mux_link_setup(struct media_entity *entity,
|
||||
dev_dbg(sd->dev, "going inactive\n");
|
||||
mux_control_deselect(vmux->mux);
|
||||
vmux->active = -1;
|
||||
|
||||
vmux->subdev.ctrl_handler = NULL;
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
Reference in New Issue
Block a user