Re: [PATCH v1 3/4] media: i2c: add driver for the SK Hynix Hi-846 8M pixel camera

From: kernel test robot
Date: Thu May 27 2021 - 12:39:55 EST


Hi Martin,

I love your patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on robh/for-next linus/master v5.13-rc3 next-20210527]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Martin-Kepplinger/Add-support-for-the-Hynix-Hi-846-camera/20210527-171447
base: git://linuxtv.org/media_tree.git master
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/707231d55da9f8b9f902252d852e5a9af635503d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Martin-Kepplinger/Add-support-for-the-Hynix-Hi-846-camera/20210527-171447
git checkout 707231d55da9f8b9f902252d852e5a9af635503d
# save the attached .config to linux build tree
make W=1 ARCH=x86_64

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

All errors (new ones prefixed by >>):

drivers/media/i2c/hi846.c: In function 'hi846_probe':
drivers/media/i2c/hi846.c:2162:8: error: implicit declaration of function 'v4l2_async_register_subdev_sensor_common'; did you mean 'v4l2_async_register_subdev_sensor'? [-Werror=implicit-function-declaration]
2162 | ret = v4l2_async_register_subdev_sensor_common(&hi846->sd);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| v4l2_async_register_subdev_sensor
drivers/media/i2c/hi846.c:2084:17: warning: unused variable 'd' [-Wunused-variable]
2084 | struct dentry *d;
| ^
In file included from drivers/media/i2c/hi846.c:5:
drivers/media/i2c/hi846.c: At top level:
>> drivers/media/i2c/hi846.c:2200:32: error: 'hi846_acpi_ids' undeclared here (not in a function); did you mean 'hi846_pm_ops'?
2200 | .acpi_match_table = ACPI_PTR(hi846_acpi_ids),
| ^~~~~~~~~~~~~~
include/linux/acpi.h:673:25: note: in definition of macro 'ACPI_PTR'
673 | #define ACPI_PTR(_ptr) (_ptr)
| ^~~~
drivers/media/i2c/hi846.c:1082:31: warning: 'mode_3264x2448_mipi_4lane' defined but not used [-Wunused-const-variable=]
1082 | static const struct hi846_reg mode_3264x2448_mipi_4lane[] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/hi846.c:1063:31: warning: 'mode_3264x2448_mipi_2lane' defined but not used [-Wunused-const-variable=]
1063 | static const struct hi846_reg mode_3264x2448_mipi_2lane[] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/hi846.c:1032:31: warning: 'mode_3264x2448_config' defined but not used [-Wunused-const-variable=]
1032 | static const struct hi846_reg mode_3264x2448_config[] = {
| ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors


vim +2200 drivers/media/i2c/hi846.c

2078
2079 static int hi846_probe(struct i2c_client *client)
2080 {
2081 struct hi846 *hi846;
2082 int ret;
2083 u8 lanes;
2084 struct dentry *d;
2085
2086 ret = hi846_check_hwcfg(&client->dev, &lanes);
2087 if (ret) {
2088 dev_err(&client->dev, "failed to check HW configuration: %d",
2089 ret);
2090 return ret;
2091 }
2092
2093 hi846 = devm_kzalloc(&client->dev, sizeof(*hi846), GFP_KERNEL);
2094 if (!hi846)
2095 return -ENOMEM;
2096
2097 hi846->nr_lanes = lanes;
2098
2099 v4l2_i2c_subdev_init(&hi846->sd, client, &hi846_subdev_ops);
2100
2101 ret = hi846_parse_gpio(&hi846->rst_gpio, &client->dev);
2102 if (ret < 0) {
2103 dev_err(&client->dev, "parse gpio failed: %d\n", ret);
2104 return ret;
2105 }
2106
2107 hi846->vdd_regulator = devm_regulator_get(&client->dev, "vdd");
2108 if (IS_ERR(hi846->vdd_regulator))
2109 dev_warn(&client->dev, "cannot get voltage regulator\n");
2110
2111 hi846->vdd1_regulator = devm_regulator_get(&client->dev, "vdd1");
2112 if (IS_ERR(hi846->vdd1_regulator))
2113 dev_warn(&client->dev, "cannot get voltage regulator\n");
2114
2115 ret = hi846_regulator_enable(hi846);
2116 if (ret) {
2117 dev_err(&client->dev, "regulator enable failed: %d\n", ret);
2118 return ret;
2119 }
2120
2121 hi846->clock = devm_clk_get(hi846->sd.dev, "mclk");
2122 if (IS_ERR(hi846->clock)) {
2123 dev_err(&client->dev, "get clk failed\n");
2124 ret = -EPROBE_DEFER;
2125 goto probe_error_regulator;
2126 }
2127
2128 ret = clk_prepare_enable(hi846->clock);
2129 if (ret < 0)
2130 goto probe_error_regulator;
2131
2132 msleep(100);
2133
2134 hi846_rst_gpio_assert(hi846, true);
2135
2136 ret = hi846_identify_module(hi846);
2137 if (ret) {
2138 dev_err(&client->dev, "failed to find sensor: %d", ret);
2139 goto probe_error_regulator;
2140 }
2141
2142 mutex_init(&hi846->mutex);
2143
2144 hi846->cur_mode = &supported_modes[0];
2145 ret = hi846_init_controls(hi846);
2146 if (ret) {
2147 dev_err(&client->dev, "failed to init controls: %d", ret);
2148 goto probe_error_v4l2_ctrl_handler_free;
2149 }
2150
2151 hi846->sd.internal_ops = &hi846_internal_ops;
2152 hi846->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
2153 hi846->sd.entity.ops = &hi846_subdev_entity_ops;
2154 hi846->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
2155 hi846->pad.flags = MEDIA_PAD_FL_SOURCE;
2156 ret = media_entity_pads_init(&hi846->sd.entity, 1, &hi846->pad);
2157 if (ret) {
2158 dev_err(&client->dev, "failed to init entity pads: %d", ret);
2159 goto probe_error_v4l2_ctrl_handler_free;
2160 }
2161
> 2162 ret = v4l2_async_register_subdev_sensor_common(&hi846->sd);
2163 if (ret < 0) {
2164 dev_err(&client->dev, "failed to register V4L2 subdev: %d",
2165 ret);
2166 goto probe_error_media_entity_cleanup;
2167 }
2168
2169 pm_runtime_set_active(&client->dev);
2170 pm_runtime_enable(&client->dev);
2171 pm_runtime_idle(&client->dev);
2172
2173 return 0;
2174
2175 probe_error_media_entity_cleanup:
2176 media_entity_cleanup(&hi846->sd.entity);
2177
2178 probe_error_v4l2_ctrl_handler_free:
2179 v4l2_ctrl_handler_free(hi846->sd.ctrl_handler);
2180 mutex_destroy(&hi846->mutex);
2181
2182 probe_error_regulator:
2183 hi846_regulator_disable(hi846);
2184
2185 return ret;
2186 }
2187
2188 UNIVERSAL_DEV_PM_OPS(hi846_pm_ops, hi846_suspend, hi846_resume, NULL);
2189
2190 static const struct of_device_id hi846_of_match[] = {
2191 { .compatible = "hynix,hi846", },
2192 {},
2193 };
2194 MODULE_DEVICE_TABLE(of, hi846_of_match);
2195
2196 static struct i2c_driver hi846_i2c_driver = {
2197 .driver = {
2198 .name = "hi846",
2199 .pm = &hi846_pm_ops,
> 2200 .acpi_match_table = ACPI_PTR(hi846_acpi_ids),
2201 .of_match_table = of_match_ptr(hi846_of_match),
2202 },
2203 .probe_new = hi846_probe,
2204 .remove = hi846_remove,
2205 };
2206

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

Attachment: .config.gz
Description: application/gzip