CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]
CC: Laurent Pinchart <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   107c948d1d3e61d10aee9d0f7c3d81bbee9842af
commit: ee4a77a32b39064fdab0aa2b36bbd35ebf57e077 media: platform: place Renesas 
drivers on a separate dir
date:   7 weeks ago
:::::: branch date: 20 hours ago
:::::: commit date: 7 weeks ago
config: arm-randconfig-c002-20220427 
(https://download.01.org/0day-ci/archive/20220505/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
1cddcfdc3c683b393df1a5c9063252eb60e52818)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ee4a77a32b39064fdab0aa2b36bbd35ebf57e077
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout ee4a77a32b39064fdab0aa2b36bbd35ebf57e077
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/nvmem/core.c:1601:8: note: Returning from 'nvmem_cell_read'
           buf = nvmem_cell_read(cell, &len);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1602:2: note: Taking false branch
           if (IS_ERR(buf)) {
           ^
   drivers/nvmem/core.c:1606:10: note: The left operand of '!=' is a garbage 
value
           if (len != count) {
               ~~~ ^
   drivers/nvmem/core.c:1703:11: warning: The left operand of '>' is a garbage 
value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (*len > max_len) {
                    ^
   drivers/nvmem/core.c:1754:2: note: 'len' declared without an initial value
           size_t len;
           ^~~~~~~~~~
   drivers/nvmem/core.c:1758:8: note: Calling 'nvmem_cell_read_variable_common'
           buf = nvmem_cell_read_variable_common(dev, cell_id, sizeof(*val), 
&len);
                 
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1687:2: note: Taking false branch
           if (IS_ERR(cell))
           ^
   drivers/nvmem/core.c:1691:8: note: Calling 'nvmem_cell_read'
           buf = nvmem_cell_read(cell, len);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1477:6: note: Assuming 'nvmem' is non-null
           if (!nvmem)
               ^~~~~~
   drivers/nvmem/core.c:1477:2: note: Taking false branch
           if (!nvmem)
           ^
   drivers/nvmem/core.c:1481:6: note: Assuming 'buf' is non-null
           if (!buf)
               ^~~~
   drivers/nvmem/core.c:1481:2: note: Taking false branch
           if (!buf)
           ^
   drivers/nvmem/core.c:1484:7: note: Calling '__nvmem_cell_read'
           rc = __nvmem_cell_read(nvmem, cell->entry, buf, len, cell->id);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1441:6: note: Assuming 'rc' is not equal to 0
           if (rc)
               ^~
   drivers/nvmem/core.c:1441:2: note: Taking true branch
           if (rc)
           ^
   drivers/nvmem/core.c:1484:7: note: Returning from '__nvmem_cell_read'
           rc = __nvmem_cell_read(nvmem, cell->entry, buf, len, cell->id);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1485:6: note: 'rc' is not equal to 0
           if (rc) {
               ^~
   drivers/nvmem/core.c:1485:2: note: Taking true branch
           if (rc) {
           ^
   drivers/nvmem/core.c:1691:8: note: Returning from 'nvmem_cell_read'
           buf = nvmem_cell_read(cell, len);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvmem/core.c:1693:2: note: Taking false branch
           if (IS_ERR(buf))
           ^
   drivers/nvmem/core.c:1700:6: note: Assuming 'nbits' is 0
           if (nbits)
               ^~~~~
   drivers/nvmem/core.c:1700:2: note: Taking false branch
           if (nbits)
           ^
   drivers/nvmem/core.c:1703:11: note: The left operand of '>' is a garbage 
value
           if (*len > max_len) {
               ~~~~ ^
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   2 warnings generated.
   drivers/media/platform/qcom/venus/venc.c:877:3: warning: Value stored to 
'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = hfi_session_set_property(inst, ptype, &en);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/qcom/venus/venc.c:877:3: note: Value stored to 'ret' 
is never read
                   ret = hfi_session_set_property(inst, ptype, &en);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   2 warnings generated.
   drivers/media/platform/renesas/rcar_jpu.c:1551:17: warning: Value stored to 
'error' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
                   unsigned char error = jpu_read(jpu, JCDERR) & JCDERR_MASK;
                                 ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/rcar_jpu.c:1551:17: note: Value stored to 
'error' during its initialization is never read
                   unsigned char error = jpu_read(jpu, JCDERR) & JCDERR_MASK;
                                 ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 with check filters).
   5 warnings generated.
>> drivers/media/platform/renesas/sh_vou.c:371:24: warning: Value stored to 
>> 'vou_dev' during its initialization is never read 
>> [clang-analyzer-deadcode.DeadStores]
           struct sh_vou_device *vou_dev = video_drvdata(file);
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:371:24: note: Value stored to 
'vou_dev' during its initialization is never read
           struct sh_vou_device *vou_dev = video_drvdata(file);
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:385:24: warning: Value stored to 
'vou_dev' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
           struct sh_vou_device *vou_dev = video_drvdata(file);
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:385:24: note: Value stored to 
'vou_dev' during its initialization is never read
           struct sh_vou_device *vou_dev = video_drvdata(file);
                                 ^~~~~~~   ~~~~~~~~~~~~~~~~~~~
>> drivers/media/platform/renesas/sh_vou.c:483:23: warning: The right operand 
>> of '|' is a garbage value due to array index out of bounds 
>> [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   vouvcr |= (1 << 14) | vou_scale_v_fld[h_idx - 1];
                                       ^
   drivers/media/platform/renesas/sh_vou.c:1234:6: note: Assuming 'vou_pdata' 
is non-null
           if (!vou_pdata || !reg_res || irq <= 0) {
               ^~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1234:6: note: Left side of '||' is 
false
   drivers/media/platform/renesas/sh_vou.c:1234:20: note: Assuming 'reg_res' is 
non-null
           if (!vou_pdata || !reg_res || irq <= 0) {
                             ^~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1234:6: note: Left side of '||' is 
false
           if (!vou_pdata || !reg_res || irq <= 0) {
               ^
   drivers/media/platform/renesas/sh_vou.c:1234:32: note: Assuming 'irq' is > 0
           if (!vou_pdata || !reg_res || irq <= 0) {
                                         ^~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1234:2: note: Taking false branch
           if (!vou_pdata || !reg_res || irq <= 0) {
           ^
   drivers/media/platform/renesas/sh_vou.c:1240:6: note: Assuming 'vou_dev' is 
non-null
           if (!vou_dev)
               ^~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1240:2: note: Taking false branch
           if (!vou_dev)
           ^
   drivers/media/platform/renesas/sh_vou.c:1244:2: note: Loop condition is 
false.  Exiting loop
           spin_lock_init(&vou_dev->lock);
           ^
   include/linux/spinlock.h:339:34: note: expanded from macro 'spin_lock_init'
   # define spin_lock_init(_lock)                  \
                                                   ^
   drivers/media/platform/renesas/sh_vou.c:1245:2: note: Loop condition is 
false.  Exiting loop
           mutex_init(&vou_dev->fop_lock);
           ^
   include/linux/mutex.h:101:32: note: expanded from macro 'mutex_init'
   #define mutex_init(mutex)                                               \
                                                                           ^
   drivers/media/platform/renesas/sh_vou.c:1268:2: note: Taking false branch
           if (IS_ERR(vou_dev->base))
           ^
   drivers/media/platform/renesas/sh_vou.c:1272:6: note: Assuming 'ret' is >= 0
           if (ret < 0)
               ^~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1272:2: note: Taking false branch
           if (ret < 0)
           ^
   drivers/media/platform/renesas/sh_vou.c:1276:6: note: Assuming 'ret' is >= 0
           if (ret < 0) {
               ^~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1276:2: note: Taking false branch
           if (ret < 0) {
           ^
   drivers/media/platform/renesas/sh_vou.c:1283:6: note: Assuming field 
'bus_fmt' is not equal to SH_VOU_BUS_8BIT
           if (vou_pdata->bus_fmt == SH_VOU_BUS_8BIT)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1283:2: note: Taking false branch
           if (vou_pdata->bus_fmt == SH_VOU_BUS_8BIT)
           ^
   drivers/media/platform/renesas/sh_vou.c:1304:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/media/platform/renesas/sh_vou.c:1304:2: note: Taking false branch
           if (ret)
           ^
   drivers/media/platform/renesas/sh_vou.c:1314:6: note: Assuming 'i2c_adap' is 
non-null
           if (!i2c_adap) {
               ^~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1314:2: note: Taking false branch
           if (!i2c_adap) {
           ^
   drivers/media/platform/renesas/sh_vou.c:1319:8: note: Calling 
'sh_vou_hw_init'
           ret = sh_vou_hw_init(vou_dev);
                 ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1095:9: note: Left side of '&&' is 
true
           while (--i && (sh_vou_reg_a_read(vou_dev, VOUSRR) & 0x101))
                  ^
   drivers/media/platform/renesas/sh_vou.c:1095:2: note: Loop condition is 
false. Execution continues on line 1098
           while (--i && (sh_vou_reg_a_read(vou_dev, VOUSRR) & 0x101))
           ^
   drivers/media/platform/renesas/sh_vou.c:1098:7: note: 'i' is 99
           if (!i)
                ^
   drivers/media/platform/renesas/sh_vou.c:1098:2: note: Taking false branch
           if (!i)
           ^
   drivers/media/platform/renesas/sh_vou.c:1101:2: note: Taking false branch
           dev_dbg(vou_dev->v4l2_dev.dev, "Reset took %dus\n", 100 - i);
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/media/platform/renesas/sh_vou.c:1103:6: note: Assuming the condition 
is false
           if (pdata->flags & SH_VOU_PCLK_FALLING)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1103:2: note: Taking false branch
           if (pdata->flags & SH_VOU_PCLK_FALLING)
           ^
   drivers/media/platform/renesas/sh_vou.c:1105:6: note: Assuming the condition 
is false
           if (pdata->flags & SH_VOU_HSYNC_LOW)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1105:2: note: Taking false branch
--
           ^
   drivers/media/platform/renesas/sh_vou.c:524:2: note: Loop condition is true. 
 Entering loop body
           for (i = ARRAY_SIZE(vou_scale_h_num) - 1; i >= 0; i--) {
           ^
   drivers/media/platform/renesas/sh_vou.c:529:7: note: Assuming 'found' is <= 
VOU_MAX_IMAGE_WIDTH
                   if (found > VOU_MAX_IMAGE_WIDTH)
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:529:3: note: Taking false branch
                   if (found > VOU_MAX_IMAGE_WIDTH)
                   ^
   drivers/media/platform/renesas/sh_vou.c:533:9: note: '__x' is >= 0
                   err = abs(found - geo->in_width);
                         ^
   include/linux/math.h:133:3: note: expanded from macro 'abs'
                   __abs_choose_expr(x, int,                               \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/math.h:144:28: note: expanded from macro '__abs_choose_expr'
           ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
                                     ^~~
   include/linux/math.h:144:54: note: expanded from macro '__abs_choose_expr'
           ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
                                                               ^~~~~
   include/linux/math.h:144:54: note: expanded from macro '__abs_choose_expr'
           ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
                                                               ^~~~~
   drivers/media/platform/renesas/sh_vou.c:533:9: note: '?' condition is false
                   err = abs(found - geo->in_width);
                         ^
   include/linux/math.h:133:3: note: expanded from macro 'abs'
                   __abs_choose_expr(x, int,                               \
                   ^
   include/linux/math.h:144:28: note: expanded from macro '__abs_choose_expr'
           ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
                                     ^
   drivers/media/platform/renesas/sh_vou.c:534:7: note: Assuming 'err' is < 
'best_err'
                   if (err < best_err) {
                       ^~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:534:3: note: Taking true branch
                   if (err < best_err) {
                   ^
   drivers/media/platform/renesas/sh_vou.c:539:7: note: Assuming 'err' is 0
                   if (!err)
                       ^~~~
   drivers/media/platform/renesas/sh_vou.c:539:3: note: Taking true branch
                   if (!err)
                   ^
   drivers/media/platform/renesas/sh_vou.c:540:4: note:  Execution continues on 
line 543
                           break;
                           ^
   drivers/media/platform/renesas/sh_vou.c:549:2: note: Loop condition is true. 
 Entering loop body
           for (i = ARRAY_SIZE(vou_scale_v_num) - 1; i >= 0; i--) {
           ^
   drivers/media/platform/renesas/sh_vou.c:554:7: note: Assuming 'found' is > 
'img_height_max'
                   if (found > img_height_max)
                       ^~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:554:3: note: Taking true branch
                   if (found > img_height_max)
                   ^
   drivers/media/platform/renesas/sh_vou.c:556:4: note:  Execution continues on 
line 568
                           break;
                           ^
   drivers/media/platform/renesas/sh_vou.c:569:2: note: The value 4 is assigned 
to 'geo.scale_idx_v', which participates in a condition later
           geo->scale_idx_v = idx;
           ^~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:743:3: note: Returning from 
'vou_adjust_input'
                   vou_adjust_input(&geo, vou_dev->std);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:751:2: note: Taking false branch
           dev_dbg(vou_dev->v4l2_dev.dev, "%s(): %ux%u\n", __func__,
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/media/platform/renesas/sh_vou.c:758:2: note: Calling 
'sh_vou_configure_geometry'
           sh_vou_configure_geometry(vou_dev, pix_idx,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:427:2: note: Taking false branch
           if (vou_dev->std & V4L2_STD_525_60) {
           ^
   drivers/media/platform/renesas/sh_vou.c:464:2: note: Taking false branch
           dev_dbg(vou_dev->v4l2_dev.dev,
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/media/platform/renesas/sh_vou.c:480:6: note: 'w_idx' is 4
           if (w_idx)
               ^~~~~
   drivers/media/platform/renesas/sh_vou.c:480:2: note: Taking true branch
           if (w_idx)
           ^
   drivers/media/platform/renesas/sh_vou.c:482:6: note: 'h_idx' is 4
           if (h_idx)
               ^~~~~
   drivers/media/platform/renesas/sh_vou.c:482:2: note: Taking true branch
           if (h_idx)
           ^
   drivers/media/platform/renesas/sh_vou.c:483:23: note: The right operand of 
'|' is a garbage value due to array index out of bounds
                   vouvcr |= (1 << 14) | vou_scale_v_fld[h_idx - 1];
                                       ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/media/platform/renesas/sh_vou.c:1021:6: warning: Value stored to 
>> 'vou_status' during its initialization is never read 
>> [clang-analyzer-deadcode.DeadStores]
           u32 vou_status = sh_vou_reg_a_read(vou_dev, VOUSTR);
               ^~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/renesas/sh_vou.c:1021:6: note: Value stored to 
'vou_status' during its initialization is never read
           u32 vou_status = sh_vou_reg_a_read(vou_dev, VOUSTR);
               ^~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   drivers/mmc/host/sdhci.c:924:3: warning: Division by zero 
[clang-analyzer-core.DivideZero]
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:235:25: note: expanded from macro 'do_div'
                   __rem = (uint32_t)(n) % __base;         \
                           ~~~~~~~~~~~~~~^~~~~~~~
   drivers/mmc/host/sdhci.c:917:19: note: Calling 'sdhci_target_timeout'
           target_timeout = sdhci_target_timeout(host, cmd, data);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/sdhci.c:883:6: note: Assuming 'data' is non-null, which 
participates in a condition later
           if (!data) {
               ^~~~~
   drivers/mmc/host/sdhci.c:883:2: note: Taking false branch
           if (!data) {
           ^
   drivers/mmc/host/sdhci.c:887:7: note: Assuming field 'clock' is 0
                   if (host->clock && data->timeout_clks) {
                       ^~~~~~~~~~~
   drivers/mmc/host/sdhci.c:887:19: note: Left side of '&&' is false
                   if (host->clock && data->timeout_clks) {
                                   ^
   drivers/mmc/host/sdhci.c:917:19: note: Returning from 'sdhci_target_timeout'
           target_timeout = sdhci_target_timeout(host, cmd, data);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/sdhci.c:920:6: note: 'data' is non-null
           if (data) {
               ^~~~
   drivers/mmc/host/sdhci.c:920:2: note: Taking true branch
           if (data) {
           ^
   drivers/mmc/host/sdhci.c:922:10: note: '?' condition is false
                   freq = mmc->actual_clock ? : host->clock;
                          ^
   drivers/mmc/host/sdhci.c:922:3: note: The value 0 is assigned to 'freq'
                   freq = mmc->actual_clock ? : host->clock;
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/mmc/host/sdhci.c:924:3: note: '__base' initialized to 0
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:220:2: note: expanded from macro 'do_div'
           uint32_t __base = (base);                       \
           ^~~~~~~~~~~~~~~
   drivers/mmc/host/sdhci.c:924:3: note: Left side of '&&' is false
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:223:35: note: expanded from macro 'do_div'
           if (__builtin_constant_p(__base) &&             \
                                            ^
   drivers/mmc/host/sdhci.c:924:3: note: Left side of '&&' is false
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:227:42: note: expanded from macro 'do_div'
           } else if (__builtin_constant_p(__base) &&      \
                                                   ^
   drivers/mmc/host/sdhci.c:924:3: note: Assuming the condition is true
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:234:20: note: expanded from macro 'do_div'
           } else if (likely(((n) >> 32) == 0)) {          \
                      ~~~~~~~^~~~~~~~~~~~~~~~~
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   drivers/mmc/host/sdhci.c:924:3: note: Taking true branch
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:234:9: note: expanded from macro 'do_div'
           } else if (likely(((n) >> 32) == 0)) {          \
                  ^
   drivers/mmc/host/sdhci.c:924:3: note: Division by zero
                   do_div(transfer_time, freq);
                   ^
   include/asm-generic/div64.h:235:25: note: expanded from macro 'do_div'
                   __rem = (uint32_t)(n) % __base;         \
                           ~~~~~~~~~~~~~~^~~~~~~~
   1 warning generated.
   include/asm-generic/bitops/non-atomic.h:118:16: warning: Array access (from 
variable 'addr') results in a null pointer dereference 
[clang-analyzer-core.NullDereference]
           return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1)));
                         ^
   drivers/perf/arm_pmu.c:727:24: note: Assuming '____ptr' is null
           struct arm_pmu *pmu = hlist_entry_safe(node, struct arm_pmu, node);
                                 ^
   include/linux/list.h:993:5: note: expanded from macro 'hlist_entry_safe'
              ____ptr ? hlist_entry(____ptr, type, member) : NULL; \
              ^~~~~~~
   drivers/perf/arm_pmu.c:727:24: note: '?' condition is false
           struct arm_pmu *pmu = hlist_entry_safe(node, struct arm_pmu, node);
                                 ^
   include/linux/list.h:993:5: note: expanded from macro 'hlist_entry_safe'
              ____ptr ? hlist_entry(____ptr, type, member) : NULL; \
              ^
   drivers/perf/arm_pmu.c:730:7: note: Calling 'cpumask_test_cpu'
           if (!cpumask_test_cpu(cpu, &pmu->supported_cpus))

vim +/vou_dev +371 drivers/media/platform/renesas/sh_vou.c

a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 366  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 367  /* Video IOCTLs */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 368  static int sh_vou_querycap(struct file *file, void  *priv,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 369                       struct v4l2_capability *cap)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 370  {
d899eddde548b9 drivers/media/platform/sh_vou.c Laurent Pinchart      2013-01-03 
@371    struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 372  
d899eddde548b9 drivers/media/platform/sh_vou.c Laurent Pinchart      2013-01-03 
 373    dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 374  
c0decac19da390 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 
 375    strscpy(cap->card, "SuperH VOU", sizeof(cap->card));
c0decac19da390 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 
 376    strscpy(cap->driver, "sh-vou", sizeof(cap->driver));
c0decac19da390 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 
 377    strscpy(cap->bus_info, "platform:sh-vou", sizeof(cap->bus_info));
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 378    return 0;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 379  }
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 380  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 381  /* Enumerate formats, that the device can accept from the user */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 382  static int sh_vou_enum_fmt_vid_out(struct file *file, void  *priv,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 383                               struct v4l2_fmtdesc *fmt)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 384  {
d899eddde548b9 drivers/media/platform/sh_vou.c Laurent Pinchart      2013-01-03 
 385    struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 386  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 387    if (fmt->index >= ARRAY_SIZE(vou_fmt))
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 388            return -EINVAL;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 389  
d899eddde548b9 drivers/media/platform/sh_vou.c Laurent Pinchart      2013-01-03 
 390    dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 391  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 392    fmt->pixelformat = vou_fmt[fmt->index].pfmt;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 393  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 394    return 0;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 395  }
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 396  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 397  static int sh_vou_g_fmt_vid_out(struct file *file, void *priv,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 398                            struct v4l2_format *fmt)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 399  {
fd51625d6331c8 drivers/media/platform/sh_vou.c Laurent Pinchart      2013-01-03 
 400    struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 401  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 402    dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 403  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 404    fmt->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 405    fmt->fmt.pix = vou_dev->pix;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 406  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 407    return 0;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 408  }
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 409  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 410  static const unsigned char vou_scale_h_num[] = {1, 9, 2, 9, 4};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 411  static const unsigned char vou_scale_h_den[] = {1, 8, 1, 4, 1};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 412  static const unsigned char vou_scale_h_fld[] = {0, 2, 1, 3};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 413  static const unsigned char vou_scale_v_num[] = {1, 2, 4};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 414  static const unsigned char vou_scale_v_den[] = {1, 1, 1};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 415  static const unsigned char vou_scale_v_fld[] = {0, 1};
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 416  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 417  static void sh_vou_configure_geometry(struct sh_vou_device *vou_dev,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 418                                  int pix_idx, int w_idx, int h_idx)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 419  {
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 420    struct sh_vou_fmt *fmt = vou_fmt + pix_idx;
a622cc51879f70 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 
 421    unsigned int black_left, black_top, width_max,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 422            frame_in_height, frame_out_height, frame_out_top;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 423    struct v4l2_rect *rect = &vou_dev->rect;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 424    struct v4l2_pix_format *pix = &vou_dev->pix;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 425    u32 vouvcr = 0, dsr_h, dsr_v;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 426  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 427    if (vou_dev->std & V4L2_STD_525_60) {
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 428            width_max = 858;
a622cc51879f70 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 
 429            /* height_max = 262; */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 430    } else {
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 431            width_max = 864;
a622cc51879f70 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 
 432            /* height_max = 312; */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 433    }
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 434  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 435    frame_in_height = pix->height / 2;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 436    frame_out_height = rect->height / 2;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 437    frame_out_top = rect->top / 2;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 438  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 439    /*
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 440     * Cropping scheme: max useful image is 720x480, and the total video
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 441     * area is 858x525 (NTSC) or 864x625 (PAL). AK8813 / 8814 starts
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 442     * sampling data beginning with fixed 276th (NTSC) / 288th (PAL) clock,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 443     * of which the first 33 / 25 clocks HSYNC must be held active. This
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 444     * has to be configured in CR[HW]. 1 pixel equals 2 clock periods.
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 445     * This gives CR[HW] = 16 / 12, VPR[HVP] = 138 / 144, which gives
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 446     * exactly 858 - 138 = 864 - 144 = 720! We call the out-of-display area,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 447     * beyond DSR, specified on the left and top by the VPR register "black
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 448     * pixels" and out-of-image area (DPR) "background pixels." We fix VPR
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 449     * at 138 / 144 : 20, because that's the HSYNC timing, that our first
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 450     * client requires, and that's exactly what leaves us 720 pixels for the
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 451     * image; we leave VPR[VVP] at default 20 for now, because the client
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 452     * doesn't seem to have any special requirements for it. Otherwise we
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 453     * could also set it to max - 240 = 22 / 72. Thus VPR depends only on
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 454     * the selected standard, and DPR and DSR are selected according to
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 455     * cropping. Q: how does the client detect the first valid line? Does
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 456     * HSYNC stay inactive during invalid (black) lines?
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 457     */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 458    black_left = width_max - VOU_MAX_IMAGE_WIDTH;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 459    black_top = 20;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 460  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 461    dsr_h = rect->width + rect->left;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 462    dsr_v = frame_out_height + frame_out_top;
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 463  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 464    dev_dbg(vou_dev->v4l2_dev.dev,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 465            "image %ux%u, black %u:%u, offset %u:%u, display %ux%u\n",
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 466            pix->width, frame_in_height, black_left, black_top,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 467            rect->left, frame_out_top, dsr_h, dsr_v);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 468  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 469    /* VOUISR height - half of a frame height in frame mode */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 470    sh_vou_reg_ab_write(vou_dev, VOUISR, (pix->width << 16) | 
frame_in_height);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 471    sh_vou_reg_ab_write(vou_dev, VOUVPR, (black_left << 16) | black_top);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 472    sh_vou_reg_ab_write(vou_dev, VOUDPR, (rect->left << 16) | 
frame_out_top);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 473    sh_vou_reg_ab_write(vou_dev, VOUDSR, (dsr_h << 16) | dsr_v);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 474  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 475    /*
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 476     * if necessary, we could set VOUHIR to
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 477     * max(black_left + dsr_h, width_max) here
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 478     */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 479  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 480    if (w_idx)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 481            vouvcr |= (1 << 15) | (vou_scale_h_fld[w_idx - 1] << 4);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 482    if (h_idx)
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
@483            vouvcr |= (1 << 14) | vou_scale_v_fld[h_idx - 1];
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 484  
59fe916c84f891 drivers/media/platform/sh_vou.c Hans Verkuil          2019-06-11 
 485    dev_dbg(vou_dev->v4l2_dev.dev, "0x%08x: scaling 0x%x\n",
59fe916c84f891 drivers/media/platform/sh_vou.c Hans Verkuil          2019-06-11 
 486            fmt->pfmt, vouvcr);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 487  
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 488    /* To produce a colour bar for testing set bit 23 of VOUVCR */
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 489    sh_vou_reg_ab_write(vou_dev, VOUVCR, vouvcr);
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 490    sh_vou_reg_ab_write(vou_dev, VOUDFR,
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 491                        fmt->pkf | (fmt->yf << 8) | (fmt->rgb << 16));
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 492  }
a81fb9b223508f drivers/media/video/sh_vou.c    Guennadi Liakhovetski 2010-03-17 
 493  

:::::: The code at line 371 was first introduced by commit
:::::: d899eddde548b9a6d3a59d0600feaab377efcd3f [media] sh_vou: Use vou_dev 
instead of vou_file wherever possible

:::::: TO: Laurent Pinchart <[email protected]>
:::::: CC: Mauro Carvalho Chehab <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to