Commit 17763960 authored by Hans Verkuil's avatar Hans Verkuil

media: vivid: don't set HDMI TX controls if there are no HDMI outputs

When setting the EDID it would attempt to update two controls
that are only present if there is an HDMI output configured.

If there isn't any (e.g. when the vivid module is loaded with
node_types=1), then calling VIDIOC_S_EDID would crash.

Fix this by first checking if outputs are present.
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent e03549dd
......@@ -1554,8 +1554,10 @@ int vidioc_s_edid(struct file *file, void *_fh,
return -EINVAL;
if (edid->blocks == 0) {
dev->edid_blocks = 0;
v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, 0);
v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, 0);
if (dev->num_outputs) {
v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, 0);
v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, 0);
}
phys_addr = CEC_PHYS_ADDR_INVALID;
goto set_phys_addr;
}
......@@ -1579,8 +1581,10 @@ int vidioc_s_edid(struct file *file, void *_fh,
display_present |=
dev->display_present[i] << j++;
v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, display_present);
v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, display_present);
if (dev->num_outputs) {
v4l2_ctrl_s_ctrl(dev->ctrl_tx_edid_present, display_present);
v4l2_ctrl_s_ctrl(dev->ctrl_tx_hotplug, display_present);
}
set_phys_addr:
/* TODO: a proper hotplug detect cycle should be emulated here */
......
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