Hi Alim, I love your patch! Perhaps something to improve: [auto build test WARNING on 0e698dfa282211e414076f9dc7e83c1c288314fd] url: https://github.com/0day-ci/linux/commits/Alim-Akhtar/exynos-ufs-Add-support-for-UFS-HCI/20200613-110608 base: 0e698dfa282211e414076f9dc7e83c1c288314fd config: x86_64-allyesconfig (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project d7e6f116f4517952fbdf5ad4b5ff67e378600c60) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>, old ones prefixed by <<): >> drivers/phy/samsung/phy-samsung-ufs.c:47:5: warning: no previous prototype for function 'samsung_ufs_phy_wait_for_lock_acq' [-Wmissing-prototypes] int samsung_ufs_phy_wait_for_lock_acq(struct phy *phy) ^ drivers/phy/samsung/phy-samsung-ufs.c:47:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int samsung_ufs_phy_wait_for_lock_acq(struct phy *phy) ^ static >> drivers/phy/samsung/phy-samsung-ufs.c:77:5: warning: no previous prototype for function 'samsung_ufs_phy_calibrate' [-Wmissing-prototypes] int samsung_ufs_phy_calibrate(struct phy *phy) ^ drivers/phy/samsung/phy-samsung-ufs.c:77:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int samsung_ufs_phy_calibrate(struct phy *phy) ^ static 2 warnings generated. vim +/samsung_ufs_phy_wait_for_lock_acq +47 drivers/phy/samsung/phy-samsung-ufs.c 46 > 47 int samsung_ufs_phy_wait_for_lock_acq(struct phy *phy) 48 { 49 struct samsung_ufs_phy *ufs_phy = get_samsung_ufs_phy(phy); 50 const unsigned int timeout_us = 100000; 51 const unsigned int sleep_us = 10; 52 u32 val; 53 int err; 54 55 err = readl_poll_timeout( 56 ufs_phy->reg_pma + PHY_APB_ADDR(PHY_PLL_LOCK_STATUS), 57 val, (val & PHY_PLL_LOCK_BIT), sleep_us, timeout_us); 58 if (err) { 59 dev_err(ufs_phy->dev, 60 "failed to get phy pll lock acquisition %d\n", err); 61 goto out; 62 } 63 64 err = readl_poll_timeout( 65 ufs_phy->reg_pma + PHY_APB_ADDR(PHY_CDR_LOCK_STATUS), 66 val, (val & PHY_CDR_LOCK_BIT), sleep_us, timeout_us); 67 if (err) { 68 dev_err(ufs_phy->dev, 69 "failed to get phy cdr lock acquisition %d\n", err); 70 goto out; 71 } 72 73 out: 74 return err; 75 } 76 > 77 int samsung_ufs_phy_calibrate(struct phy *phy) 78 { 79 struct samsung_ufs_phy *ufs_phy = get_samsung_ufs_phy(phy); 80 struct samsung_ufs_phy_cfg **cfgs = ufs_phy->cfg; 81 const struct samsung_ufs_phy_cfg *cfg; 82 int i; 83 int err = 0; 84 85 if (unlikely(ufs_phy->ufs_phy_state < CFG_PRE_INIT || 86 ufs_phy->ufs_phy_state >= CFG_TAG_MAX)) { 87 dev_err(ufs_phy->dev, "invalid phy config index %d\n", 88 ufs_phy->ufs_phy_state); 89 return -EINVAL; 90 } 91 92 if (ufs_phy->is_pre_init) 93 ufs_phy->is_pre_init = false; 94 if (ufs_phy->is_post_init) { 95 ufs_phy->is_post_init = false; 96 ufs_phy->ufs_phy_state = CFG_POST_INIT; 97 } 98 if (ufs_phy->is_pre_pmc) { 99 ufs_phy->is_pre_pmc = false; 100 ufs_phy->ufs_phy_state = CFG_PRE_PWR_HS; 101 } 102 if (ufs_phy->is_post_pmc) { 103 ufs_phy->is_post_pmc = false; 104 ufs_phy->ufs_phy_state = CFG_POST_PWR_HS; 105 } 106 107 switch (ufs_phy->ufs_phy_state) { 108 case CFG_PRE_INIT: 109 ufs_phy->is_post_init = true; 110 break; 111 case CFG_POST_INIT: 112 ufs_phy->is_pre_pmc = true; 113 break; 114 case CFG_PRE_PWR_HS: 115 ufs_phy->is_post_pmc = true; 116 break; 117 case CFG_POST_PWR_HS: 118 break; 119 default: 120 dev_err(ufs_phy->dev, "wrong state for phy calibration\n"); 121 } 122 123 cfg = cfgs[ufs_phy->ufs_phy_state]; 124 if (!cfg) 125 goto out; 126 127 for_each_phy_cfg(cfg) { 128 for_each_phy_lane(ufs_phy, i) { 129 samsung_ufs_phy_config(ufs_phy, cfg, i); 130 } 131 } 132 133 if (ufs_phy->ufs_phy_state == CFG_POST_PWR_HS) 134 err = samsung_ufs_phy_wait_for_lock_acq(phy); 135 out: 136 return err; 137 } 138 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip