CC: [email protected] CC: [email protected] TO: Hans Verkuil <[email protected]>
tree: git://linuxtv.org/hverkuil/media_tree.git hdmi-dbg head: 62840ed1491a81a6c57dd4183216c5e599f8025d commit: b8ca4c46e7613329ffb82d415cc062175f442e16 [9/11] gpio-virt-link: wip: add virtual gpio link driver :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: x86_64-randconfig-m031-20210911 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/gpio/gpio-virt-link.c:552 gpio_virt_link_probe() error: uninitialized symbol 'ret'. vim +/ret +552 drivers/gpio/gpio-virt-link.c b8ca4c46e7613329 Hans Verkuil 2021-08-11 476 b8ca4c46e7613329 Hans Verkuil 2021-08-11 477 static int gpio_virt_link_probe(struct platform_device *pdev) b8ca4c46e7613329 Hans Verkuil 2021-08-11 478 { b8ca4c46e7613329 Hans Verkuil 2021-08-11 479 struct gpio_virt_link_state *state; b8ca4c46e7613329 Hans Verkuil 2021-08-11 480 struct device_node *node, *link_node; b8ca4c46e7613329 Hans Verkuil 2021-08-11 481 const char *reg_name; b8ca4c46e7613329 Hans Verkuil 2021-08-11 482 int out = 0; b8ca4c46e7613329 Hans Verkuil 2021-08-11 483 int in = 0; b8ca4c46e7613329 Hans Verkuil 2021-08-11 484 int ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 485 b8ca4c46e7613329 Hans Verkuil 2021-08-11 486 /* out */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 487 node = of_get_child_by_name(pdev->dev.of_node, GVL_NODE_OUT); b8ca4c46e7613329 Hans Verkuil 2021-08-11 488 if (node) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 489 ret = of_property_read_u32(node, "num-gpios", &out); b8ca4c46e7613329 Hans Verkuil 2021-08-11 490 of_node_put(node); b8ca4c46e7613329 Hans Verkuil 2021-08-11 491 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 492 dev_err(&pdev->dev, "%s: no out num-gpios property\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 493 return ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 494 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 495 if (out > MAX_NUM_OUT || out == 0) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 496 dev_err(&pdev->dev, "%s: requested %d number of outputs\n", __func__, out); b8ca4c46e7613329 Hans Verkuil 2021-08-11 497 return -EINVAL; b8ca4c46e7613329 Hans Verkuil 2021-08-11 498 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 499 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 500 b8ca4c46e7613329 Hans Verkuil 2021-08-11 501 /* in */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 502 node = of_get_child_by_name(pdev->dev.of_node, GVL_NODE_IN); b8ca4c46e7613329 Hans Verkuil 2021-08-11 503 if (node) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 504 ret = of_property_read_u32(node, "num-gpios", &in); b8ca4c46e7613329 Hans Verkuil 2021-08-11 505 of_node_put(node); b8ca4c46e7613329 Hans Verkuil 2021-08-11 506 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 507 dev_err(&pdev->dev, "%s: no in num-gpios property\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 508 return ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 509 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 510 if (in > MAX_NUM_IN || in == 0) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 511 dev_err(&pdev->dev, "%s: requested %d number of inputs\n", __func__, in); b8ca4c46e7613329 Hans Verkuil 2021-08-11 512 return -EINVAL; b8ca4c46e7613329 Hans Verkuil 2021-08-11 513 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 514 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 515 b8ca4c46e7613329 Hans Verkuil 2021-08-11 516 /* state */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 517 state = devm_kzalloc(&pdev->dev, sizeof(struct gpio_virt_link_state), GFP_KERNEL); b8ca4c46e7613329 Hans Verkuil 2021-08-11 518 if (!state) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 519 return -ENOMEM; b8ca4c46e7613329 Hans Verkuil 2021-08-11 520 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 521 b8ca4c46e7613329 Hans Verkuil 2021-08-11 522 state->dev = &pdev->dev; b8ca4c46e7613329 Hans Verkuil 2021-08-11 523 state->num_outputs = out; b8ca4c46e7613329 Hans Verkuil 2021-08-11 524 state->num_inputs = in; b8ca4c46e7613329 Hans Verkuil 2021-08-11 525 b8ca4c46e7613329 Hans Verkuil 2021-08-11 526 /* links */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 527 node = of_get_child_by_name(pdev->dev.of_node, "links"); b8ca4c46e7613329 Hans Verkuil 2021-08-11 528 if (node) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 529 int i = 0; b8ca4c46e7613329 Hans Verkuil 2021-08-11 530 state->num_links = of_get_child_count(node); b8ca4c46e7613329 Hans Verkuil 2021-08-11 531 if (state->num_links > MAX_NUM_LINKS) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 532 of_node_put(node); b8ca4c46e7613329 Hans Verkuil 2021-08-11 533 dev_err(&pdev->dev, "%s: requested %d number of links\n", __func__, state->num_links); b8ca4c46e7613329 Hans Verkuil 2021-08-11 534 return -EINVAL; b8ca4c46e7613329 Hans Verkuil 2021-08-11 535 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 536 for_each_child_of_node(node, link_node) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 537 ret = of_property_read_string(link_node, "desc", &state->links[i].desc); b8ca4c46e7613329 Hans Verkuil 2021-08-11 538 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 539 state->links[i].desc = NULL; b8ca4c46e7613329 Hans Verkuil 2021-08-11 540 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 541 ret = of_property_read_u32(link_node, "out", &state->links[i].out); b8ca4c46e7613329 Hans Verkuil 2021-08-11 542 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 543 break; b8ca4c46e7613329 Hans Verkuil 2021-08-11 544 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 545 ret = of_property_read_u32(link_node, "in", &state->links[i].in); b8ca4c46e7613329 Hans Verkuil 2021-08-11 546 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 547 break; b8ca4c46e7613329 Hans Verkuil 2021-08-11 548 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 549 i++; b8ca4c46e7613329 Hans Verkuil 2021-08-11 550 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 551 of_node_put(node); b8ca4c46e7613329 Hans Verkuil 2021-08-11 @552 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 553 dev_err(&pdev->dev, "%s: failed getting link %d setting\n", __func__, i); b8ca4c46e7613329 Hans Verkuil 2021-08-11 554 return ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 555 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 556 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 557 b8ca4c46e7613329 Hans Verkuil 2021-08-11 558 /* lock */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 559 spin_lock_init(&state->lock); b8ca4c46e7613329 Hans Verkuil 2021-08-11 560 b8ca4c46e7613329 Hans Verkuil 2021-08-11 561 ret = gpio_virt_link_add_gpio_chips(state); b8ca4c46e7613329 Hans Verkuil 2021-08-11 562 if (ret) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 563 dev_err(&pdev->dev, "%s: add gpio chips failed\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 564 return ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 565 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 566 b8ca4c46e7613329 Hans Verkuil 2021-08-11 567 ret = of_property_read_string(pdev->dev.of_node, "reg-name", ®_name); b8ca4c46e7613329 Hans Verkuil 2021-08-11 568 if (ret == 0) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 569 snprintf(state->dbg.name, sizeof(state->dbg.name), "%s_%s", GPIO_VIRT_LINK_DRV_NAME, reg_name); b8ca4c46e7613329 Hans Verkuil 2021-08-11 570 } else { b8ca4c46e7613329 Hans Verkuil 2021-08-11 571 snprintf(state->dbg.name, sizeof(state->dbg.name), "%s", GPIO_VIRT_LINK_DRV_NAME); b8ca4c46e7613329 Hans Verkuil 2021-08-11 572 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 573 b8ca4c46e7613329 Hans Verkuil 2021-08-11 574 state->workqueue = create_singlethread_workqueue(state->dbg.name); b8ca4c46e7613329 Hans Verkuil 2021-08-11 575 if (!state->workqueue) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 576 dev_err(&pdev->dev, "Failed to create workqueue\n"); b8ca4c46e7613329 Hans Verkuil 2021-08-11 577 ret = -ENOMEM; b8ca4c46e7613329 Hans Verkuil 2021-08-11 578 goto err_work_queue; b8ca4c46e7613329 Hans Verkuil 2021-08-11 579 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 580 INIT_WORK(&state->update_input_work, vgl_update_input_work); b8ca4c46e7613329 Hans Verkuil 2021-08-11 581 b8ca4c46e7613329 Hans Verkuil 2021-08-11 582 /* debug-fs */ b8ca4c46e7613329 Hans Verkuil 2021-08-11 583 state->dbg.fsroot = debugfs_create_dir(state->dbg.name, NULL); b8ca4c46e7613329 Hans Verkuil 2021-08-11 584 if (!state->dbg.fsroot) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 585 dev_err(&pdev->dev, "%s: failed to create fsroot\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 586 ret = -EIO; b8ca4c46e7613329 Hans Verkuil 2021-08-11 587 goto err_fsroot; b8ca4c46e7613329 Hans Verkuil 2021-08-11 588 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 589 b8ca4c46e7613329 Hans Verkuil 2021-08-11 590 state->dbg.status = debugfs_create_file("status", S_IRUGO, state->dbg.fsroot, state, &dbg_status_fops); b8ca4c46e7613329 Hans Verkuil 2021-08-11 591 if (!state->dbg.status) { b8ca4c46e7613329 Hans Verkuil 2021-08-11 592 dev_err(&pdev->dev, "%s: failed to create debugfs file\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 593 ret = -EIO; b8ca4c46e7613329 Hans Verkuil 2021-08-11 594 goto err_fs_status; b8ca4c46e7613329 Hans Verkuil 2021-08-11 595 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 596 b8ca4c46e7613329 Hans Verkuil 2021-08-11 597 platform_set_drvdata(pdev, state); b8ca4c46e7613329 Hans Verkuil 2021-08-11 598 b8ca4c46e7613329 Hans Verkuil 2021-08-11 599 dev_info(&pdev->dev, "%s:\n", __func__); b8ca4c46e7613329 Hans Verkuil 2021-08-11 600 b8ca4c46e7613329 Hans Verkuil 2021-08-11 601 return 0; b8ca4c46e7613329 Hans Verkuil 2021-08-11 602 b8ca4c46e7613329 Hans Verkuil 2021-08-11 603 err_fs_status: b8ca4c46e7613329 Hans Verkuil 2021-08-11 604 debugfs_remove_recursive(state->dbg.fsroot); b8ca4c46e7613329 Hans Verkuil 2021-08-11 605 err_fsroot: b8ca4c46e7613329 Hans Verkuil 2021-08-11 606 destroy_workqueue(state->workqueue); b8ca4c46e7613329 Hans Verkuil 2021-08-11 607 err_work_queue: b8ca4c46e7613329 Hans Verkuil 2021-08-11 608 return ret; b8ca4c46e7613329 Hans Verkuil 2021-08-11 609 } b8ca4c46e7613329 Hans Verkuil 2021-08-11 610 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
