Hi Tomi,
[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.12-rc6 next-20210409]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url:
https://github.com/0day-ci/linux/commits/Tomi-Valkeinen/RFC-media-v4l2-su...
base:
git://linuxtv.org/media_tree.git master
config: parisc-randconfig-r003-20210409 (attached as .config)
compiler: hppa-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
#
https://github.com/0day-ci/linux/commit/4690ebdd6fd3180366038788f7df1fa24...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Tomi-Valkeinen/RFC-media-v4l2-subdev-add-subdev-wide-config-struct/20210409-213822
git checkout 4690ebdd6fd3180366038788f7df1fa2420f00c9
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=parisc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/media/i2c/tda1997x.c: In function 'tda1997x_init_cfg':
> drivers/media/i2c/tda1997x.c:1726:38: error: passing argument 2
of 'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1726 | mf = v4l2_subdev_get_try_format(sd,
cfg, 0);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/tda1997x.c:20:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/tda1997x.c: In function 'tda1997x_get_format':
drivers/media/i2c/tda1997x.c:1778:40: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1778 | fmt = v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/tda1997x.c:20:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/tda1997x.c: In function 'tda1997x_set_format':
drivers/media/i2c/tda1997x.c:1812:40: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1812 | fmt = v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/tda1997x.c:20:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/tda1997x.c: At top level:
> drivers/media/i2c/tda1997x.c:1911:14: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *)' from incompatible
pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config *)'
[-Werror=incompatible-pointer-types]
1911 | .init_cfg = tda1997x_init_cfg,
| ^~~~~~~~~~~~~~~~~
drivers/media/i2c/tda1997x.c:1911:14: note: (near initialization for
'tda1997x_pad_ops.init_cfg')
> drivers/media/i2c/tda1997x.c:1912:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
1912 | .enum_mbus_code =
tda1997x_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tda1997x.c:1912:20: note: (near initialization for
'tda1997x_pad_ops.enum_mbus_code')
> drivers/media/i2c/tda1997x.c:1913:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
1913 | .get_fmt = tda1997x_get_format,
| ^~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tda1997x.c:1913:13: note: (near initialization for
'tda1997x_pad_ops.get_fmt')
drivers/media/i2c/tda1997x.c:1914:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
1914 | .set_fmt = tda1997x_set_format,
| ^~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tda1997x.c:1914:13: note: (near initialization for
'tda1997x_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/saa7115.c:1615:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
1615 | .set_fmt = saa711x_set_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/saa7115.c:1615:13: note: (near initialization for
'saa711x_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/adv7170.c:325:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
325 | .enum_mbus_code =
adv7170_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7170.c:325:20: note: (near initialization for
'adv7170_pad_ops.enum_mbus_code')
> drivers/media/i2c/adv7170.c:326:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
326 | .get_fmt = adv7170_get_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7170.c:326:13: note: (near initialization for
'adv7170_pad_ops.get_fmt')
drivers/media/i2c/adv7170.c:327:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
327 | .set_fmt = adv7170_set_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7170.c:327:13: note: (near initialization for
'adv7170_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
drivers/media/i2c/adv7180.c: In function 'adv7180_get_pad_format':
> drivers/media/i2c/adv7180.c:708:52: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
708 | format->format =
*v4l2_subdev_get_try_format(sd, cfg, 0);
| ^~~
| |
| struct
v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7180.c:20:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7180.c: In function 'adv7180_set_pad_format':
drivers/media/i2c/adv7180.c:745:45: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
745 | framefmt = v4l2_subdev_get_try_format(sd, cfg, 0);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7180.c:20:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7180.c: At top level:
> drivers/media/i2c/adv7180.c:868:14: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *)' from incompatible
pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config *)'
[-Werror=incompatible-pointer-types]
868 | .init_cfg = adv7180_init_cfg,
| ^~~~~~~~~~~~~~~~
drivers/media/i2c/adv7180.c:868:14: note: (near initialization for
'adv7180_pad_ops.init_cfg')
> drivers/media/i2c/adv7180.c:869:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
869 | .enum_mbus_code =
adv7180_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7180.c:869:20: note: (near initialization for
'adv7180_pad_ops.enum_mbus_code')
> drivers/media/i2c/adv7180.c:870:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
870 | .set_fmt = adv7180_set_pad_format,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7180.c:870:13: note: (near initialization for
'adv7180_pad_ops.set_fmt')
drivers/media/i2c/adv7180.c:871:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
871 | .get_fmt = adv7180_get_pad_format,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7180.c:871:13: note: (near initialization for
'adv7180_pad_ops.get_fmt')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/adv7183.c:513:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
513 | .enum_mbus_code =
adv7183_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7183.c:513:20: note: (near initialization for
'adv7183_pad_ops.enum_mbus_code')
> drivers/media/i2c/adv7183.c:514:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
514 | .get_fmt = adv7183_get_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7183.c:514:13: note: (near initialization for
'adv7183_pad_ops.get_fmt')
drivers/media/i2c/adv7183.c:515:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
515 | .set_fmt = adv7183_set_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7183.c:515:13: note: (near initialization for
'adv7183_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
drivers/media/i2c/adv7842.c: In function 'adv7842_get_format':
> drivers/media/i2c/adv7842.c:2095:40: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
2095 | fmt =
v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7842.c:30:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7842.c: In function 'adv7842_set_format':
drivers/media/i2c/adv7842.c:2127:40: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
2127 | fmt = v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7842.c:30:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7842.c: At top level:
> drivers/media/i2c/adv7842.c:3300:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
3300 | .enum_mbus_code =
adv7842_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7842.c:3300:20: note: (near initialization for
'adv7842_pad_ops.enum_mbus_code')
> drivers/media/i2c/adv7842.c:3301:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
3301 | .get_fmt = adv7842_get_format,
| ^~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7842.c:3301:13: note: (near initialization for
'adv7842_pad_ops.get_fmt')
drivers/media/i2c/adv7842.c:3302:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
3302 | .set_fmt = adv7842_set_format,
| ^~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7842.c:3302:13: note: (near initialization for
'adv7842_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
drivers/media/i2c/adv7511-v4l2.c: In function 'adv7511_get_fmt':
> drivers/media/i2c/adv7511-v4l2.c:1264:40: error: passing argument
2 of 'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1264 | fmt =
v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7511-v4l2.c:24:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7511-v4l2.c: In function 'adv7511_set_fmt':
drivers/media/i2c/adv7511-v4l2.c:1319:40: error: passing argument 2 of
'v4l2_subdev_get_try_format' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1319 | fmt = v4l2_subdev_get_try_format(sd, cfg, format->pad);
| ^~~
| |
| struct v4l2_subdev_pad_config *
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/adv7511-v4l2.c:24:
include/media/v4l2-subdev.h:957:34: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
957 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/adv7511-v4l2.c: At top level:
> drivers/media/i2c/adv7511-v4l2.c:1426:20: error: initialization
of 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
1426 | .enum_mbus_code =
adv7511_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/adv7511-v4l2.c:1426:20: note: (near initialization for
'adv7511_pad_ops.enum_mbus_code')
> drivers/media/i2c/adv7511-v4l2.c:1427:13: error: initialization
of 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_format *)' from incompatible pointer type 'int (*)(struct v4l2_subdev
*, struct v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
1427 | .get_fmt = adv7511_get_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7511-v4l2.c:1427:13: note: (near initialization for
'adv7511_pad_ops.get_fmt')
drivers/media/i2c/adv7511-v4l2.c:1428:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
1428 | .set_fmt = adv7511_set_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/adv7511-v4l2.c:1428:13: note: (near initialization for
'adv7511_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
drivers/media/i2c/tvp5150.c: In function 'tvp5150_get_pad_crop':
> drivers/media/i2c/tvp5150.c:1038:49: error: passing argument 2 of
'v4l2_subdev_get_try_crop' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1038 | return
v4l2_subdev_get_try_crop(&decoder->sd, cfg, pad);
| ^~~
| |
| struct v4l2_subdev_pad_config
*
In file included from include/media/v4l2-device.h:13,
from drivers/media/i2c/tvp5150.c:19:
include/media/v4l2-subdev.h:975:32: note: expected 'struct v4l2_subdev_config
*' but argument is of type 'struct v4l2_subdev_pad_config *'
975 | struct v4l2_subdev_config *cfg,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
drivers/media/i2c/tvp5150.c: At top level:
> drivers/media/i2c/tvp5150.c:1733:14: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *)' from incompatible
pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config *)'
[-Werror=incompatible-pointer-types]
1733 | .init_cfg = tvp5150_init_cfg,
| ^~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1733:14: note: (near initialization for
'tvp5150_pad_ops.init_cfg')
> drivers/media/i2c/tvp5150.c:1734:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
1734 | .enum_mbus_code =
tvp5150_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1734:20: note: (near initialization for
'tvp5150_pad_ops.enum_mbus_code')
> drivers/media/i2c/tvp5150.c:1735:21: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_frame_size_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_frame_size_enum *)'
[-Werror=incompatible-pointer-types]
1735 | .enum_frame_size =
tvp5150_enum_frame_size,
| ^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1735:21: note: (near initialization for
'tvp5150_pad_ops.enum_frame_size')
> drivers/media/i2c/tvp5150.c:1736:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
1736 | .set_fmt = tvp5150_fill_fmt,
| ^~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1736:13: note: (near initialization for
'tvp5150_pad_ops.set_fmt')
drivers/media/i2c/tvp5150.c:1737:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
1737 | .get_fmt = tvp5150_fill_fmt,
| ^~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1737:13: note: (near initialization for
'tvp5150_pad_ops.get_fmt')
> drivers/media/i2c/tvp5150.c:1738:19: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_selection *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_selection *)'
[-Werror=incompatible-pointer-types]
1738 | .get_selection =
tvp5150_get_selection,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1738:19: note: (near initialization for
'tvp5150_pad_ops.get_selection')
drivers/media/i2c/tvp5150.c:1739:19: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_selection *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_selection *)' [-Werror=incompatible-pointer-types]
1739 | .set_selection = tvp5150_set_selection,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tvp5150.c:1739:19: note: (near initialization for
'tvp5150_pad_ops.set_selection')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/tw9910.c:915:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
915 | .enum_mbus_code =
tw9910_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tw9910.c:915:20: note: (near initialization for
'tw9910_subdev_pad_ops.enum_mbus_code')
> drivers/media/i2c/tw9910.c:916:19: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_selection *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_selection *)'
[-Werror=incompatible-pointer-types]
916 | .get_selection =
tw9910_get_selection,
| ^~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/tw9910.c:916:19: note: (near initialization for
'tw9910_subdev_pad_ops.get_selection')
> drivers/media/i2c/tw9910.c:917:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
917 | .get_fmt = tw9910_get_fmt,
| ^~~~~~~~~~~~~~
drivers/media/i2c/tw9910.c:917:13: note: (near initialization for
'tw9910_subdev_pad_ops.get_fmt')
drivers/media/i2c/tw9910.c:918:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
918 | .set_fmt = tw9910_set_fmt,
| ^~~~~~~~~~~~~~
drivers/media/i2c/tw9910.c:918:13: note: (near initialization for
'tw9910_subdev_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/ml86v7667.c:298:20: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct
v4l2_subdev_mbus_code_enum *)' from incompatible pointer type 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_pad_config *, struct v4l2_subdev_mbus_code_enum *)'
[-Werror=incompatible-pointer-types]
298 | .enum_mbus_code =
ml86v7667_enum_mbus_code,
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/ml86v7667.c:298:20: note: (near initialization for
'ml86v7667_subdev_pad_ops.enum_mbus_code')
> drivers/media/i2c/ml86v7667.c:299:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
299 | .get_fmt = ml86v7667_fill_fmt,
| ^~~~~~~~~~~~~~~~~~
drivers/media/i2c/ml86v7667.c:299:13: note: (near initialization for
'ml86v7667_subdev_pad_ops.get_fmt')
drivers/media/i2c/ml86v7667.c:300:13: error: initialization of 'int (*)(struct
v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format *)' from
incompatible pointer type 'int (*)(struct v4l2_subdev *, struct v4l2_subdev_pad_config
*, struct v4l2_subdev_format *)' [-Werror=incompatible-pointer-types]
300 | .set_fmt = ml86v7667_fill_fmt,
| ^~~~~~~~~~~~~~~~~~
drivers/media/i2c/ml86v7667.c:300:13: note: (near initialization for
'ml86v7667_subdev_pad_ops.set_fmt')
cc1: some warnings being treated as errors
--
> drivers/media/i2c/saa717x.c:1214:13: error: initialization of
'int (*)(struct v4l2_subdev *, struct v4l2_subdev_config *, struct v4l2_subdev_format
*)' from incompatible pointer type 'int (*)(struct v4l2_subdev *, struct
v4l2_subdev_pad_config *, struct v4l2_subdev_format *)'
[-Werror=incompatible-pointer-types]
1214 | .set_fmt = saa717x_set_fmt,
| ^~~~~~~~~~~~~~~
drivers/media/i2c/saa717x.c:1214:13: note: (near initialization for
'saa717x_pad_ops.set_fmt')
cc1: some warnings being treated as errors
..
vim +/v4l2_subdev_get_try_format +1726 drivers/media/i2c/tda1997x.c
9ac0038db9a7e1 Tim Harvey 2018-02-15 1714
9ac0038db9a7e1 Tim Harvey 2018-02-15 1715
9ac0038db9a7e1 Tim Harvey 2018-02-15 1716 /*
-----------------------------------------------------------------------------
9ac0038db9a7e1 Tim Harvey 2018-02-15 1717 * v4l2_subdev_pad_ops
9ac0038db9a7e1 Tim Harvey 2018-02-15 1718 */
9ac0038db9a7e1 Tim Harvey 2018-02-15 1719
9ac0038db9a7e1 Tim Harvey 2018-02-15 1720 static int tda1997x_init_cfg(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1721 struct v4l2_subdev_pad_config *cfg)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1722 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1723 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1724 struct v4l2_mbus_framefmt *mf;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1725
9ac0038db9a7e1 Tim Harvey 2018-02-15 @1726 mf = v4l2_subdev_get_try_format(sd, cfg, 0);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1727 mf->code = state->mbus_codes[0];
9ac0038db9a7e1 Tim Harvey 2018-02-15 1728
9ac0038db9a7e1 Tim Harvey 2018-02-15 1729 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1730 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1731
9ac0038db9a7e1 Tim Harvey 2018-02-15 1732 static int tda1997x_enum_mbus_code(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1733 struct v4l2_subdev_pad_config *cfg,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1734 struct v4l2_subdev_mbus_code_enum
*code)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1735 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1736 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1737
9ac0038db9a7e1 Tim Harvey 2018-02-15 1738 v4l_dbg(1, debug, state->client, "%s
%d\n", __func__, code->index);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1739 if (code->index >=
ARRAY_SIZE(state->mbus_codes))
9ac0038db9a7e1 Tim Harvey 2018-02-15 1740 return -EINVAL;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1741
9ac0038db9a7e1 Tim Harvey 2018-02-15 1742 if (!state->mbus_codes[code->index])
9ac0038db9a7e1 Tim Harvey 2018-02-15 1743 return -EINVAL;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1744
9ac0038db9a7e1 Tim Harvey 2018-02-15 1745 code->code =
state->mbus_codes[code->index];
9ac0038db9a7e1 Tim Harvey 2018-02-15 1746
9ac0038db9a7e1 Tim Harvey 2018-02-15 1747 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1748 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1749
9ac0038db9a7e1 Tim Harvey 2018-02-15 1750 static void tda1997x_fill_format(struct
tda1997x_state *state,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1751 struct v4l2_mbus_framefmt *format)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1752 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1753 const struct v4l2_bt_timings *bt;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1754
9ac0038db9a7e1 Tim Harvey 2018-02-15 1755 memset(format, 0, sizeof(*format));
9ac0038db9a7e1 Tim Harvey 2018-02-15 1756 bt = &state->timings.bt;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1757 format->width = bt->width;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1758 format->height = bt->height;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1759 format->colorspace =
state->colorimetry.colorspace;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1760 format->field = (bt->interlaced) ?
9ac0038db9a7e1 Tim Harvey 2018-02-15 1761 V4L2_FIELD_SEQ_TB : V4L2_FIELD_NONE;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1762 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1763
9ac0038db9a7e1 Tim Harvey 2018-02-15 1764 static int tda1997x_get_format(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1765 struct v4l2_subdev_pad_config *cfg,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1766 struct v4l2_subdev_format *format)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1767 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1768 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1769
9ac0038db9a7e1 Tim Harvey 2018-02-15 1770 v4l_dbg(1, debug, state->client, "%s
pad=%d which=%d\n",
9ac0038db9a7e1 Tim Harvey 2018-02-15 1771 __func__, format->pad,
format->which);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1772
9ac0038db9a7e1 Tim Harvey 2018-02-15 1773 tda1997x_fill_format(state,
&format->format);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1774
9ac0038db9a7e1 Tim Harvey 2018-02-15 1775 if (format->which ==
V4L2_SUBDEV_FORMAT_TRY) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1776 struct v4l2_mbus_framefmt *fmt;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1777
9ac0038db9a7e1 Tim Harvey 2018-02-15 1778 fmt = v4l2_subdev_get_try_format(sd, cfg,
format->pad);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1779 format->format.code = fmt->code;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1780 } else
9ac0038db9a7e1 Tim Harvey 2018-02-15 1781 format->format.code =
state->mbus_code;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1782
9ac0038db9a7e1 Tim Harvey 2018-02-15 1783 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1784 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1785
9ac0038db9a7e1 Tim Harvey 2018-02-15 1786 static int tda1997x_set_format(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1787 struct v4l2_subdev_pad_config *cfg,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1788 struct v4l2_subdev_format *format)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1789 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1790 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1791 u32 code = 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1792 int i;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1793
9ac0038db9a7e1 Tim Harvey 2018-02-15 1794 v4l_dbg(1, debug, state->client, "%s
pad=%d which=%d fmt=0x%x\n",
9ac0038db9a7e1 Tim Harvey 2018-02-15 1795 __func__, format->pad, format->which,
format->format.code);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1796
9ac0038db9a7e1 Tim Harvey 2018-02-15 1797 for (i = 0; i <
ARRAY_SIZE(state->mbus_codes); i++) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1798 if (format->format.code ==
state->mbus_codes[i]) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1799 code = state->mbus_codes[i];
9ac0038db9a7e1 Tim Harvey 2018-02-15 1800 break;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1801 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1802 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1803 if (!code)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1804 code = state->mbus_codes[0];
9ac0038db9a7e1 Tim Harvey 2018-02-15 1805
9ac0038db9a7e1 Tim Harvey 2018-02-15 1806 tda1997x_fill_format(state,
&format->format);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1807 format->format.code = code;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1808
9ac0038db9a7e1 Tim Harvey 2018-02-15 1809 if (format->which ==
V4L2_SUBDEV_FORMAT_TRY) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1810 struct v4l2_mbus_framefmt *fmt;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1811
9ac0038db9a7e1 Tim Harvey 2018-02-15 1812 fmt = v4l2_subdev_get_try_format(sd, cfg,
format->pad);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1813 *fmt = format->format;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1814 } else {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1815 int ret = tda1997x_setup_format(state,
format->format.code);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1816
9ac0038db9a7e1 Tim Harvey 2018-02-15 1817 if (ret)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1818 return ret;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1819 /* mbus_code has changed - re-configure
csc/vidout */
9ac0038db9a7e1 Tim Harvey 2018-02-15 1820 tda1997x_configure_csc(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1821 tda1997x_configure_vidout(state);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1822 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1823
9ac0038db9a7e1 Tim Harvey 2018-02-15 1824 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1825 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1826
9ac0038db9a7e1 Tim Harvey 2018-02-15 1827 static int tda1997x_get_edid(struct
v4l2_subdev *sd, struct v4l2_edid *edid)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1828 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1829 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1830
9ac0038db9a7e1 Tim Harvey 2018-02-15 1831 v4l_dbg(1, debug, state->client, "%s
pad=%d\n", __func__, edid->pad);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1832 memset(edid->reserved, 0,
sizeof(edid->reserved));
9ac0038db9a7e1 Tim Harvey 2018-02-15 1833
9ac0038db9a7e1 Tim Harvey 2018-02-15 1834 if (edid->start_block == 0 &&
edid->blocks == 0) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1835 edid->blocks = state->edid.blocks;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1836 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1837 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1838
9ac0038db9a7e1 Tim Harvey 2018-02-15 1839 if (!state->edid.present)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1840 return -ENODATA;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1841
9ac0038db9a7e1 Tim Harvey 2018-02-15 1842 if (edid->start_block >=
state->edid.blocks)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1843 return -EINVAL;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1844
9ac0038db9a7e1 Tim Harvey 2018-02-15 1845 if (edid->start_block + edid->blocks
> state->edid.blocks)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1846 edid->blocks = state->edid.blocks -
edid->start_block;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1847
9ac0038db9a7e1 Tim Harvey 2018-02-15 1848 memcpy(edid->edid, state->edid.edid +
edid->start_block * 128,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1849 edid->blocks * 128);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1850
9ac0038db9a7e1 Tim Harvey 2018-02-15 1851 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1852 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1853
9ac0038db9a7e1 Tim Harvey 2018-02-15 1854 static int tda1997x_set_edid(struct
v4l2_subdev *sd, struct v4l2_edid *edid)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1855 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1856 struct tda1997x_state *state = to_state(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1857 int i;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1858
9ac0038db9a7e1 Tim Harvey 2018-02-15 1859 v4l_dbg(1, debug, state->client, "%s
pad=%d\n", __func__, edid->pad);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1860 memset(edid->reserved, 0,
sizeof(edid->reserved));
9ac0038db9a7e1 Tim Harvey 2018-02-15 1861
9ac0038db9a7e1 Tim Harvey 2018-02-15 1862 if (edid->start_block != 0)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1863 return -EINVAL;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1864
9ac0038db9a7e1 Tim Harvey 2018-02-15 1865 if (edid->blocks == 0) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1866 state->edid.blocks = 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1867 state->edid.present = 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1868 tda1997x_disable_edid(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1869 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1870 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1871
9ac0038db9a7e1 Tim Harvey 2018-02-15 1872 if (edid->blocks > 2) {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1873 edid->blocks = 2;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1874 return -E2BIG;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1875 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1876
9ac0038db9a7e1 Tim Harvey 2018-02-15 1877 tda1997x_disable_edid(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1878
9ac0038db9a7e1 Tim Harvey 2018-02-15 1879 /* write base EDID */
9ac0038db9a7e1 Tim Harvey 2018-02-15 1880 for (i = 0; i < 128; i++)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1881 io_write(sd, REG_EDID_IN_BYTE0 + i,
edid->edid[i]);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1882
9ac0038db9a7e1 Tim Harvey 2018-02-15 1883 /* write CEA Extension */
9ac0038db9a7e1 Tim Harvey 2018-02-15 1884 for (i = 0; i < 128; i++)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1885 io_write(sd, REG_EDID_IN_BYTE128 + i,
edid->edid[i+128]);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1886
0806bc0afbb415 Tim Harvey 2019-02-05 1887 /* store state */
0806bc0afbb415 Tim Harvey 2019-02-05 1888 memcpy(state->edid.edid, edid->edid,
256);
0806bc0afbb415 Tim Harvey 2019-02-05 1889 state->edid.blocks = edid->blocks;
0806bc0afbb415 Tim Harvey 2019-02-05 1890
9ac0038db9a7e1 Tim Harvey 2018-02-15 1891 tda1997x_enable_edid(sd);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1892
9ac0038db9a7e1 Tim Harvey 2018-02-15 1893 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1894 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1895
9ac0038db9a7e1 Tim Harvey 2018-02-15 1896 static int tda1997x_get_dv_timings_cap(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1897 struct v4l2_dv_timings_cap *cap)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1898 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1899 *cap = tda1997x_dv_timings_cap;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1900 return 0;
9ac0038db9a7e1 Tim Harvey 2018-02-15 1901 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1902
9ac0038db9a7e1 Tim Harvey 2018-02-15 1903 static int tda1997x_enum_dv_timings(struct
v4l2_subdev *sd,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1904 struct v4l2_enum_dv_timings *timings)
9ac0038db9a7e1 Tim Harvey 2018-02-15 1905 {
9ac0038db9a7e1 Tim Harvey 2018-02-15 1906 return v4l2_enum_dv_timings_cap(timings,
&tda1997x_dv_timings_cap,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1907 NULL, NULL);
9ac0038db9a7e1 Tim Harvey 2018-02-15 1908 }
9ac0038db9a7e1 Tim Harvey 2018-02-15 1909
9ac0038db9a7e1 Tim Harvey 2018-02-15 1910 static const struct v4l2_subdev_pad_ops
tda1997x_pad_ops = {
9ac0038db9a7e1 Tim Harvey 2018-02-15 @1911 .init_cfg = tda1997x_init_cfg,
9ac0038db9a7e1 Tim Harvey 2018-02-15 @1912 .enum_mbus_code = tda1997x_enum_mbus_code,
9ac0038db9a7e1 Tim Harvey 2018-02-15 @1913 .get_fmt = tda1997x_get_format,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1914 .set_fmt = tda1997x_set_format,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1915 .get_edid = tda1997x_get_edid,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1916 .set_edid = tda1997x_set_edid,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1917 .dv_timings_cap =
tda1997x_get_dv_timings_cap,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1918 .enum_dv_timings = tda1997x_enum_dv_timings,
9ac0038db9a7e1 Tim Harvey 2018-02-15 1919 };
9ac0038db9a7e1 Tim Harvey 2018-02-15 1920
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org