This patch adds support for enuminput control to the adv748x hdmi subdev.
This will allow userspace for example to query input hdmi signal status.
Signed-off-by: Ramzi BEN MEFTAH <[email protected]>
---
drivers/media/i2c/adv748x/adv748x-hdmi.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/media/i2c/adv748x/adv748x-hdmi.c b/drivers/media/i2c/adv748x/adv748x-hdmi.c
index c557f8f..2d748b2 100644
--- a/drivers/media/i2c/adv748x/adv748x-hdmi.c
+++ b/drivers/media/i2c/adv748x/adv748x-hdmi.c
@@ -350,6 +350,22 @@ static int adv748x_hdmi_g_input_status(struct v4l2_subdev *sd, u32 *status)
return 0;
}
+static int adv748x_hdmi_enuminput(struct v4l2_subdev *sd,
+ struct v4l2_input *input)
+{
+ if (input->index != 0)
+ return -EINVAL;
+
+ input->type = V4L2_INPUT_TYPE_CAMERA;
+ input->capabilities = V4L2_IN_CAP_DV_TIMINGS;
+ input->status = V4L2_IN_ST_NO_SIGNAL;
+ input->std = V4L2_STD_UNKNOWN;
+
+ snprintf(input->name, sizeof(input->name), "%s", sd->name);
+
+ return adv748x_hdmi_g_input_status(sd, &input->status);
+}
+
static int adv748x_hdmi_s_stream(struct v4l2_subdev *sd, int enable)
{
struct adv748x_hdmi *hdmi = adv748x_sd_to_hdmi(sd);
@@ -386,6 +402,7 @@ static const struct v4l2_subdev_video_ops adv748x_video_ops_hdmi = {
.g_dv_timings = adv748x_hdmi_g_dv_timings,
.query_dv_timings = adv748x_hdmi_query_dv_timings,
.g_input_status = adv748x_hdmi_g_input_status,
+ .enuminput = adv748x_hdmi_enuminput,
.s_stream = adv748x_hdmi_s_stream,
.g_pixelaspect = adv748x_hdmi_g_pixelaspect,
};
--
2.7.4
Hi Ramzi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc1 next-20200615]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Ramzi-BEN-MEFTAH/media-i2c-adv748x-add-enuminput-control-to-adv748x-hdmi-subdev/20200615-212859
base: git://linuxtv.org/media_tree.git master
config: i386-randconfig-a016-20200615 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
All error/warnings (new ones prefixed by >>, old ones prefixed by <<):
>> drivers/media/i2c/adv748x/adv748x-hdmi.c:405:3: error: 'const struct v4l2_subdev_video_ops' has no member named 'enuminput'
405 | .enuminput = adv748x_hdmi_enuminput,
| ^~~~~~~~~
>> drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: error: initialization of 'int (*)(struct v4l2_subdev *, int)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_input *)' [-Werror=incompatible-pointer-types]
405 | .enuminput = adv748x_hdmi_enuminput,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: note: (near initialization for 'adv748x_video_ops_hdmi.s_stream')
>> drivers/media/i2c/adv748x/adv748x-hdmi.c:406:14: warning: initialized field overwritten [-Woverride-init]
406 | .s_stream = adv748x_hdmi_s_stream,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv748x/adv748x-hdmi.c:406:14: note: (near initialization for 'adv748x_video_ops_hdmi.s_stream')
cc1: some warnings being treated as errors
vim +405 drivers/media/i2c/adv748x/adv748x-hdmi.c
399
400 static const struct v4l2_subdev_video_ops adv748x_video_ops_hdmi = {
401 .s_dv_timings = adv748x_hdmi_s_dv_timings,
402 .g_dv_timings = adv748x_hdmi_g_dv_timings,
403 .query_dv_timings = adv748x_hdmi_query_dv_timings,
404 .g_input_status = adv748x_hdmi_g_input_status,
> 405 .enuminput = adv748x_hdmi_enuminput,
> 406 .s_stream = adv748x_hdmi_s_stream,
407 .g_pixelaspect = adv748x_hdmi_g_pixelaspect,
408 };
409
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
Hi Ramzi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc1 next-20200615]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Ramzi-BEN-MEFTAH/media-i2c-adv748x-add-enuminput-control-to-adv748x-hdmi-subdev/20200615-212859
base: git://linuxtv.org/media_tree.git master
config: s390-allyesconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
All errors (new ones prefixed by >>, old ones prefixed by <<):
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:3: error: 'const struct v4l2_subdev_video_ops' has no member named 'enuminput'
405 | .enuminput = adv748x_hdmi_enuminput,
| ^~~~~~~~~
>> drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: error: positional initialization of field in 'struct' declared with 'designated_init' attribute [-Werror=designated-init]
405 | .enuminput = adv748x_hdmi_enuminput,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: note: (near initialization for 'adv748x_video_ops_hdmi')
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: error: initialization of 'int (*)(struct v4l2_subdev *, struct v4l2_dv_timings *)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_input *)' [-Werror=incompatible-pointer-types]
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: note: (near initialization for 'adv748x_video_ops_hdmi.g_dv_timings')
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: warning: initialized field overwritten [-Woverride-init]
drivers/media/i2c/adv748x/adv748x-hdmi.c:405:15: note: (near initialization for 'adv748x_video_ops_hdmi.g_dv_timings')
cc1: some warnings being treated as errors
vim +405 drivers/media/i2c/adv748x/adv748x-hdmi.c
399
400 static const struct v4l2_subdev_video_ops adv748x_video_ops_hdmi = {
401 .s_dv_timings = adv748x_hdmi_s_dv_timings,
402 .g_dv_timings = adv748x_hdmi_g_dv_timings,
403 .query_dv_timings = adv748x_hdmi_query_dv_timings,
404 .g_input_status = adv748x_hdmi_g_input_status,
> 405 .enuminput = adv748x_hdmi_enuminput,
406 .s_stream = adv748x_hdmi_s_stream,
407 .g_pixelaspect = adv748x_hdmi_g_pixelaspect,
408 };
409
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]