[RESEND PATCH v10 2/2] phy: samsung-ufs: add UFS PHY driver for samsung SoC

kernel test robot lkp at intel.com
Sun Jun 28 04:32:19 EDT 2020


Hi Alim,

I love your patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on soc/for-next linus/master v5.8-rc2 next-20200626]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Alim-Akhtar/dt-bindings-phy-Document-Samsung-UFS-PHY-bindings/20200625-081802
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-randconfig-r014-20200628 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 8cd117c24f48428e01f88cf18480e5af7eb20c0c)
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 arm64 cross compiling tool for clang build
        # apt-get install binutils-aarch64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All warnings (new 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@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 38512 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20200628/cea11cae/attachment-0001.gz>


More information about the linux-arm-kernel mailing list