All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v9 0/3] media: i2c: isl7998x: Add driver for Intersil ISL7998x
@ 2021-11-29 11:27 Michael Tretter
  2021-11-29 11:27 ` [PATCH v9 1/3] media: imx6-mipi-csi2: use pre_streamon callback to set sensor into LP11 Michael Tretter
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Michael Tretter @ 2021-11-29 11:27 UTC (permalink / raw)
  To: linux-media, devicetree, Marek Vasut
  Cc: Rob Herring, Mauro Carvalho Chehab, Sakari Ailus, p.zabel,
	Ian Arkver, kernel, Michael Tretter, Hans Verkuil

This is v9 of the series to for adding the isl7998x driver [0].

The isl7998x is an analog video to MIPI CSI-2 or BT.656 converter. The dt
binding describes only the isl79987 chip, which supports MIPI CSI-2. The
driver could be extended to handle isl79988 (for BT.656), too, but this isn't
implemented.

v9 fixes the following warning when running the dt_binding_check, by removing
the clock-lanes property from the example and adding the data-lanes property
to the specification.

	isl7998x_mipi@44: ports:port@0:endpoint: Unevaluated properties are not allowed ('clock-lanes', 'data-lanes' were unexpected)

Michael

[0] https://lore.kernel.org/linux-media/20190520201812.7937-1-marex@denx.de/

Changelog:

v9:

- remove clock-lanes from dt binding example
- add data-lanes to dt binding example

v8:

- rebase on v5.16-rc1
- fix warning about ignored type qualifier

v7:

- add reservation and documentation for custom V4L2 controls
- implement g_input_status, g_tvnorms, querystd, s_std, g_std
- use v4l2_norm_to_name instead of custom implementation
- fix off-by-one with 4 inputs
- fix polling condition for standard detection

v6:

- incorporate review feedback by Philipp Zabel into isl7998x.c

v5:

- ignore -ENOIOCTLCMD of pre_streamon for backwards compatibility

v4:

- add patch for imx6-mipi-csi2 to request LP-11 mode
- update isl7998x driver with review feedback on v3

v3:

- rename pd-gpios property to powerdown-gpios
- reference graph.yaml for port/ports property
- remove reference to video-interfaces.txt

v2:

- convert dt binding to yaml
- change binding to ISL79987 only
- general driver cleanup
- convert driver to pm_runtime
- use ports in device tree for specifying inputs
- add reset gpio

Marek Vasut (2):
  media: dt-bindings: Add Intersil ISL79987 DT bindings
  media: i2c: isl7998x: Add driver for Intersil ISL7998x

Michael Tretter (1):
  media: imx6-mipi-csi2: use pre_streamon callback to set sensor into
    LP11

 .../bindings/media/i2c/isil,isl79987.yaml     |  113 ++
 MAINTAINERS                                   |    8 +
 drivers/media/i2c/Kconfig                     |   10 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/isl7998x.c                  | 1543 +++++++++++++++++
 drivers/staging/media/imx/imx6-mipi-csi2.c    |    9 +-
 include/uapi/linux/v4l2-controls.h            |    6 +
 7 files changed, 1689 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml
 create mode 100644 drivers/media/i2c/isl7998x.c

-- 
2.30.2


^ permalink raw reply	[flat|nested] 12+ messages in thread
* Re: [PATCH v9 3/3] media: i2c: isl7998x: Add driver for Intersil ISL7998x
@ 2021-12-01 18:49 kernel test robot
  0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2021-12-01 18:49 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 16078 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20211129112708.3219754-4-m.tretter@pengutronix.de>
References: <20211129112708.3219754-4-m.tretter@pengutronix.de>
TO: Michael Tretter <m.tretter@pengutronix.de>
TO: linux-media(a)vger.kernel.org
TO: devicetree(a)vger.kernel.org
TO: Marek Vasut <marex@denx.de>
CC: Rob Herring <robh+dt@kernel.org>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: Sakari Ailus <sakari.ailus@linux.intel.com>
CC: p.zabel(a)pengutronix.de
CC: Ian Arkver <ian.arkver.dev@gmail.com>
CC: kernel(a)pengutronix.de
CC: Michael Tretter <m.tretter@pengutronix.de>

Hi Michael,

I love your patch! Perhaps something to improve:

[auto build test WARNING on media-tree/master]
[also build test WARNING on robh/for-next linus/master v5.16-rc3 next-20211201]
[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/Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304
base:   git://linuxtv.org/media_tree.git master
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: i386-randconfig-c001-20211130 (https://download.01.org/0day-ci/archive/20211202/202112020202.xy1qDFOU-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 25eb7fa01d7ebbe67648ea03841cda55b4239ab2)
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/0cd375b25d1d515c40b89e8aaffd0456a19ecffb
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304
        git checkout 0cd375b25d1d515c40b89e8aaffd0456a19ecffb
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   include/linux/spinlock.h:333:2: note: expanded from macro 'spin_lock_init'
           __raw_spin_lock_init(spinlock_check(lock),              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wan/pc300too.c:435:3: note: Loop condition is false.  Exiting loop
                   spin_lock_init(&port->lock);
                   ^
   include/linux/spinlock.h:329:35: note: expanded from macro 'spin_lock_init'
   # define spin_lock_init(lock)                                   \
                                                                   ^
   drivers/net/wan/pc300too.c:445:7: note: Assuming field 'type' is not equal to PC300_X21
                   if (card->type == PC300_X21)
                       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wan/pc300too.c:445:3: note: Taking false branch
                   if (card->type == PC300_X21)
                   ^
   drivers/net/wan/pc300too.c:450:3: note: Calling 'sca_init_port'
                   sca_init_port(port);
                   ^~~~~~~~~~~~~~~~~~~
   drivers/net/wan/hd64572.c:123:16: note: Assuming field 'chan' is 0
           u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port);
                         ^
   drivers/net/wan/hd64572.c:45:28: note: expanded from macro 'get_dmac_rx'
   #define get_dmac_rx(port) ((port)->chan ? DMAC1RX_OFFSET : DMAC0RX_OFFSET)
                              ^~~~~~~~~~~~
   drivers/net/wan/hd64572.c:123:16: note: '?' condition is false
           u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port);
                         ^
   drivers/net/wan/hd64572.c:45:28: note: expanded from macro 'get_dmac_rx'
   #define get_dmac_rx(port) ((port)->chan ? DMAC1RX_OFFSET : DMAC0RX_OFFSET)
                              ^
   drivers/net/wan/hd64572.c:123:45: note: Field 'chan' is 0
           u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port);
                                                      ^
   drivers/net/wan/hd64572.c:46:36: note: expanded from macro 'get_dmac_tx'
   #define get_dmac_tx(port) ((port)->chan ? DMAC1TX_OFFSET : DMAC0TX_OFFSET)
                                      ^
   drivers/net/wan/hd64572.c:123:45: note: '?' condition is false
           u16 dmac_rx = get_dmac_rx(port), dmac_tx = get_dmac_tx(port);
                                                      ^
   drivers/net/wan/hd64572.c:46:28: note: expanded from macro 'get_dmac_tx'
   #define get_dmac_tx(port) ((port)->chan ? DMAC1TX_OFFSET : DMAC0TX_OFFSET)
                              ^
   drivers/net/wan/hd64572.c:130:2: note: Loop condition is true.  Entering loop body
           for (transmit = 0; transmit < 2; transmit++) {
           ^
   drivers/net/wan/hd64572.c:131:15: note: 'transmit' is 0
                   u16 buffs = transmit ? card->tx_ring_buffers
                               ^~~~~~~~
   drivers/net/wan/hd64572.c:131:15: note: '?' condition is false
   drivers/net/wan/hd64572.c:134:15: note: Assuming 'i' is >= 'buffs'
                   for (i = 0; i < buffs; i++) {
                               ^~~~~~~~~
   drivers/net/wan/hd64572.c:134:3: note: Loop condition is false. Execution continues on line 130
                   for (i = 0; i < buffs; i++) {
                   ^
   drivers/net/wan/hd64572.c:130:2: note: Loop condition is true.  Entering loop body
           for (transmit = 0; transmit < 2; transmit++) {
           ^
   drivers/net/wan/hd64572.c:131:15: note: 'transmit' is 1
                   u16 buffs = transmit ? card->tx_ring_buffers
                               ^~~~~~~~
   drivers/net/wan/hd64572.c:131:15: note: '?' condition is true
   drivers/net/wan/hd64572.c:134:15: note: Assuming 'i' is >= 'buffs'
                   for (i = 0; i < buffs; i++) {
                               ^~~~~~~~~
   drivers/net/wan/hd64572.c:134:3: note: Loop condition is false. Execution continues on line 130
                   for (i = 0; i < buffs; i++) {
                   ^
   drivers/net/wan/hd64572.c:130:2: note: Loop condition is false. Execution continues on line 147
           for (transmit = 0; transmit < 2; transmit++) {
           ^
   drivers/net/wan/hd64572.c:155:11: note: Calling 'desc_offset'
           sca_outl(desc_offset(port, 0, 0), dmac_rx + CDAL, card);
                    ^
   drivers/net/wan/hd64572.c:53:45: note: expanded from macro 'sca_outl'
   #define sca_outl(value, reg, card)   writel(value, (card)->scabase + (reg))
                                               ^~~~~
   drivers/net/wan/hd64572.c:87:9: note: Calling 'desc_abs_number'
           return desc_abs_number(port, desc, transmit) * sizeof(pkt_desc);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wan/hd64572.c:77:2: note: 'rx_buffs' initialized to 0
           u16 rx_buffs = port->card->rx_ring_buffers;
           ^~~~~~~~~~~~
   drivers/net/wan/hd64572.c:80:11: note: 'transmit' is 0
           desc %= (transmit ? tx_buffs : rx_buffs); // called with "X + 1" etc.
                    ^~~~~~~~
   drivers/net/wan/hd64572.c:80:11: note: '?' condition is false
   drivers/net/wan/hd64572.c:80:7: note: Division by zero
           desc %= (transmit ? tx_buffs : rx_buffs); // called with "X + 1" etc.
           ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   9 warnings generated.
>> drivers/media/i2c/isl7998x.c:642:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = isl7998x->subdev.dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:642:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = isl7998x->subdev.dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:863:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = &client->dev;
                          ^~~   ~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:863:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = &client->dev;
                          ^~~   ~~~~~~~~~~~~
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   11 warnings generated.
   drivers/media/i2c/rdacm21.c:373:11: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   if (val == OV10640_ID_HIGH)
                           ^
   drivers/media/i2c/rdacm21.c:550:6: note: Assuming 'dev' is non-null
           if (!dev)
               ^~~~
   drivers/media/i2c/rdacm21.c:550:2: note: Taking false branch
           if (!dev)
           ^
   drivers/media/i2c/rdacm21.c:557:6: note: 'ret' is >= 0
           if (ret < 0) {
               ^~~
   drivers/media/i2c/rdacm21.c:557:2: note: Taking false branch
           if (ret < 0) {
           ^
   drivers/media/i2c/rdacm21.c:564:2: note: Taking false branch
           if (IS_ERR(dev->isp))
           ^
   drivers/media/i2c/rdacm21.c:567:8: note: Calling 'rdacm21_initialize'
           ret = rdacm21_initialize(dev);
                 ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/rdacm21.c:481:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:481:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:489:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:489:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:493:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:493:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:501:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:501:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:505:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:505:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:510:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:510:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:514:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:514:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:520:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:520:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:526:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:526:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:530:8: note: Calling 'ov490_initialize'
           ret = ov490_initialize(dev);
                 ^~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/rdacm21.c:399:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < OV490_PID_TIMEOUT; ++i) {

vim +/dev +642 drivers/media/i2c/isl7998x.c

0cd375b25d1d51 Marek Vasut 2021-11-29  629  
0cd375b25d1d51 Marek Vasut 2021-11-29  630  static int isl7998x_init(struct isl7998x *isl7998x)
0cd375b25d1d51 Marek Vasut 2021-11-29  631  {
0cd375b25d1d51 Marek Vasut 2021-11-29  632  	const unsigned int lanes = isl7998x->nr_mipi_lanes;
0cd375b25d1d51 Marek Vasut 2021-11-29  633  	const u32 isl7998x_video_in_chan_map[] = { 0x00, 0x11, 0x02, 0x02 };
0cd375b25d1d51 Marek Vasut 2021-11-29  634  	const struct reg_sequence isl7998x_init_seq_custom[] = {
0cd375b25d1d51 Marek Vasut 2021-11-29  635  		{ ISL7998x_REG_P0_VIDEO_IN_CHAN_CTL,
0cd375b25d1d51 Marek Vasut 2021-11-29  636  		  isl7998x_video_in_chan_map[isl7998x->nr_inputs - 1] },
0cd375b25d1d51 Marek Vasut 2021-11-29  637  		{ ISL7998x_REG_P0_CLK_CTL_4,
0cd375b25d1d51 Marek Vasut 2021-11-29  638  		  (lanes == 1) ? 0x40 : 0x41 },
0cd375b25d1d51 Marek Vasut 2021-11-29  639  		{ ISL7998x_REG_P5_LI_ENGINE_CTL,
0cd375b25d1d51 Marek Vasut 2021-11-29  640  		  (lanes == 1) ? 0x01 : 0x02 },
0cd375b25d1d51 Marek Vasut 2021-11-29  641  	};
0cd375b25d1d51 Marek Vasut 2021-11-29 @642  	struct device *dev = isl7998x->subdev.dev;
0cd375b25d1d51 Marek Vasut 2021-11-29  643  	struct regmap *regmap = isl7998x->regmap;
0cd375b25d1d51 Marek Vasut 2021-11-29  644  	int ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  645  
0cd375b25d1d51 Marek Vasut 2021-11-29  646  	dev_dbg(dev, "configuring %d lanes for %d inputs (norm 0x%llx)\n",
0cd375b25d1d51 Marek Vasut 2021-11-29  647  		isl7998x->nr_mipi_lanes, isl7998x->nr_inputs,
0cd375b25d1d51 Marek Vasut 2021-11-29  648  		isl7998x->norm);
0cd375b25d1d51 Marek Vasut 2021-11-29  649  
0cd375b25d1d51 Marek Vasut 2021-11-29  650  	ret = regmap_register_patch(regmap, isl7998x_init_seq_1,
0cd375b25d1d51 Marek Vasut 2021-11-29  651  				    ARRAY_SIZE(isl7998x_init_seq_1));
0cd375b25d1d51 Marek Vasut 2021-11-29  652  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  653  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  654  
0cd375b25d1d51 Marek Vasut 2021-11-29  655  	ret = isl7998x_set_standard(isl7998x, isl7998x->norm);
0cd375b25d1d51 Marek Vasut 2021-11-29  656  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  657  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  658  
0cd375b25d1d51 Marek Vasut 2021-11-29  659  	ret = regmap_register_patch(regmap, isl7998x_init_seq_custom,
0cd375b25d1d51 Marek Vasut 2021-11-29  660  				    ARRAY_SIZE(isl7998x_init_seq_custom));
0cd375b25d1d51 Marek Vasut 2021-11-29  661  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  662  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  663  
0cd375b25d1d51 Marek Vasut 2021-11-29  664  	return regmap_register_patch(regmap, isl7998x_init_seq_2,
0cd375b25d1d51 Marek Vasut 2021-11-29  665  				     ARRAY_SIZE(isl7998x_init_seq_2));
0cd375b25d1d51 Marek Vasut 2021-11-29  666  }
0cd375b25d1d51 Marek Vasut 2021-11-29  667  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread
* Re: [PATCH v9 3/3] media: i2c: isl7998x: Add driver for Intersil ISL7998x
@ 2021-12-04  5:12 kernel test robot
  0 siblings, 0 replies; 12+ messages in thread
From: kernel test robot @ 2021-12-04  5:12 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 15742 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20211129112708.3219754-4-m.tretter@pengutronix.de>
References: <20211129112708.3219754-4-m.tretter@pengutronix.de>
TO: Michael Tretter <m.tretter@pengutronix.de>
TO: linux-media(a)vger.kernel.org
TO: devicetree(a)vger.kernel.org
TO: Marek Vasut <marex@denx.de>
CC: Rob Herring <robh+dt@kernel.org>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: Sakari Ailus <sakari.ailus@linux.intel.com>
CC: p.zabel(a)pengutronix.de
CC: Ian Arkver <ian.arkver.dev@gmail.com>
CC: kernel(a)pengutronix.de
CC: Michael Tretter <m.tretter@pengutronix.de>

Hi Michael,

I love your patch! Perhaps something to improve:

[auto build test WARNING on media-tree/master]
[also build test WARNING on robh/for-next linus/master v5.16-rc3 next-20211203]
[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/Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304
base:   git://linuxtv.org/media_tree.git master
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: i386-randconfig-c001-20211130 (https://download.01.org/0day-ci/archive/20211204/202112041345.avl2qjN6-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 25eb7fa01d7ebbe67648ea03841cda55b4239ab2)
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/0cd375b25d1d515c40b89e8aaffd0456a19ecffb
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Michael-Tretter/media-i2c-isl7998x-Add-driver-for-Intersil-ISL7998x/20211129-204304
        git checkout 0cd375b25d1d515c40b89e8aaffd0456a19ecffb
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                         ^
   mm/mmap.c:3132:6: note: Assuming the condition is false
           if (unlikely(mm_is_oom_victim(mm))) {
               ^
   include/linux/compiler.h:78:22: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/mmap.c:3132:2: note: Taking false branch
           if (unlikely(mm_is_oom_victim(mm))) {
           ^
   mm/mmap.c:3156:6: note: Assuming field 'locked_vm' is 0
           if (mm->locked_vm)
               ^~~~~~~~~~~~~
   mm/mmap.c:3156:2: note: Taking false branch
           if (mm->locked_vm)
           ^
   mm/mmap.c:3159:2: note: Calling 'arch_exit_mmap'
           arch_exit_mmap(mm);
           ^~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/mmu_context.h:176:2: note: Calling 'paravirt_arch_exit_mmap'
           paravirt_arch_exit_mmap(mm);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt.h:97:2: note: Assigned value is garbage or undefined
           PVOP_VCALL1(mmu.exit_mmap, mm);
           ^
   arch/x86/include/asm/paravirt_types.h:531:2: note: expanded from macro 'PVOP_VCALL1'
           __PVOP_VCALL(op, PVOP_CALL_ARG1(arg1))
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:492:8: note: expanded from macro '__PVOP_VCALL'
           (void)____PVOP_CALL(, op, CLBR_ANY, PVOP_VCALL_CLOBBERS,        \
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:447:3: note: expanded from macro '____PVOP_CALL'
                   PVOP_CALL_ARGS;                                         \
                   ^~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:387:16: note: expanded from macro 'PVOP_CALL_ARGS'
           unsigned long __eax = __eax, __edx = __edx, __ecx = __ecx;
                         ^       ~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   arch/x86/include/asm/paravirt.h:55:2: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           PVOP_VCALL0(cpu.io_delay);
           ^
   arch/x86/include/asm/paravirt_types.h:512:2: note: expanded from macro 'PVOP_VCALL0'
           __PVOP_VCALL(op)
           ^
   arch/x86/include/asm/paravirt_types.h:492:8: note: expanded from macro '__PVOP_VCALL'
           (void)____PVOP_CALL(, op, CLBR_ANY, PVOP_VCALL_CLOBBERS,        \
                 ^
   arch/x86/include/asm/paravirt_types.h:447:3: note: expanded from macro '____PVOP_CALL'
                   PVOP_CALL_ARGS;                                         \
                   ^
   arch/x86/include/asm/paravirt_types.h:387:16: note: expanded from macro 'PVOP_CALL_ARGS'
           unsigned long __eax = __eax, __edx = __edx, __ecx = __ecx;
                         ^
   drivers/watchdog/advantechwdt.c:295:2: note: Calling 'advwdt_disable'
           advwdt_disable();
           ^~~~~~~~~~~~~~~~
   drivers/watchdog/advantechwdt.c:94:2: note: Calling 'inb_p'
           inb_p(wdt_stop);
           ^
   arch/x86/include/asm/io.h:341:15: note: expanded from macro 'inb_p'
   #define inb_p inb_p
                 ^
   arch/x86/include/asm/io.h:334:1: note: Calling 'slow_down_io'
   BUILDIO(b, b, char)
   ^
   arch/x86/include/asm/io.h:298:2: note: expanded from macro 'BUILDIO'
           slow_down_io();                                                 \
           ^~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt.h:55:2: note: Assigned value is garbage or undefined
           PVOP_VCALL0(cpu.io_delay);
           ^
   arch/x86/include/asm/paravirt_types.h:512:2: note: expanded from macro 'PVOP_VCALL0'
           __PVOP_VCALL(op)
           ^~~~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:492:8: note: expanded from macro '__PVOP_VCALL'
           (void)____PVOP_CALL(, op, CLBR_ANY, PVOP_VCALL_CLOBBERS,        \
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:447:3: note: expanded from macro '____PVOP_CALL'
                   PVOP_CALL_ARGS;                                         \
                   ^~~~~~~~~~~~~~
   arch/x86/include/asm/paravirt_types.h:387:16: note: expanded from macro 'PVOP_CALL_ARGS'
           unsigned long __eax = __eax, __edx = __edx, __ecx = __ecx;
                         ^       ~~~~~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   9 warnings generated.
>> drivers/media/i2c/isl7998x.c:642:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = isl7998x->subdev.dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:642:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = isl7998x->subdev.dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:863:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = &client->dev;
                          ^~~   ~~~~~~~~~~~~
   drivers/media/i2c/isl7998x.c:863:17: note: Value stored to 'dev' during its initialization is never read
           struct device *dev = &client->dev;
                          ^~~   ~~~~~~~~~~~~
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   11 warnings generated.
   drivers/media/i2c/rdacm21.c:373:11: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   if (val == OV10640_ID_HIGH)
                           ^
   drivers/media/i2c/rdacm21.c:550:6: note: Assuming 'dev' is non-null
           if (!dev)
               ^~~~
   drivers/media/i2c/rdacm21.c:550:2: note: Taking false branch
           if (!dev)
           ^
   drivers/media/i2c/rdacm21.c:557:6: note: 'ret' is >= 0
           if (ret < 0) {
               ^~~
   drivers/media/i2c/rdacm21.c:557:2: note: Taking false branch
           if (ret < 0) {
           ^
   drivers/media/i2c/rdacm21.c:564:2: note: Taking false branch
           if (IS_ERR(dev->isp))
           ^
   drivers/media/i2c/rdacm21.c:567:8: note: Calling 'rdacm21_initialize'
           ret = rdacm21_initialize(dev);
                 ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/rdacm21.c:481:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:481:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:489:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:489:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:493:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:493:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:501:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:501:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:505:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:505:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:510:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:510:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:514:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:514:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:520:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:520:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:526:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/i2c/rdacm21.c:526:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/i2c/rdacm21.c:530:8: note: Calling 'ov490_initialize'
           ret = ov490_initialize(dev);
                 ^~~~~~~~~~~~~~~~~~~~~
   drivers/media/i2c/rdacm21.c:399:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < OV490_PID_TIMEOUT; ++i) {

vim +/dev +642 drivers/media/i2c/isl7998x.c

0cd375b25d1d51 Marek Vasut 2021-11-29  629  
0cd375b25d1d51 Marek Vasut 2021-11-29  630  static int isl7998x_init(struct isl7998x *isl7998x)
0cd375b25d1d51 Marek Vasut 2021-11-29  631  {
0cd375b25d1d51 Marek Vasut 2021-11-29  632  	const unsigned int lanes = isl7998x->nr_mipi_lanes;
0cd375b25d1d51 Marek Vasut 2021-11-29  633  	const u32 isl7998x_video_in_chan_map[] = { 0x00, 0x11, 0x02, 0x02 };
0cd375b25d1d51 Marek Vasut 2021-11-29  634  	const struct reg_sequence isl7998x_init_seq_custom[] = {
0cd375b25d1d51 Marek Vasut 2021-11-29  635  		{ ISL7998x_REG_P0_VIDEO_IN_CHAN_CTL,
0cd375b25d1d51 Marek Vasut 2021-11-29  636  		  isl7998x_video_in_chan_map[isl7998x->nr_inputs - 1] },
0cd375b25d1d51 Marek Vasut 2021-11-29  637  		{ ISL7998x_REG_P0_CLK_CTL_4,
0cd375b25d1d51 Marek Vasut 2021-11-29  638  		  (lanes == 1) ? 0x40 : 0x41 },
0cd375b25d1d51 Marek Vasut 2021-11-29  639  		{ ISL7998x_REG_P5_LI_ENGINE_CTL,
0cd375b25d1d51 Marek Vasut 2021-11-29  640  		  (lanes == 1) ? 0x01 : 0x02 },
0cd375b25d1d51 Marek Vasut 2021-11-29  641  	};
0cd375b25d1d51 Marek Vasut 2021-11-29 @642  	struct device *dev = isl7998x->subdev.dev;
0cd375b25d1d51 Marek Vasut 2021-11-29  643  	struct regmap *regmap = isl7998x->regmap;
0cd375b25d1d51 Marek Vasut 2021-11-29  644  	int ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  645  
0cd375b25d1d51 Marek Vasut 2021-11-29  646  	dev_dbg(dev, "configuring %d lanes for %d inputs (norm 0x%llx)\n",
0cd375b25d1d51 Marek Vasut 2021-11-29  647  		isl7998x->nr_mipi_lanes, isl7998x->nr_inputs,
0cd375b25d1d51 Marek Vasut 2021-11-29  648  		isl7998x->norm);
0cd375b25d1d51 Marek Vasut 2021-11-29  649  
0cd375b25d1d51 Marek Vasut 2021-11-29  650  	ret = regmap_register_patch(regmap, isl7998x_init_seq_1,
0cd375b25d1d51 Marek Vasut 2021-11-29  651  				    ARRAY_SIZE(isl7998x_init_seq_1));
0cd375b25d1d51 Marek Vasut 2021-11-29  652  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  653  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  654  
0cd375b25d1d51 Marek Vasut 2021-11-29  655  	ret = isl7998x_set_standard(isl7998x, isl7998x->norm);
0cd375b25d1d51 Marek Vasut 2021-11-29  656  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  657  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  658  
0cd375b25d1d51 Marek Vasut 2021-11-29  659  	ret = regmap_register_patch(regmap, isl7998x_init_seq_custom,
0cd375b25d1d51 Marek Vasut 2021-11-29  660  				    ARRAY_SIZE(isl7998x_init_seq_custom));
0cd375b25d1d51 Marek Vasut 2021-11-29  661  	if (ret)
0cd375b25d1d51 Marek Vasut 2021-11-29  662  		return ret;
0cd375b25d1d51 Marek Vasut 2021-11-29  663  
0cd375b25d1d51 Marek Vasut 2021-11-29  664  	return regmap_register_patch(regmap, isl7998x_init_seq_2,
0cd375b25d1d51 Marek Vasut 2021-11-29  665  				     ARRAY_SIZE(isl7998x_init_seq_2));
0cd375b25d1d51 Marek Vasut 2021-11-29  666  }
0cd375b25d1d51 Marek Vasut 2021-11-29  667  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-12-16 12:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-29 11:27 [PATCH v9 0/3] media: i2c: isl7998x: Add driver for Intersil ISL7998x Michael Tretter
2021-11-29 11:27 ` [PATCH v9 1/3] media: imx6-mipi-csi2: use pre_streamon callback to set sensor into LP11 Michael Tretter
2021-11-29 11:27 ` [PATCH v9 2/3] media: dt-bindings: Add Intersil ISL79987 DT bindings Michael Tretter
2021-11-29 11:27 ` [PATCH v9 3/3] media: i2c: isl7998x: Add driver for Intersil ISL7998x Michael Tretter
2021-12-02  8:31   ` Sakari Ailus
2021-12-03  8:28     ` Michael Tretter
2021-12-14 10:14   ` Mauro Carvalho Chehab
2021-12-16 11:41     ` Michael Tretter
2021-12-16 11:57       ` Marek Vasut
2021-12-16 12:12       ` Mauro Carvalho Chehab
  -- strict thread matches above, loose matches on Subject: below --
2021-12-01 18:49 kernel test robot
2021-12-04  5:12 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.