From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v4 6/7] media: i2c: ov9282: Set v4l2 subdev name according to sensor model
Date: Wed, 03 Aug 2022 07:12:21 +0800 [thread overview]
Message-ID: <202208030644.UFmtMaV9-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 25959 bytes --]
::::::
:::::: Manual check reason: "low confidence static check warning: drivers/media/i2c/ov9282.c:1054:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]"
::::::
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
In-Reply-To: <20220728130237.3396663-7-alexander.stein@ew.tq-group.com>
References: <20220728130237.3396663-7-alexander.stein@ew.tq-group.com>
TO: Alexander Stein <alexander.stein@ew.tq-group.com>
TO: "Paul J . Murphy" <paul.j.murphy@intel.com>
TO: Daniele Alessandrelli <daniele.alessandrelli@intel.com>
TO: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
TO: Rob Herring <robh+dt@kernel.org>
TO: Krzysztof Kozlowski <krzk@kernel.org>
CC: Alexander Stein <alexander.stein@ew.tq-group.com>
CC: devicetree(a)vger.kernel.org
CC: Sakari Ailus <sakari.ailus@iki.fi>
Hi Alexander,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on media-tree/master]
[also build test WARNING on linus/master v5.19 next-20220728]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Alexander-Stein/OV9281-support/20220728-210448
base: git://linuxtv.org/media_tree.git master
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: arm-randconfig-c002-20220731 (https://download.01.org/0day-ci/archive/20220803/202208030644.UFmtMaV9-lkp(a)intel.com/config)
compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 52cd00cabf479aa7eb6dbb063b7ba41ea57bce9e)
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://github.com/intel-lab-lkp/linux/commit/ee28006553d4d23f600b0076ef6066710519f156
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Alexander-Stein/OV9281-support/20220728-210448
git checkout ee28006553d4d23f600b0076ef6066710519f156
# 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 where applicable
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^
include/linux/printk.h:690:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:674:3: note: expanded from macro 'printk_ratelimited'
printk(fmt, ##__VA_ARGS__); \
^
include/linux/printk.h:480:26: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^
include/linux/printk.h:451:3: note: expanded from macro 'printk_index_wrap'
__printk_index_emit(_fmt, NULL, NULL); \
^
include/linux/printk.h:426:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
include/linux/hid.h:1056:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input')
input->name, c, type);
^
include/linux/printk.h:690:49: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
include/linux/printk.h:674:17: note: expanded from macro 'printk_ratelimited'
printk(fmt, ##__VA_ARGS__); \
^~~~~~~~~~~
include/linux/printk.h:480:60: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
^~~~~~~~~~~
include/linux/printk.h:452:19: note: expanded from macro 'printk_index_wrap'
_p_func(_fmt, ##__VA_ARGS__); \
^~~~~~~~~~~
Suppressed 29 warnings (29 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
45 warnings generated.
drivers/hwmon/sht3x.c:268:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
return sprintf(buf, "%d\n", data->temperature);
^~~~~~~
drivers/hwmon/sht3x.c:268:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
return sprintf(buf, "%d\n", data->temperature);
^~~~~~~
drivers/hwmon/sht3x.c:279:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
return sprintf(buf, "%u\n", data->humidity);
^~~~~~~
drivers/hwmon/sht3x.c:279:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
return sprintf(buf, "%u\n", data->humidity);
^~~~~~~
drivers/hwmon/sht3x.c:356:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(position, commands->write_command, SHT3X_CMD_LENGTH);
^~~~~~
drivers/hwmon/sht3x.c:356:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(position, commands->write_command, SHT3X_CMD_LENGTH);
^~~~~~
Suppressed 42 warnings (42 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
42 warnings generated.
Suppressed 42 warnings (42 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
30 warnings generated.
drivers/input/joystick/magellan.c:144:2: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
snprintf(magellan->phys, sizeof(magellan->phys), "%s/input0", serio->phys);
^~~~~~~~
drivers/input/joystick/magellan.c:144:2: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11
snprintf(magellan->phys, sizeof(magellan->phys), "%s/input0", serio->phys);
^~~~~~~~
Suppressed 29 warnings (29 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
36 warnings generated.
drivers/input/joystick/psxpad-spi.c:101:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(pad->sendbuf, PSX_CMD_ENTER_CFG, sizeof(PSX_CMD_ENTER_CFG));
^~~~~~
drivers/input/joystick/psxpad-spi.c:101:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(pad->sendbuf, PSX_CMD_ENTER_CFG, sizeof(PSX_CMD_ENTER_CFG));
^~~~~~
drivers/input/joystick/psxpad-spi.c:110:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(pad->sendbuf, PSX_CMD_ENABLE_MOTOR,
^~~~~~
drivers/input/joystick/psxpad-spi.c:110:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(pad->sendbuf, PSX_CMD_ENABLE_MOTOR,
^~~~~~
drivers/input/joystick/psxpad-spi.c:122:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(pad->sendbuf, PSX_CMD_EXIT_CFG, sizeof(PSX_CMD_EXIT_CFG));
^~~~~~
drivers/input/joystick/psxpad-spi.c:122:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(pad->sendbuf, PSX_CMD_EXIT_CFG, sizeof(PSX_CMD_EXIT_CFG));
^~~~~~
drivers/input/joystick/psxpad-spi.c:213:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(pad->sendbuf, PSX_CMD_POLL, sizeof(PSX_CMD_POLL));
^~~~~~
drivers/input/joystick/psxpad-spi.c:213:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(pad->sendbuf, PSX_CMD_POLL, sizeof(PSX_CMD_POLL));
^~~~~~
drivers/input/joystick/psxpad-spi.c:306:2: warning: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
snprintf(pad->phys, sizeof(pad->phys), "%s/input", dev_name(&spi->dev));
^~~~~~~~
drivers/input/joystick/psxpad-spi.c:306:2: note: Call to function 'snprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'snprintf_s' in case of C11
snprintf(pad->phys, sizeof(pad->phys), "%s/input", dev_name(&spi->dev));
^~~~~~~~
Suppressed 31 warnings (31 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
48 warnings generated.
>> drivers/media/i2c/ov9282.c:1054:3: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
return ret;
^ ~~~
drivers/media/i2c/ov9282.c:1041:2: note: 'ret' declared without an initial value
int ret;
^~~~~~~
drivers/media/i2c/ov9282.c:1044:6: note: Assuming 'ov9282' is non-null
if (!ov9282)
^~~~~~~
drivers/media/i2c/ov9282.c:1044:2: note: Taking false branch
if (!ov9282)
^
drivers/media/i2c/ov9282.c:1052:6: note: Assuming 'sensor_name' is null
if (!sensor_name) {
^~~~~~~~~~~~
drivers/media/i2c/ov9282.c:1052:2: note: Taking true branch
if (!sensor_name) {
^
drivers/media/i2c/ov9282.c:1053:3: note: Loop condition is false. Exiting loop
dev_err(ov9282->dev, "Sensor name is missing");
^
include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap'
dev_printk_index_emit(level, fmt); \
^
include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit'
printk_index_subsys_emit("%s %s: ", level, fmt)
^
include/linux/printk.h:447:2: note: expanded from macro 'printk_index_subsys_emit'
__printk_index_emit(fmt, level, subsys_fmt_prefix)
^
include/linux/printk.h:426:34: note: expanded from macro '__printk_index_emit'
#define __printk_index_emit(...) do {} while (0)
^
drivers/media/i2c/ov9282.c:1054:3: note: Undefined or garbage value returned to caller
return ret;
^ ~~~
Suppressed 47 warnings (45 in non-user code, 2 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
46 warnings generated.
Suppressed 46 warnings (45 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
47 warnings generated.
drivers/media/i2c/ov9650.c:606:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = ov965x_write(ov965x, REG_COM8, reg);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/ov9650.c:606:3: note: Value stored to 'ret' is never read
ret = ov965x_write(ov965x, REG_COM8, reg);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 46 warnings (45 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
50 warnings generated.
drivers/media/i2c/rdacm21.c:373:11: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
if (val == OV10640_ID_HIGH)
^
drivers/media/i2c/rdacm21.c:550:6: note: Assuming 'dev' is non-null
if (!dev)
^~~~
drivers/media/i2c/rdacm21.c:550:2: note: Taking false branch
if (!dev)
^
drivers/media/i2c/rdacm21.c:557:6: note: 'ret' is >= 0
if (ret < 0) {
^~~
drivers/media/i2c/rdacm21.c:557:2: note: Taking false branch
if (ret < 0) {
^
drivers/media/i2c/rdacm21.c:564:2: note: Taking false branch
if (IS_ERR(dev->isp))
^
drivers/media/i2c/rdacm21.c:567:8: note: Calling 'rdacm21_initialize'
ret = rdacm21_initialize(dev);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/rdacm21.c:481:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/media/i2c/rdacm21.c:481:2: note: Taking false branch
if (ret)
^
drivers/media/i2c/rdacm21.c:489:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/media/i2c/rdacm21.c:489:2: note: Taking false branch
if (ret)
^
drivers/media/i2c/rdacm21.c:493:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/media/i2c/rdacm21.c:493:2: note: Taking false branch
if (ret)
^
drivers/media/i2c/rdacm21.c:501:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/media/i2c/rdacm21.c:501:2: note: Taking false branch
if (ret)
^
drivers/media/i2c/rdacm21.c:505:6: note: Assuming 'ret' is 0
if (ret)
vim +1054 drivers/media/i2c/ov9282.c
ded4a31a12fead Alexander Stein 2022-07-28 1030
14ea315bbeb75a Martina Krasteva 2021-05-27 1031 /**
14ea315bbeb75a Martina Krasteva 2021-05-27 1032 * ov9282_probe() - I2C client device binding
14ea315bbeb75a Martina Krasteva 2021-05-27 1033 * @client: pointer to i2c client device
14ea315bbeb75a Martina Krasteva 2021-05-27 1034 *
14ea315bbeb75a Martina Krasteva 2021-05-27 1035 * Return: 0 if successful, error code otherwise.
14ea315bbeb75a Martina Krasteva 2021-05-27 1036 */
14ea315bbeb75a Martina Krasteva 2021-05-27 1037 static int ov9282_probe(struct i2c_client *client)
14ea315bbeb75a Martina Krasteva 2021-05-27 1038 {
14ea315bbeb75a Martina Krasteva 2021-05-27 1039 struct ov9282 *ov9282;
ee28006553d4d2 Alexander Stein 2022-07-28 1040 const char *sensor_name;
14ea315bbeb75a Martina Krasteva 2021-05-27 1041 int ret;
14ea315bbeb75a Martina Krasteva 2021-05-27 1042
14ea315bbeb75a Martina Krasteva 2021-05-27 1043 ov9282 = devm_kzalloc(&client->dev, sizeof(*ov9282), GFP_KERNEL);
14ea315bbeb75a Martina Krasteva 2021-05-27 1044 if (!ov9282)
14ea315bbeb75a Martina Krasteva 2021-05-27 1045 return -ENOMEM;
14ea315bbeb75a Martina Krasteva 2021-05-27 1046
14ea315bbeb75a Martina Krasteva 2021-05-27 1047 ov9282->dev = &client->dev;
14ea315bbeb75a Martina Krasteva 2021-05-27 1048
14ea315bbeb75a Martina Krasteva 2021-05-27 1049 /* Initialize subdev */
14ea315bbeb75a Martina Krasteva 2021-05-27 1050 v4l2_i2c_subdev_init(&ov9282->sd, client, &ov9282_subdev_ops);
ee28006553d4d2 Alexander Stein 2022-07-28 1051 sensor_name = device_get_match_data(ov9282->dev);
ee28006553d4d2 Alexander Stein 2022-07-28 1052 if (!sensor_name) {
ee28006553d4d2 Alexander Stein 2022-07-28 1053 dev_err(ov9282->dev, "Sensor name is missing");
ee28006553d4d2 Alexander Stein 2022-07-28 @1054 return ret;
ee28006553d4d2 Alexander Stein 2022-07-28 1055 }
ee28006553d4d2 Alexander Stein 2022-07-28 1056 v4l2_i2c_subdev_set_name(&ov9282->sd, client, sensor_name, NULL);
14ea315bbeb75a Martina Krasteva 2021-05-27 1057
14ea315bbeb75a Martina Krasteva 2021-05-27 1058 ret = ov9282_parse_hw_config(ov9282);
14ea315bbeb75a Martina Krasteva 2021-05-27 1059 if (ret) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1060 dev_err(ov9282->dev, "HW configuration is not supported");
14ea315bbeb75a Martina Krasteva 2021-05-27 1061 return ret;
14ea315bbeb75a Martina Krasteva 2021-05-27 1062 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1063
ded4a31a12fead Alexander Stein 2022-07-28 1064 ret = ov9282_get_regulators(ov9282);
ded4a31a12fead Alexander Stein 2022-07-28 1065 if (ret) {
ded4a31a12fead Alexander Stein 2022-07-28 1066 dev_err(&client->dev, "Failed to get power regulators\n");
ded4a31a12fead Alexander Stein 2022-07-28 1067 return ret;
ded4a31a12fead Alexander Stein 2022-07-28 1068 }
ded4a31a12fead Alexander Stein 2022-07-28 1069
14ea315bbeb75a Martina Krasteva 2021-05-27 1070 mutex_init(&ov9282->mutex);
14ea315bbeb75a Martina Krasteva 2021-05-27 1071
14ea315bbeb75a Martina Krasteva 2021-05-27 1072 ret = ov9282_power_on(ov9282->dev);
14ea315bbeb75a Martina Krasteva 2021-05-27 1073 if (ret) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1074 dev_err(ov9282->dev, "failed to power-on the sensor");
14ea315bbeb75a Martina Krasteva 2021-05-27 1075 goto error_mutex_destroy;
14ea315bbeb75a Martina Krasteva 2021-05-27 1076 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1077
14ea315bbeb75a Martina Krasteva 2021-05-27 1078 /* Check module identity */
14ea315bbeb75a Martina Krasteva 2021-05-27 1079 ret = ov9282_detect(ov9282);
14ea315bbeb75a Martina Krasteva 2021-05-27 1080 if (ret) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1081 dev_err(ov9282->dev, "failed to find sensor: %d", ret);
14ea315bbeb75a Martina Krasteva 2021-05-27 1082 goto error_power_off;
14ea315bbeb75a Martina Krasteva 2021-05-27 1083 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1084
14ea315bbeb75a Martina Krasteva 2021-05-27 1085 /* Set default mode to max resolution */
14ea315bbeb75a Martina Krasteva 2021-05-27 1086 ov9282->cur_mode = &supported_mode;
14ea315bbeb75a Martina Krasteva 2021-05-27 1087 ov9282->vblank = ov9282->cur_mode->vblank;
14ea315bbeb75a Martina Krasteva 2021-05-27 1088
14ea315bbeb75a Martina Krasteva 2021-05-27 1089 ret = ov9282_init_controls(ov9282);
14ea315bbeb75a Martina Krasteva 2021-05-27 1090 if (ret) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1091 dev_err(ov9282->dev, "failed to init controls: %d", ret);
14ea315bbeb75a Martina Krasteva 2021-05-27 1092 goto error_power_off;
14ea315bbeb75a Martina Krasteva 2021-05-27 1093 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1094
14ea315bbeb75a Martina Krasteva 2021-05-27 1095 /* Initialize subdev */
14ea315bbeb75a Martina Krasteva 2021-05-27 1096 ov9282->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
14ea315bbeb75a Martina Krasteva 2021-05-27 1097 ov9282->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
14ea315bbeb75a Martina Krasteva 2021-05-27 1098
14ea315bbeb75a Martina Krasteva 2021-05-27 1099 /* Initialize source pad */
14ea315bbeb75a Martina Krasteva 2021-05-27 1100 ov9282->pad.flags = MEDIA_PAD_FL_SOURCE;
14ea315bbeb75a Martina Krasteva 2021-05-27 1101 ret = media_entity_pads_init(&ov9282->sd.entity, 1, &ov9282->pad);
14ea315bbeb75a Martina Krasteva 2021-05-27 1102 if (ret) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1103 dev_err(ov9282->dev, "failed to init entity pads: %d", ret);
14ea315bbeb75a Martina Krasteva 2021-05-27 1104 goto error_handler_free;
14ea315bbeb75a Martina Krasteva 2021-05-27 1105 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1106
14ea315bbeb75a Martina Krasteva 2021-05-27 1107 ret = v4l2_async_register_subdev_sensor(&ov9282->sd);
14ea315bbeb75a Martina Krasteva 2021-05-27 1108 if (ret < 0) {
14ea315bbeb75a Martina Krasteva 2021-05-27 1109 dev_err(ov9282->dev,
14ea315bbeb75a Martina Krasteva 2021-05-27 1110 "failed to register async subdev: %d", ret);
14ea315bbeb75a Martina Krasteva 2021-05-27 1111 goto error_media_entity;
14ea315bbeb75a Martina Krasteva 2021-05-27 1112 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1113
14ea315bbeb75a Martina Krasteva 2021-05-27 1114 pm_runtime_set_active(ov9282->dev);
14ea315bbeb75a Martina Krasteva 2021-05-27 1115 pm_runtime_enable(ov9282->dev);
14ea315bbeb75a Martina Krasteva 2021-05-27 1116 pm_runtime_idle(ov9282->dev);
14ea315bbeb75a Martina Krasteva 2021-05-27 1117
14ea315bbeb75a Martina Krasteva 2021-05-27 1118 return 0;
14ea315bbeb75a Martina Krasteva 2021-05-27 1119
14ea315bbeb75a Martina Krasteva 2021-05-27 1120 error_media_entity:
14ea315bbeb75a Martina Krasteva 2021-05-27 1121 media_entity_cleanup(&ov9282->sd.entity);
14ea315bbeb75a Martina Krasteva 2021-05-27 1122 error_handler_free:
14ea315bbeb75a Martina Krasteva 2021-05-27 1123 v4l2_ctrl_handler_free(ov9282->sd.ctrl_handler);
14ea315bbeb75a Martina Krasteva 2021-05-27 1124 error_power_off:
14ea315bbeb75a Martina Krasteva 2021-05-27 1125 ov9282_power_off(ov9282->dev);
14ea315bbeb75a Martina Krasteva 2021-05-27 1126 error_mutex_destroy:
14ea315bbeb75a Martina Krasteva 2021-05-27 1127 mutex_destroy(&ov9282->mutex);
14ea315bbeb75a Martina Krasteva 2021-05-27 1128
14ea315bbeb75a Martina Krasteva 2021-05-27 1129 return ret;
14ea315bbeb75a Martina Krasteva 2021-05-27 1130 }
14ea315bbeb75a Martina Krasteva 2021-05-27 1131
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next reply other threads:[~2022-08-02 23:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-02 23:12 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-07-28 13:02 [PATCH v4 0/7] OV9281 support Alexander Stein
2022-07-28 13:02 ` [PATCH v4 6/7] media: i2c: ov9282: Set v4l2 subdev name according to sensor model Alexander Stein
2022-07-28 21:10 ` kernel test robot
2022-07-29 8:23 ` Alexander Stein
2022-07-29 8:23 ` Alexander Stein
2022-08-01 12:16 ` Sakari Ailus
2022-08-01 12:16 ` Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202208030644.UFmtMaV9-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.