Hi Xiangxu, kernel test robot noticed the following build warnings: [auto build test WARNING on f486c8aa16b8172f63bddc70116a0c897a7f3f02] url: https://github.com/intel-lab-lkp/linux/commits/Xiangxu-Yin/dt-bindings-display-msm-Document-DP-on-QCS615/20241129-160612 base: f486c8aa16b8172f63bddc70116a0c897a7f3f02 patch link: https://lore.kernel.org/r/20241129-add-displayport-support-for-qcs615-platform-v1-3-09a4338d93ef%40quicinc.com patch subject: [PATCH 3/8] phy: qcom: qmp-usbc: Add DP phy mode support on QCS615 config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20241129/202411292042.NDeS4BGv-lkp@xxxxxxxxx/config) compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241129/202411292042.NDeS4BGv-lkp@xxxxxxxxx/reproduce) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202411292042.NDeS4BGv-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): In file included from drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:17: In file included from include/linux/phy/phy.h:17: In file included from include/linux/regulator/consumer.h:35: In file included from include/linux/suspend.h:5: In file included from include/linux/swap.h:9: In file included from include/linux/memcontrol.h:21: In file included from include/linux/mm.h:2223: include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 504 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 505 | item]; | ~~~~ include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 511 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 512 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 518 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 524 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 525 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:721:24: warning: variable 'pre_emphasis_cfg' is uninitialized when used here [-Wuninitialized] 721 | if ((v_level > 4) || (pre_emphasis_cfg > 4)) { | ^~~~~~~~~~~~~~~~ drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:708:40: note: initialize the variable 'pre_emphasis_cfg' to silence this warning 708 | u8 voltage_swing_cfg, pre_emphasis_cfg; | ^ | = '\0' >> drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:1801:47: warning: variable 'ret' is uninitialized when used here [-Wuninitialized] 1801 | dev_err(dev, "get resource fail, ret:%d\n", ret); | ^~~ include/linux/dev_printk.h:154:65: note: expanded from macro 'dev_err' 154 | dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~~~~~ include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap' 110 | _p_func(dev, fmt, ##__VA_ARGS__); \ | ^~~~~~~~~~~ drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:1797:9: note: initialize the variable 'ret' to silence this warning 1797 | int ret; | ^ | = 0 >> drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:2082:13: warning: variable 'np' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] 2082 | } else if (qmp->type == QMP_PHY_USBC_DP) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:2150:14: note: uninitialized use occurs here 2150 | of_node_put(np); | ^~ drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:2082:9: note: remove the 'if' if its condition is always true 2082 | } else if (qmp->type == QMP_PHY_USBC_DP) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/phy/qualcomm/phy-qcom-qmp-usbc.c:2027:24: note: initialize the variable 'np' to silence this warning 2027 | struct device_node *np; | ^ | = NULL 7 warnings generated. vim +/pre_emphasis_cfg +721 drivers/phy/qualcomm/phy-qcom-qmp-usbc.c 699 700 static int qcs615_qmp_configure_dp_voltages(struct qmp_usbc *qmp) 701 { 702 struct qmp_phy_dp_layout *layout = to_dp_layout(qmp); 703 struct qmp_phy_dp_cfg *cfg = to_dp_cfg(qmp); 704 const struct phy_configure_opts_dp *dp_opts = &layout->dp_opts; 705 void __iomem *tx = layout->dp_tx; 706 void __iomem *tx2 = layout->dp_tx2; 707 unsigned int v_level = 0, p_level = 0; 708 u8 voltage_swing_cfg, pre_emphasis_cfg; 709 int i; 710 711 if (dp_opts->lanes > 4) { 712 dev_err(qmp->dev, "Invalid lane_num(%d)\n", dp_opts->lanes); 713 return -EINVAL; 714 } 715 716 for (i = 0; i < dp_opts->lanes; i++) { 717 v_level = max(v_level, dp_opts->voltage[i]); 718 p_level = max(p_level, dp_opts->pre[i]); 719 } 720 > 721 if ((v_level > 4) || (pre_emphasis_cfg > 4)) { 722 dev_err(qmp->dev, "Invalid v(%d) | p(%d) level)\n", 723 v_level, pre_emphasis_cfg); 724 return -EINVAL; 725 } 726 727 voltage_swing_cfg = (*cfg->swing_tbl)[v_level][p_level]; 728 pre_emphasis_cfg = (*cfg->pre_emphasis_tbl)[v_level][p_level]; 729 730 /* Enable MUX to use Cursor values from these registers */ 731 voltage_swing_cfg |= DP_PHY_TXn_TX_DRV_LVL_MUX_EN; 732 pre_emphasis_cfg |= DP_PHY_TXn_TX_EMP_POST1_LVL_MUX_EN; 733 734 if (voltage_swing_cfg == 0xFF && pre_emphasis_cfg == 0xFF) 735 return -EINVAL; 736 737 /* program default setting first */ 738 writel(0x2A, tx + QSERDES_V3_TX_TX_DRV_LVL); 739 writel(0x20, tx + QSERDES_V3_TX_TX_EMP_POST1_LVL); 740 writel(0x2A, tx2 + QSERDES_V3_TX_TX_DRV_LVL); 741 writel(0x20, tx2 + QSERDES_V3_TX_TX_EMP_POST1_LVL); 742 743 writel(voltage_swing_cfg, tx + QSERDES_V3_TX_TX_DRV_LVL); 744 writel(pre_emphasis_cfg, tx + QSERDES_V3_TX_TX_EMP_POST1_LVL); 745 writel(voltage_swing_cfg, tx2 + QSERDES_V3_TX_TX_DRV_LVL); 746 writel(pre_emphasis_cfg, tx2 + QSERDES_V3_TX_TX_EMP_POST1_LVL); 747 748 return 0; 749 } 750 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki