Re: [PATCH v4 1/2] gnss: ubx: customize serial device open to set U-Blox Zed-F9P baud

From: kernel test robot
Date: Mon May 08 2023 - 03:53:37 EST


Hi,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.4-rc1 next-20230508]
[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/alison-she-devel-com/dt-bindings-gnss-Add-U-Blox-Zed-F9/20230508-101304
base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link: https://lore.kernel.org/r/20230508011159.263322-2-alison%40she-devel.com
patch subject: [PATCH v4 1/2] gnss: ubx: customize serial device open to set U-Blox Zed-F9P baud
config: x86_64-randconfig-a004 (https://download.01.org/0day-ci/archive/20230508/202305081529.zgHsJsZq-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/93acd4265d325a1881a411703abc6dd45b81c1d0
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review alison-she-devel-com/dt-bindings-gnss-Add-U-Blox-Zed-F9/20230508-101304
git checkout 93acd4265d325a1881a411703abc6dd45b81c1d0
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 olddefconfig
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202305081529.zgHsJsZq-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/gnss/ubx.c: In function 'ubx_set_active':
>> drivers/gnss/ubx.c:225:36: error: invalid use of undefined type 'struct ubx_data'
225 | ret = regulator_enable(data->vcc);
| ^~
drivers/gnss/ubx.c: In function 'ubx_set_standby':
drivers/gnss/ubx.c:237:37: error: invalid use of undefined type 'struct ubx_data'
237 | ret = regulator_disable(data->vcc);
| ^~
drivers/gnss/ubx.c: In function 'ubx_probe':
>> drivers/gnss/ubx.c:288:54: error: invalid application of 'sizeof' to incomplete type 'struct ubx_data'
288 | gserial = gnss_serial_allocate(serdev, sizeof(*data));
| ^
drivers/gnss/ubx.c:305:21: error: invalid use of undefined type 'struct ubx_data'
305 | data->is_configured = 0;
| ^~
drivers/gnss/ubx.c:306:21: error: invalid use of undefined type 'struct ubx_data'
306 | data->features = of_match_device(ubx_of_match, &serdev->dev)->data;
| ^~
drivers/gnss/ubx.c:306:50: error: 'ubx_of_match' undeclared (first use in this function)
306 | data->features = of_match_device(ubx_of_match, &serdev->dev)->data;
| ^~~~~~~~~~~~
drivers/gnss/ubx.c:306:50: note: each undeclared identifier is reported only once for each function it appears in
drivers/gnss/ubx.c:307:25: error: invalid use of undefined type 'struct ubx_data'
307 | if (data->features && data->features->open) {
| ^~
drivers/gnss/ubx.c:307:43: error: invalid use of undefined type 'struct ubx_data'
307 | if (data->features && data->features->open) {
| ^~
drivers/gnss/ubx.c:308:51: error: invalid use of undefined type 'struct ubx_data'
308 | ubx_gnss_ops->open = data->features->open;
| ^~
drivers/gnss/ubx.c:314:13: error: invalid use of undefined type 'struct ubx_data'
314 | data->vcc = devm_regulator_get(&serdev->dev, "vcc");
| ^~
drivers/gnss/ubx.c:315:24: error: invalid use of undefined type 'struct ubx_data'
315 | if (IS_ERR(data->vcc)) {
| ^~
drivers/gnss/ubx.c:316:35: error: invalid use of undefined type 'struct ubx_data'
316 | ret = PTR_ERR(data->vcc);
| ^~
drivers/gnss/ubx.c:320:13: error: invalid use of undefined type 'struct ubx_data'
320 | data->v_bckp = devm_regulator_get_optional(&serdev->dev, "v-bckp");
| ^~
drivers/gnss/ubx.c:321:24: error: invalid use of undefined type 'struct ubx_data'
321 | if (IS_ERR(data->v_bckp)) {
| ^~
drivers/gnss/ubx.c:322:35: error: invalid use of undefined type 'struct ubx_data'
322 | ret = PTR_ERR(data->v_bckp);
| ^~
drivers/gnss/ubx.c:324:29: error: invalid use of undefined type 'struct ubx_data'
324 | data->v_bckp = NULL;
| ^~
drivers/gnss/ubx.c:329:17: error: invalid use of undefined type 'struct ubx_data'
329 | if (data->v_bckp) {
| ^~
drivers/gnss/ubx.c:330:44: error: invalid use of undefined type 'struct ubx_data'
330 | ret = regulator_enable(data->v_bckp);
| ^~
drivers/gnss/ubx.c:342:17: error: invalid use of undefined type 'struct ubx_data'
342 | if (data->v_bckp)
| ^~
drivers/gnss/ubx.c:343:39: error: invalid use of undefined type 'struct ubx_data'
343 | regulator_disable(data->v_bckp);
| ^~
drivers/gnss/ubx.c: In function 'ubx_remove':
drivers/gnss/ubx.c:356:17: error: invalid use of undefined type 'struct ubx_data'
356 | if (data->v_bckp)
| ^~
drivers/gnss/ubx.c:357:39: error: invalid use of undefined type 'struct ubx_data'
357 | regulator_disable(data->v_bckp);
| ^~


vim +225 drivers/gnss/ubx.c

93acd4265d325a Alison Chaiken 2023-05-07 219
1ad69f10e3a58d Johan Hovold 2018-06-01 220 static int ubx_set_active(struct gnss_serial *gserial)
1ad69f10e3a58d Johan Hovold 2018-06-01 221 {
1ad69f10e3a58d Johan Hovold 2018-06-01 222 struct ubx_data *data = gnss_serial_get_drvdata(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 223 int ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 224
1ad69f10e3a58d Johan Hovold 2018-06-01 @225 ret = regulator_enable(data->vcc);
1ad69f10e3a58d Johan Hovold 2018-06-01 226 if (ret)
1ad69f10e3a58d Johan Hovold 2018-06-01 227 return ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 228
1ad69f10e3a58d Johan Hovold 2018-06-01 229 return 0;
1ad69f10e3a58d Johan Hovold 2018-06-01 230 }
1ad69f10e3a58d Johan Hovold 2018-06-01 231
1ad69f10e3a58d Johan Hovold 2018-06-01 232 static int ubx_set_standby(struct gnss_serial *gserial)
1ad69f10e3a58d Johan Hovold 2018-06-01 233 {
1ad69f10e3a58d Johan Hovold 2018-06-01 234 struct ubx_data *data = gnss_serial_get_drvdata(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 235 int ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 236
1ad69f10e3a58d Johan Hovold 2018-06-01 237 ret = regulator_disable(data->vcc);
1ad69f10e3a58d Johan Hovold 2018-06-01 238 if (ret)
1ad69f10e3a58d Johan Hovold 2018-06-01 239 return ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 240
1ad69f10e3a58d Johan Hovold 2018-06-01 241 return 0;
1ad69f10e3a58d Johan Hovold 2018-06-01 242 }
1ad69f10e3a58d Johan Hovold 2018-06-01 243
1ad69f10e3a58d Johan Hovold 2018-06-01 244 static int ubx_set_power(struct gnss_serial *gserial,
1ad69f10e3a58d Johan Hovold 2018-06-01 245 enum gnss_serial_pm_state state)
1ad69f10e3a58d Johan Hovold 2018-06-01 246 {
1ad69f10e3a58d Johan Hovold 2018-06-01 247 switch (state) {
1ad69f10e3a58d Johan Hovold 2018-06-01 248 case GNSS_SERIAL_ACTIVE:
1ad69f10e3a58d Johan Hovold 2018-06-01 249 return ubx_set_active(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 250 case GNSS_SERIAL_OFF:
1ad69f10e3a58d Johan Hovold 2018-06-01 251 case GNSS_SERIAL_STANDBY:
1ad69f10e3a58d Johan Hovold 2018-06-01 252 return ubx_set_standby(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 253 }
1ad69f10e3a58d Johan Hovold 2018-06-01 254
1ad69f10e3a58d Johan Hovold 2018-06-01 255 return -EINVAL;
1ad69f10e3a58d Johan Hovold 2018-06-01 256 }
1ad69f10e3a58d Johan Hovold 2018-06-01 257
55570f1a441787 Colin Ian King 2018-07-16 258 static const struct gnss_serial_ops ubx_gserial_ops = {
1ad69f10e3a58d Johan Hovold 2018-06-01 259 .set_power = ubx_set_power,
1ad69f10e3a58d Johan Hovold 2018-06-01 260 };
1ad69f10e3a58d Johan Hovold 2018-06-01 261
93acd4265d325a Alison Chaiken 2023-05-07 262 #ifdef CONFIG_OF
93acd4265d325a Alison Chaiken 2023-05-07 263 static const struct ubx_features zedf9p_feats = {
93acd4265d325a Alison Chaiken 2023-05-07 264 .min_baud = 9600,
93acd4265d325a Alison Chaiken 2023-05-07 265 .default_baud = 38400,
93acd4265d325a Alison Chaiken 2023-05-07 266 .max_baud = 921600,
93acd4265d325a Alison Chaiken 2023-05-07 267 .baud_config_reg = 0x40520001,
93acd4265d325a Alison Chaiken 2023-05-07 268 .open = zed_f9p_serial_open,
93acd4265d325a Alison Chaiken 2023-05-07 269 };
93acd4265d325a Alison Chaiken 2023-05-07 270
93acd4265d325a Alison Chaiken 2023-05-07 271 static const struct of_device_id ubx_of_match[] = {
93acd4265d325a Alison Chaiken 2023-05-07 272 { .compatible = "u-blox,neo-6m" },
93acd4265d325a Alison Chaiken 2023-05-07 273 { .compatible = "u-blox,neo-8" },
93acd4265d325a Alison Chaiken 2023-05-07 274 { .compatible = "u-blox,neo-m8" },
93acd4265d325a Alison Chaiken 2023-05-07 275 { .compatible = "u-blox,zed-f9p", .data = &zedf9p_feats },
93acd4265d325a Alison Chaiken 2023-05-07 276 {},
93acd4265d325a Alison Chaiken 2023-05-07 277 };
93acd4265d325a Alison Chaiken 2023-05-07 278 MODULE_DEVICE_TABLE(of, ubx_of_match);
93acd4265d325a Alison Chaiken 2023-05-07 279 #endif
93acd4265d325a Alison Chaiken 2023-05-07 280
1ad69f10e3a58d Johan Hovold 2018-06-01 281 static int ubx_probe(struct serdev_device *serdev)
1ad69f10e3a58d Johan Hovold 2018-06-01 282 {
1ad69f10e3a58d Johan Hovold 2018-06-01 283 struct gnss_serial *gserial;
1ad69f10e3a58d Johan Hovold 2018-06-01 284 struct ubx_data *data;
93acd4265d325a Alison Chaiken 2023-05-07 285 struct gnss_operations *ubx_gnss_ops;
1ad69f10e3a58d Johan Hovold 2018-06-01 286 int ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 287
1ad69f10e3a58d Johan Hovold 2018-06-01 @288 gserial = gnss_serial_allocate(serdev, sizeof(*data));
1ad69f10e3a58d Johan Hovold 2018-06-01 289 if (IS_ERR(gserial)) {
1ad69f10e3a58d Johan Hovold 2018-06-01 290 ret = PTR_ERR(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 291 return ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 292 }
93acd4265d325a Alison Chaiken 2023-05-07 293 ubx_gnss_ops = kzalloc(sizeof(struct gnss_operations), GFP_KERNEL);
93acd4265d325a Alison Chaiken 2023-05-07 294 if (IS_ERR(ubx_gnss_ops)) {
93acd4265d325a Alison Chaiken 2023-05-07 295 ret = PTR_ERR(ubx_gnss_ops);
93acd4265d325a Alison Chaiken 2023-05-07 296 return ret;
93acd4265d325a Alison Chaiken 2023-05-07 297 }
1ad69f10e3a58d Johan Hovold 2018-06-01 298
1ad69f10e3a58d Johan Hovold 2018-06-01 299 gserial->ops = &ubx_gserial_ops;
1ad69f10e3a58d Johan Hovold 2018-06-01 300
10f146639fee5f Johan Hovold 2018-06-01 301 gserial->gdev->type = GNSS_TYPE_UBX;
10f146639fee5f Johan Hovold 2018-06-01 302
1ad69f10e3a58d Johan Hovold 2018-06-01 303 data = gnss_serial_get_drvdata(gserial);
93acd4265d325a Alison Chaiken 2023-05-07 304 if (IS_ENABLED(CONFIG_OF)) {
93acd4265d325a Alison Chaiken 2023-05-07 305 data->is_configured = 0;
93acd4265d325a Alison Chaiken 2023-05-07 306 data->features = of_match_device(ubx_of_match, &serdev->dev)->data;
93acd4265d325a Alison Chaiken 2023-05-07 307 if (data->features && data->features->open) {
93acd4265d325a Alison Chaiken 2023-05-07 308 ubx_gnss_ops->open = data->features->open;
93acd4265d325a Alison Chaiken 2023-05-07 309 ubx_gnss_ops->close = gserial->gdev->ops->close;
93acd4265d325a Alison Chaiken 2023-05-07 310 ubx_gnss_ops->write_raw = gserial->gdev->ops->write_raw;
93acd4265d325a Alison Chaiken 2023-05-07 311 gserial->gdev->ops = ubx_gnss_ops;
93acd4265d325a Alison Chaiken 2023-05-07 312 }
93acd4265d325a Alison Chaiken 2023-05-07 313 }
1ad69f10e3a58d Johan Hovold 2018-06-01 314 data->vcc = devm_regulator_get(&serdev->dev, "vcc");
1ad69f10e3a58d Johan Hovold 2018-06-01 315 if (IS_ERR(data->vcc)) {
1ad69f10e3a58d Johan Hovold 2018-06-01 316 ret = PTR_ERR(data->vcc);
1ad69f10e3a58d Johan Hovold 2018-06-01 317 goto err_free_gserial;
1ad69f10e3a58d Johan Hovold 2018-06-01 318 }
1ad69f10e3a58d Johan Hovold 2018-06-01 319
1ad69f10e3a58d Johan Hovold 2018-06-01 320 data->v_bckp = devm_regulator_get_optional(&serdev->dev, "v-bckp");
1ad69f10e3a58d Johan Hovold 2018-06-01 321 if (IS_ERR(data->v_bckp)) {
1ad69f10e3a58d Johan Hovold 2018-06-01 322 ret = PTR_ERR(data->v_bckp);
1ad69f10e3a58d Johan Hovold 2018-06-01 323 if (ret == -ENODEV)
1ad69f10e3a58d Johan Hovold 2018-06-01 324 data->v_bckp = NULL;
1ad69f10e3a58d Johan Hovold 2018-06-01 325 else
1ad69f10e3a58d Johan Hovold 2018-06-01 326 goto err_free_gserial;
1ad69f10e3a58d Johan Hovold 2018-06-01 327 }
1ad69f10e3a58d Johan Hovold 2018-06-01 328
1ad69f10e3a58d Johan Hovold 2018-06-01 329 if (data->v_bckp) {
1ad69f10e3a58d Johan Hovold 2018-06-01 330 ret = regulator_enable(data->v_bckp);
1ad69f10e3a58d Johan Hovold 2018-06-01 331 if (ret)
1ad69f10e3a58d Johan Hovold 2018-06-01 332 goto err_free_gserial;
1ad69f10e3a58d Johan Hovold 2018-06-01 333 }
1ad69f10e3a58d Johan Hovold 2018-06-01 334
1ad69f10e3a58d Johan Hovold 2018-06-01 335 ret = gnss_serial_register(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 336 if (ret)
1ad69f10e3a58d Johan Hovold 2018-06-01 337 goto err_disable_v_bckp;
1ad69f10e3a58d Johan Hovold 2018-06-01 338
1ad69f10e3a58d Johan Hovold 2018-06-01 339 return 0;
1ad69f10e3a58d Johan Hovold 2018-06-01 340
1ad69f10e3a58d Johan Hovold 2018-06-01 341 err_disable_v_bckp:
1ad69f10e3a58d Johan Hovold 2018-06-01 342 if (data->v_bckp)
1ad69f10e3a58d Johan Hovold 2018-06-01 343 regulator_disable(data->v_bckp);
1ad69f10e3a58d Johan Hovold 2018-06-01 344 err_free_gserial:
1ad69f10e3a58d Johan Hovold 2018-06-01 345 gnss_serial_free(gserial);
1ad69f10e3a58d Johan Hovold 2018-06-01 346
1ad69f10e3a58d Johan Hovold 2018-06-01 347 return ret;
1ad69f10e3a58d Johan Hovold 2018-06-01 348 }
1ad69f10e3a58d Johan Hovold 2018-06-01 349

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests