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-suppo...
base: 0e698dfa282211e414076f9dc7e83c1c288314fd
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from drivers/phy/samsung/phy-samsung-ufs.c:14:
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsb':
arch/m68k/include/asm/raw_io.h:83:7: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
83 | ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); | ^~~
arch/m68k/include/asm/raw_io.h:430:3: note: in expansion of macro 'rom_out_8'
430 | rom_out_8(port, *buf++);
| ^~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw':
arch/m68k/include/asm/raw_io.h:86:8: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
86 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); | ^~~
arch/m68k/include/asm/raw_io.h:448:3: note: in expansion of macro 'rom_out_be16'
448 | rom_out_be16(port, *buf++);
| ^~~~~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw_swapw':
arch/m68k/include/asm/raw_io.h:90:8: warning: variable '__w' set but not used
[-Wunused-but-set-variable]
90 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); | ^~~
arch/m68k/include/asm/raw_io.h:466:3: note: in expansion of macro 'rom_out_le16'
466 | rom_out_le16(port, *buf++);
| ^~~~~~~~~~~~
drivers/phy/samsung/phy-samsung-ufs.c: At top level:
> drivers/phy/samsung/phy-samsung-ufs.c:47:5: warning: no previous
prototype for 'samsung_ufs_phy_wait_for_lock_acq' [-Wmissing-prototypes]
47
| int samsung_ufs_phy_wait_for_lock_acq(struct phy *phy)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/phy/samsung/phy-samsung-ufs.c:77:5: warning: no previous
prototype for 'samsung_ufs_phy_calibrate' [-Wmissing-prototypes]
77 | int
samsung_ufs_phy_calibrate(struct phy *phy)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
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@lists.01.org