[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202512060556.pgIgFNxx-lkp@intel.com>
Date: Tue, 9 Dec 2025 11:48:37 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: oe-kbuild@...ts.linux.dev, Sriram Dash <sriram.dash@....qualcomm.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Wesley Cheng <quic_wcheng@...cinc.com>,
Thinh Nguyen <Thinh.Nguyen@...opsys.com>
Cc: lkp@...el.com, oe-kbuild-all@...ts.linux.dev,
jack.pham@....qualcomm.com, faisal.hassan@....qualcomm.com,
krishna.kurapati@....qualcomm.com, andersson@...nel.org,
linux-arm-msm@...r.kernel.org, linux-usb@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
Sriram Dash <sriram.dash@....qualcomm.com>,
Konrad Dybcio <konradybcio@...nel.org>,
Shazad Hussain <shazad.hussain@....qualcomm.com>
Subject: Re: [PATCH 2/2] usb: dwc3: qcom: Support firmware-managed resource
states for power management
Hi Sriram,
kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/Sriram-Dash/dt-bindings-usb-qcom-snps-dwc3-Add-support-for-firmware-managed-resources/20251127-183548
base: c77a6544d8a2364e4bee1b52890f577be27b7296
patch link: https://lore.kernel.org/r/20251127-controller_scmi_upstream-v1-2-38bcca513c28%40oss.qualcomm.com
patch subject: [PATCH 2/2] usb: dwc3: qcom: Support firmware-managed resource states for power management
config: nios2-randconfig-r071-20251204 (https://download.01.org/0day-ci/archive/20251206/202512060556.pgIgFNxx-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 8.5.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Reported-by: Dan Carpenter <dan.carpenter@...aro.org>
| Closes: https://lore.kernel.org/r/202512060556.pgIgFNxx-lkp@intel.com/
smatch warnings:
drivers/usb/dwc3/dwc3-qcom.c:801 dwc3_qcom_probe() error: uninitialized symbol 'ret'.
vim +/ret +801 drivers/usb/dwc3/dwc3-qcom.c
21188e8d6d7590 Krishna Kurapati 2025-09-07 668
2bc02355f8ba2c Lee Jones 2019-06-17 669 static int dwc3_qcom_probe(struct platform_device *pdev)
2bc02355f8ba2c Lee Jones 2019-06-17 670 {
1881a32fe14df8 Bjorn Andersson 2025-04-14 671 struct dwc3_probe_data probe_data = {};
2bc02355f8ba2c Lee Jones 2019-06-17 672 struct device *dev = &pdev->dev;
a4333c3a6ba9ca Manu Gautam 2018-05-09 673 struct dwc3_qcom *qcom;
1881a32fe14df8 Bjorn Andersson 2025-04-14 674 struct resource res;
1881a32fe14df8 Bjorn Andersson 2025-04-14 675 struct resource *r;
e33ebb133a245a Bjorn Andersson 2025-05-08 676 int ret;
a4333c3a6ba9ca Manu Gautam 2018-05-09 677 bool ignore_pipe_clk;
e3fafbd8e36530 Johan Hovold 2022-08-04 678 bool wakeup_source;
a4333c3a6ba9ca Manu Gautam 2018-05-09 679
a4333c3a6ba9ca Manu Gautam 2018-05-09 680 qcom = devm_kzalloc(&pdev->dev, sizeof(*qcom), GFP_KERNEL);
a4333c3a6ba9ca Manu Gautam 2018-05-09 681 if (!qcom)
a4333c3a6ba9ca Manu Gautam 2018-05-09 682 return -ENOMEM;
a4333c3a6ba9ca Manu Gautam 2018-05-09 683
a4333c3a6ba9ca Manu Gautam 2018-05-09 684 qcom->dev = &pdev->dev;
a4333c3a6ba9ca Manu Gautam 2018-05-09 685
79456073227880 Sriram Dash 2025-11-27 686 qcom->fw_managed = device_get_match_data(dev);
79456073227880 Sriram Dash 2025-11-27 687 if (qcom->fw_managed) {
79456073227880 Sriram Dash 2025-11-27 688 ret = dev_pm_opp_set_level(qcom->dev, DWC3_QCOM_FW_MANAGED_INIT);
79456073227880 Sriram Dash 2025-11-27 689 if (ret < 0)
79456073227880 Sriram Dash 2025-11-27 690 return ret;
79456073227880 Sriram Dash 2025-11-27 691 }
79456073227880 Sriram Dash 2025-11-27 692
a4333c3a6ba9ca Manu Gautam 2018-05-09 693 qcom->resets = devm_reset_control_array_get_optional_exclusive(dev);
a4333c3a6ba9ca Manu Gautam 2018-05-09 694 if (IS_ERR(qcom->resets)) {
79456073227880 Sriram Dash 2025-11-27 695 dev_err_probe(&pdev->dev, PTR_ERR(qcom->resets),
60d5b71933c4f1 Andrew Halaney 2023-06-05 696 "failed to get resets\n");
ret = dev_err_probe()
79456073227880 Sriram Dash 2025-11-27 697 goto resources_off;
a4333c3a6ba9ca Manu Gautam 2018-05-09 698 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 699
e33ebb133a245a Bjorn Andersson 2025-05-08 700 ret = devm_clk_bulk_get_all(&pdev->dev, &qcom->clks);
e33ebb133a245a Bjorn Andersson 2025-05-08 701 if (ret < 0)
e33ebb133a245a Bjorn Andersson 2025-05-08 702 return dev_err_probe(dev, ret, "failed to get clocks\n");
e33ebb133a245a Bjorn Andersson 2025-05-08 703 qcom->num_clocks = ret;
e33ebb133a245a Bjorn Andersson 2025-05-08 704
a4333c3a6ba9ca Manu Gautam 2018-05-09 705 ret = reset_control_assert(qcom->resets);
a4333c3a6ba9ca Manu Gautam 2018-05-09 706 if (ret) {
a4333c3a6ba9ca Manu Gautam 2018-05-09 707 dev_err(&pdev->dev, "failed to assert resets, err=%d\n", ret);
79456073227880 Sriram Dash 2025-11-27 708 goto resources_off;
a4333c3a6ba9ca Manu Gautam 2018-05-09 709 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 710
a4333c3a6ba9ca Manu Gautam 2018-05-09 711 usleep_range(10, 1000);
a4333c3a6ba9ca Manu Gautam 2018-05-09 712
a4333c3a6ba9ca Manu Gautam 2018-05-09 713 ret = reset_control_deassert(qcom->resets);
a4333c3a6ba9ca Manu Gautam 2018-05-09 714 if (ret) {
a4333c3a6ba9ca Manu Gautam 2018-05-09 715 dev_err(&pdev->dev, "failed to deassert resets, err=%d\n", ret);
ef8abc0ba49ce7 Krishna Kurapati 2025-07-09 716 return ret;
a4333c3a6ba9ca Manu Gautam 2018-05-09 717 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 718
e33ebb133a245a Bjorn Andersson 2025-05-08 719 ret = clk_bulk_prepare_enable(qcom->num_clocks, qcom->clks);
e33ebb133a245a Bjorn Andersson 2025-05-08 720 if (ret < 0)
ef8abc0ba49ce7 Krishna Kurapati 2025-07-09 721 return ret;
a4333c3a6ba9ca Manu Gautam 2018-05-09 722
1881a32fe14df8 Bjorn Andersson 2025-04-14 723 r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
4c0fca65d10548 Dan Carpenter 2025-04-23 724 if (!r) {
4c0fca65d10548 Dan Carpenter 2025-04-23 725 ret = -EINVAL;
1881a32fe14df8 Bjorn Andersson 2025-04-14 726 goto clk_disable;
4c0fca65d10548 Dan Carpenter 2025-04-23 727 }
1881a32fe14df8 Bjorn Andersson 2025-04-14 728 res = *r;
1881a32fe14df8 Bjorn Andersson 2025-04-14 729 res.end = res.start + SDM845_QSCRATCH_BASE_OFFSET;
1881a32fe14df8 Bjorn Andersson 2025-04-14 730
1881a32fe14df8 Bjorn Andersson 2025-04-14 731 qcom->qscratch_base = devm_ioremap(dev, res.end, SDM845_QSCRATCH_SIZE);
4c0fca65d10548 Dan Carpenter 2025-04-23 732 if (!qcom->qscratch_base) {
4c0fca65d10548 Dan Carpenter 2025-04-23 733 dev_err(dev, "failed to map qscratch region\n");
4c0fca65d10548 Dan Carpenter 2025-04-23 734 ret = -ENOMEM;
41717b88abf1ca Krishna Kurapati 2024-03-05 735 goto clk_disable;
a4333c3a6ba9ca Manu Gautam 2018-05-09 736 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 737
2dc9f137e19426 Bjorn Andersson 2025-04-14 738 ret = dwc3_qcom_setup_irq(qcom, pdev);
2bc02355f8ba2c Lee Jones 2019-06-17 739 if (ret) {
2bc02355f8ba2c Lee Jones 2019-06-17 740 dev_err(dev, "failed to setup IRQs, err=%d\n", ret);
41717b88abf1ca Krishna Kurapati 2024-03-05 741 goto clk_disable;
a4333c3a6ba9ca Manu Gautam 2018-05-09 742 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 743
a4333c3a6ba9ca Manu Gautam 2018-05-09 744 /*
a4333c3a6ba9ca Manu Gautam 2018-05-09 745 * Disable pipe_clk requirement if specified. Used when dwc3
a4333c3a6ba9ca Manu Gautam 2018-05-09 746 * operates without SSPHY and only HS/FS/LS modes are supported.
a4333c3a6ba9ca Manu Gautam 2018-05-09 747 */
a4333c3a6ba9ca Manu Gautam 2018-05-09 748 ignore_pipe_clk = device_property_read_bool(dev,
a4333c3a6ba9ca Manu Gautam 2018-05-09 749 "qcom,select-utmi-as-pipe-clk");
a4333c3a6ba9ca Manu Gautam 2018-05-09 750 if (ignore_pipe_clk)
a4333c3a6ba9ca Manu Gautam 2018-05-09 751 dwc3_qcom_select_utmi_clk(qcom);
a4333c3a6ba9ca Manu Gautam 2018-05-09 752
21188e8d6d7590 Krishna Kurapati 2025-09-07 753 qcom->mode = usb_get_dr_mode(dev);
21188e8d6d7590 Krishna Kurapati 2025-09-07 754
21188e8d6d7590 Krishna Kurapati 2025-09-07 755 if (qcom->mode == USB_DR_MODE_HOST) {
21188e8d6d7590 Krishna Kurapati 2025-09-07 756 qcom->current_role = USB_ROLE_HOST;
21188e8d6d7590 Krishna Kurapati 2025-09-07 757 } else if (qcom->mode == USB_DR_MODE_PERIPHERAL) {
21188e8d6d7590 Krishna Kurapati 2025-09-07 758 qcom->current_role = USB_ROLE_DEVICE;
21188e8d6d7590 Krishna Kurapati 2025-09-07 759 dwc3_qcom_vbus_override_enable(qcom, true);
21188e8d6d7590 Krishna Kurapati 2025-09-07 760 } else {
21188e8d6d7590 Krishna Kurapati 2025-09-07 761 if ((device_property_read_bool(dev, "usb-role-switch")) &&
21188e8d6d7590 Krishna Kurapati 2025-09-07 762 (usb_get_role_switch_default_mode(dev) == USB_DR_MODE_HOST))
21188e8d6d7590 Krishna Kurapati 2025-09-07 763 qcom->current_role = USB_ROLE_HOST;
21188e8d6d7590 Krishna Kurapati 2025-09-07 764 else
21188e8d6d7590 Krishna Kurapati 2025-09-07 765 qcom->current_role = USB_ROLE_DEVICE;
21188e8d6d7590 Krishna Kurapati 2025-09-07 766 }
21188e8d6d7590 Krishna Kurapati 2025-09-07 767
21188e8d6d7590 Krishna Kurapati 2025-09-07 768 qcom->dwc.glue_ops = &dwc3_qcom_glue_ops;
21188e8d6d7590 Krishna Kurapati 2025-09-07 769
1881a32fe14df8 Bjorn Andersson 2025-04-14 770 qcom->dwc.dev = dev;
1881a32fe14df8 Bjorn Andersson 2025-04-14 771 probe_data.dwc = &qcom->dwc;
1881a32fe14df8 Bjorn Andersson 2025-04-14 772 probe_data.res = &res;
1881a32fe14df8 Bjorn Andersson 2025-04-14 773 probe_data.ignore_clocks_and_resets = true;
7298c06d58e23c Frank Li 2025-09-29 774 probe_data.properties = DWC3_DEFAULT_PROPERTIES;
1881a32fe14df8 Bjorn Andersson 2025-04-14 775 ret = dwc3_core_probe(&probe_data);
2bc02355f8ba2c Lee Jones 2019-06-17 776 if (ret) {
1881a32fe14df8 Bjorn Andersson 2025-04-14 777 ret = dev_err_probe(dev, ret, "failed to register DWC3 Core\n");
41717b88abf1ca Krishna Kurapati 2024-03-05 778 goto clk_disable;
a4333c3a6ba9ca Manu Gautam 2018-05-09 779 }
a4333c3a6ba9ca Manu Gautam 2018-05-09 780
bea46b9815154a Sandeep Maheswaram 2020-07-27 781 ret = dwc3_qcom_interconnect_init(qcom);
bea46b9815154a Sandeep Maheswaram 2020-07-27 782 if (ret)
1881a32fe14df8 Bjorn Andersson 2025-04-14 783 goto remove_core;
bea46b9815154a Sandeep Maheswaram 2020-07-27 784
e3fafbd8e36530 Johan Hovold 2022-08-04 785 wakeup_source = of_property_read_bool(dev->of_node, "wakeup-source");
e3fafbd8e36530 Johan Hovold 2022-08-04 786 device_init_wakeup(&pdev->dev, wakeup_source);
d9be8d5c5b032e Sandeep Maheswaram 2022-06-13 787
a4333c3a6ba9ca Manu Gautam 2018-05-09 788 qcom->is_suspended = false;
a4333c3a6ba9ca Manu Gautam 2018-05-09 789
a4333c3a6ba9ca Manu Gautam 2018-05-09 790 return 0;
a4333c3a6ba9ca Manu Gautam 2018-05-09 791
1881a32fe14df8 Bjorn Andersson 2025-04-14 792 remove_core:
1881a32fe14df8 Bjorn Andersson 2025-04-14 793 dwc3_core_remove(&qcom->dwc);
a4333c3a6ba9ca Manu Gautam 2018-05-09 794 clk_disable:
e33ebb133a245a Bjorn Andersson 2025-05-08 795 clk_bulk_disable_unprepare(qcom->num_clocks, qcom->clks);
a4333c3a6ba9ca Manu Gautam 2018-05-09 796
79456073227880 Sriram Dash 2025-11-27 797 resources_off:
79456073227880 Sriram Dash 2025-11-27 798 if (qcom->fw_managed)
79456073227880 Sriram Dash 2025-11-27 799 dev_pm_opp_set_level(qcom->dev, DWC3_QCOM_FW_MANAGED_EXIT);
79456073227880 Sriram Dash 2025-11-27 800
a4333c3a6ba9ca Manu Gautam 2018-05-09 @801 return ret;
a4333c3a6ba9ca Manu Gautam 2018-05-09 802 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists