The vivid driver has two custom controls that change the behavior of RDS.
Depending on the control setting the V4L2_CAP_READWRITE capability is toggled.
However, after an earlier commit the capability was no longer set correctly.
This is now fixed.

Fixes: 9765a32cd8 ("vivid: set device_caps in video_device")

Signed-off-by: Hans Verkuil <hans.verk...@cisco.com>
---
diff --git a/drivers/media/platform/vivid/vivid-ctrls.c 
b/drivers/media/platform/vivid/vivid-ctrls.c
index 3f9d354827af..c586c2ab9b31 100644
--- a/drivers/media/platform/vivid/vivid-ctrls.c
+++ b/drivers/media/platform/vivid/vivid-ctrls.c
@@ -1208,6 +1208,7 @@ static int vivid_radio_rx_s_ctrl(struct v4l2_ctrl *ctrl)
                v4l2_ctrl_activate(dev->radio_rx_rds_ta, 
dev->radio_rx_rds_controls);
                v4l2_ctrl_activate(dev->radio_rx_rds_tp, 
dev->radio_rx_rds_controls);
                v4l2_ctrl_activate(dev->radio_rx_rds_ms, 
dev->radio_rx_rds_controls);
+               dev->radio_rx_dev.device_caps = dev->radio_rx_caps;
                break;
        case V4L2_CID_RDS_RECEPTION:
                dev->radio_rx_rds_enabled = ctrl->val;
@@ -1282,6 +1283,7 @@ static int vivid_radio_tx_s_ctrl(struct v4l2_ctrl *ctrl)
                dev->radio_tx_caps &= ~V4L2_CAP_READWRITE;
                if (!dev->radio_tx_rds_controls)
                        dev->radio_tx_caps |= V4L2_CAP_READWRITE;
+               dev->radio_tx_dev.device_caps = dev->radio_tx_caps;
                break;
        case V4L2_CID_RDS_TX_PTY:
                if (dev->radio_rx_rds_controls)

Reply via email to