* 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]
@ 2022-05-04 18:25 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-05-04 18:25 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 40583 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
CC: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
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/202205050256.Cjt0rDwS-lkp(a)intel.com/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 <lkp@intel.com>
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@line 371 was first introduced by commit
:::::: d899eddde548b9a6d3a59d0600feaab377efcd3f [media] sh_vou: Use vou_dev instead of vou_file wherever possible
:::::: TO: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
:::::: CC: Mauro Carvalho Chehab <mchehab@redhat.com>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
* 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]
@ 2022-05-02 19:45 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-05-02 19:45 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 42662 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
CC: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 672c0c5173427e6b3e2a9bbb7be51ceeec78093a
commit: ee4a77a32b39064fdab0aa2b36bbd35ebf57e077 media: platform: place Renesas drivers on a separate dir
date: 7 weeks ago
:::::: branch date: 23 hours ago
:::::: commit date: 7 weeks ago
config: arm-randconfig-c002-20220427 (https://download.01.org/0day-ci/archive/20220503/202205030326.MOU3KUaS-lkp(a)intel.com/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 <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c:46:5: note: Value stored to 'hw_version' during its initialization is never read
u8 hw_version = readl_relaxed(csiphy->base +
^~~~~~~~~~
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c:280:2: warning: Value stored to 'hw_version' is never read [clang-analyzer-deadcode.DeadStores]
hw_version |= readl_relaxed(csiphy->base +
^
drivers/media/platform/qcom/camss/camss-csiphy-3ph-1-0.c:280:2: note: Value stored to 'hw_version' is never read
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
include/media/v4l2-subdev.h:987:10: warning: Access to field 'pads' results in a dereference of a null pointer (loaded from variable 'state') [clang-analyzer-core.NullDereference]
return &state->pads[pad].try_fmt;
^
drivers/media/platform/qcom/camss/camss-csiphy.c:763:8: note: Calling 'csiphy_init_formats'
ret = csiphy_init_formats(sd, NULL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:527:12: note: 'fh' is null
.which = fh ? V4L2_SUBDEV_FORMAT_TRY :
^~
drivers/media/platform/qcom/camss/camss-csiphy.c:527:12: note: '?' condition is false
drivers/media/platform/qcom/camss/camss-csiphy.c:536:31: note: 'fh' is null
return csiphy_set_format(sd, fh ? fh->state : NULL, &format);
^~
drivers/media/platform/qcom/camss/camss-csiphy.c:536:31: note: '?' condition is false
drivers/media/platform/qcom/camss/camss-csiphy.c:536:31: note: Passing null pointer value via 2nd parameter 'sd_state'
return csiphy_set_format(sd, fh ? fh->state : NULL, &format);
^~
drivers/media/platform/qcom/camss/camss-csiphy.c:536:9: note: Calling 'csiphy_set_format'
return csiphy_set_format(sd, fh ? fh->state : NULL, &format);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:491:6: note: 'format' is not equal to NULL
if (format == NULL)
^~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:491:2: note: Taking false branch
if (format == NULL)
^
drivers/media/platform/qcom/camss/camss-csiphy.c:499:6: note: Assuming field 'pad' is equal to MSM_CSIPHY_PAD_SINK
if (fmt->pad == MSM_CSIPHY_PAD_SINK) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:499:2: note: Taking true branch
if (fmt->pad == MSM_CSIPHY_PAD_SINK) {
^
drivers/media/platform/qcom/camss/camss-csiphy.c:500:40: note: Passing null pointer value via 2nd parameter 'sd_state'
format = __csiphy_get_format(csiphy, sd_state,
^~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:500:12: note: Calling '__csiphy_get_format'
format = __csiphy_get_format(csiphy, sd_state,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:327:6: note: Assuming 'which' is equal to V4L2_SUBDEV_FORMAT_TRY
if (which == V4L2_SUBDEV_FORMAT_TRY)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:327:2: note: Taking true branch
if (which == V4L2_SUBDEV_FORMAT_TRY)
^
drivers/media/platform/qcom/camss/camss-csiphy.c:328:54: note: Passing null pointer value via 2nd parameter 'state'
return v4l2_subdev_get_try_format(&csiphy->subdev, sd_state,
^~~~~~~~
drivers/media/platform/qcom/camss/camss-csiphy.c:328:10: note: Calling 'v4l2_subdev_get_try_format'
return v4l2_subdev_get_try_format(&csiphy->subdev, sd_state,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/media/v4l2-subdev.h:985:14: note: Assuming 'pad' is < field 'num_pads'
if (WARN_ON(pad >= sd->entity.num_pads))
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
include/media/v4l2-subdev.h:985:6: note: Taking false branch
if (WARN_ON(pad >= sd->entity.num_pads))
^
include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
include/media/v4l2-subdev.h:985:2: note: Taking false branch
if (WARN_ON(pad >= sd->entity.num_pads))
^
include/media/v4l2-subdev.h:987:10: note: Access to field 'pads' results in a dereference of a null pointer (loaded from variable 'state')
return &state->pads[pad].try_fmt;
^~~~~
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
drivers/gpu/ipu-v3/ipu-ic.c:738:18: warning: Value stored to 'ipu' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct ipu_soc *ipu = priv->ipu;
^~~ ~~~~~~~~~
drivers/gpu/ipu-v3/ipu-ic.c:738:18: note: Value stored to 'ipu' during its initialization is never read
struct ipu_soc *ipu = priv->ipu;
^~~ ~~~~~~~~~
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.
include/linux/hid.h:1037:9: warning: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input') [clang-analyzer-core.NullDereference]
input->name, c, type);
^
drivers/hid/hid-petalynx.c:41:6: note: Assuming the condition is true
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_LOGIVENDOR) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-petalynx.c:41:2: note: Taking true branch
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_LOGIVENDOR) {
^
drivers/hid/hid-petalynx.c:42:3: note: Control jumps to 'case 90:' at line 43
switch (usage->hid & HID_USAGE) {
^
drivers/hid/hid-petalynx.c:43:15: note: Calling 'hid_map_usage_clear'
case 0x05a: pl_map_key_clear(KEY_TEXT); break;
^
drivers/hid/hid-petalynx.c:35:29: note: expanded from macro 'pl_map_key_clear'
#define pl_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1065:2: note: Calling 'hid_map_usage'
hid_map_usage(hidinput, usage, bit, max, type, c);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1008:2: note: 'input' initialized here
struct input_dev *input = hidinput->input;
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1012:2: note: Control jumps to 'case 1:' at line 1021
switch (type) {
^
include/linux/hid.h:1024:3: note: Execution continues on line 1035
break;
^
include/linux/hid.h:1035:15: note: 'c' is <= 'limit'
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1035:15: note: Left side of '||' is false
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1035:28: note: Assuming 'bmap' is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1035:28: note: Assuming pointer value is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1035:2: note: Taking true branch
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1036:3: note: Assuming the condition is true
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/printk.h:639:6: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^~~~~~~~~~~~~~~~~
include/linux/ratelimit_types.h:41:28: note: expanded from macro '__ratelimit'
#define __ratelimit(state) ___ratelimit(state, __func__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1036:3: note: Taking true branch
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:639:2: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^
include/linux/hid.h:1036:3: note: Left side of '&&' is true
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:446:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:370:7: note: expanded from macro '__printk_index_emit'
if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
^
vim +/vou_dev +371 drivers/media/platform/renesas/sh_vou.c
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 366
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 367 /* Video IOCTLs */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 368 static int sh_vou_querycap(struct file *file, void *priv,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 369 struct v4l2_capability *cap)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 370 {
d899eddde548b9a drivers/media/platform/sh_vou.c Laurent Pinchart 2013-01-03 @371 struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 372
d899eddde548b9a drivers/media/platform/sh_vou.c Laurent Pinchart 2013-01-03 373 dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 374
c0decac19da3906 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 375 strscpy(cap->card, "SuperH VOU", sizeof(cap->card));
c0decac19da3906 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 376 strscpy(cap->driver, "sh-vou", sizeof(cap->driver));
c0decac19da3906 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2018-09-10 377 strscpy(cap->bus_info, "platform:sh-vou", sizeof(cap->bus_info));
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 378 return 0;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 379 }
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 380
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 381 /* Enumerate formats, that the device can accept from the user */
a81fb9b223508f5 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,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 383 struct v4l2_fmtdesc *fmt)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 384 {
d899eddde548b9a drivers/media/platform/sh_vou.c Laurent Pinchart 2013-01-03 385 struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 386
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 387 if (fmt->index >= ARRAY_SIZE(vou_fmt))
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 388 return -EINVAL;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 389
d899eddde548b9a drivers/media/platform/sh_vou.c Laurent Pinchart 2013-01-03 390 dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 391
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 392 fmt->pixelformat = vou_fmt[fmt->index].pfmt;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 393
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 394 return 0;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 395 }
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 396
a81fb9b223508f5 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,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 398 struct v4l2_format *fmt)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 399 {
fd51625d6331c80 drivers/media/platform/sh_vou.c Laurent Pinchart 2013-01-03 400 struct sh_vou_device *vou_dev = video_drvdata(file);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 401
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 402 dev_dbg(vou_dev->v4l2_dev.dev, "%s()\n", __func__);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 403
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 404 fmt->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 405 fmt->fmt.pix = vou_dev->pix;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 406
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 407 return 0;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 408 }
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 409
a81fb9b223508f5 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};
a81fb9b223508f5 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};
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 412 static const unsigned char vou_scale_h_fld[] = {0, 2, 1, 3};
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 413 static const unsigned char vou_scale_v_num[] = {1, 2, 4};
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 414 static const unsigned char vou_scale_v_den[] = {1, 1, 1};
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 415 static const unsigned char vou_scale_v_fld[] = {0, 1};
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 416
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 417 static void sh_vou_configure_geometry(struct sh_vou_device *vou_dev,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 418 int pix_idx, int w_idx, int h_idx)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 419 {
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 420 struct sh_vou_fmt *fmt = vou_fmt + pix_idx;
a622cc51879f703 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 421 unsigned int black_left, black_top, width_max,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 422 frame_in_height, frame_out_height, frame_out_top;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 423 struct v4l2_rect *rect = &vou_dev->rect;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 424 struct v4l2_pix_format *pix = &vou_dev->pix;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 425 u32 vouvcr = 0, dsr_h, dsr_v;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 426
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 427 if (vou_dev->std & V4L2_STD_525_60) {
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 428 width_max = 858;
a622cc51879f703 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 429 /* height_max = 262; */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 430 } else {
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 431 width_max = 864;
a622cc51879f703 drivers/media/platform/sh_vou.c Mauro Carvalho Chehab 2014-01-13 432 /* height_max = 312; */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 433 }
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 434
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 435 frame_in_height = pix->height / 2;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 436 frame_out_height = rect->height / 2;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 437 frame_out_top = rect->top / 2;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 438
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 439 /*
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 440 * Cropping scheme: max useful image is 720x480, and the total video
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 441 * area is 858x525 (NTSC) or 864x625 (PAL). AK8813 / 8814 starts
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 442 * sampling data beginning with fixed 276th (NTSC) / 288th (PAL) clock,
a81fb9b223508f5 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
a81fb9b223508f5 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.
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 445 * This gives CR[HW] = 16 / 12, VPR[HVP] = 138 / 144, which gives
a81fb9b223508f5 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,
a81fb9b223508f5 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
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 448 * pixels" and out-of-image area (DPR) "background pixels." We fix VPR
a81fb9b223508f5 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
a81fb9b223508f5 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
a81fb9b223508f5 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
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 452 * doesn't seem to have any special requirements for it. Otherwise we
a81fb9b223508f5 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
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 454 * the selected standard, and DPR and DSR are selected according to
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 455 * cropping. Q: how does the client detect the first valid line? Does
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 456 * HSYNC stay inactive during invalid (black) lines?
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 457 */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 458 black_left = width_max - VOU_MAX_IMAGE_WIDTH;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 459 black_top = 20;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 460
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 461 dsr_h = rect->width + rect->left;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 462 dsr_v = frame_out_height + frame_out_top;
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 463
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 464 dev_dbg(vou_dev->v4l2_dev.dev,
a81fb9b223508f5 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",
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 466 pix->width, frame_in_height, black_left, black_top,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 467 rect->left, frame_out_top, dsr_h, dsr_v);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 468
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 469 /* VOUISR height - half of a frame height in frame mode */
a81fb9b223508f5 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);
a81fb9b223508f5 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);
a81fb9b223508f5 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);
a81fb9b223508f5 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);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 474
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 475 /*
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 476 * if necessary, we could set VOUHIR to
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 477 * max(black_left + dsr_h, width_max) here
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 478 */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 479
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 480 if (w_idx)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 481 vouvcr |= (1 << 15) | (vou_scale_h_fld[w_idx - 1] << 4);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 482 if (h_idx)
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 @483 vouvcr |= (1 << 14) | vou_scale_v_fld[h_idx - 1];
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 484
59fe916c84f891a 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",
59fe916c84f891a drivers/media/platform/sh_vou.c Hans Verkuil 2019-06-11 486 fmt->pfmt, vouvcr);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 487
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 488 /* To produce a colour bar for testing set bit 23 of VOUVCR */
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 489 sh_vou_reg_ab_write(vou_dev, VOUVCR, vouvcr);
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 490 sh_vou_reg_ab_write(vou_dev, VOUDFR,
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 491 fmt->pkf | (fmt->yf << 8) | (fmt->rgb << 16));
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 492 }
a81fb9b223508f5 drivers/media/video/sh_vou.c Guennadi Liakhovetski 2010-03-17 493
:::::: The code@line 371 was first introduced by commit
:::::: d899eddde548b9a6d3a59d0600feaab377efcd3f [media] sh_vou: Use vou_dev instead of vou_file wherever possible
:::::: TO: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
:::::: CC: Mauro Carvalho Chehab <mchehab@redhat.com>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-04 18:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-04 18:25 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] kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-05-02 19:45 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.