Re: [PATCH 2/6] mmc: sdhci-omap: Handle voltages to add support omap4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tony,

I love your patch! Perhaps something to improve:

[auto build test WARNING on next-20211011]
[also build test WARNING on v5.15-rc5]
[cannot apply to robh/for-next linus/master ulf-hansson-mmc-mirror/next v5.15-rc5 v5.15-rc4 v5.15-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Tony-Lindgren/More-SoCs-for-sdhci-omap-to-deprecate-omap_hsmmc/20211012-183855
base:    d3134eb5de8546a214c028fb7195e764b89da7d4
config: riscv-randconfig-r042-20211012 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c3dcf39554dbea780d6cb7e12239451ba47a2668)
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 riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/0day-ci/linux/commit/86b011af48d7f1cd6e2810dddcdf5d1b5ee819af
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Tony-Lindgren/More-SoCs-for-sdhci-omap-to-deprecate-omap_hsmmc/20211012-183855
        git checkout 86b011af48d7f1cd6e2810dddcdf5d1b5ee819af
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=riscv 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

>> drivers/mmc/host/sdhci-omap.c:938:10: warning: implicit conversion from 'unsigned long' to 'unsigned int' changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion]
                   return ~0UL;
                   ~~~~~~ ^~~~
>> drivers/mmc/host/sdhci-omap.c:965:29: warning: result of comparison of constant 18446744073709551615 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
           if (pbias != ~0UL && vqmmc == ~0UL)
                                ~~~~~ ^  ~~~~
>> drivers/mmc/host/sdhci-omap.c:965:12: warning: result of comparison of constant 18446744073709551615 with expression of type 'unsigned int' is always true [-Wtautological-constant-out-of-range-compare]
           if (pbias != ~0UL && vqmmc == ~0UL)
               ~~~~~ ^  ~~~~
   drivers/mmc/host/sdhci-omap.c:967:16: warning: result of comparison of constant 18446744073709551615 with expression of type 'unsigned int' is always false [-Wtautological-constant-out-of-range-compare]
           else if (caps == ~0UL)
                    ~~~~ ^  ~~~~
   drivers/mmc/host/sdhci-omap.c:974:12: warning: result of comparison of constant 18446744073709551615 with expression of type 'unsigned int' is always true [-Wtautological-constant-out-of-range-compare]
           if (pbias != ~0UL && (pbias & SDHCI_CAN_VDD_330) &&
               ~~~~~ ^  ~~~~
   5 warnings generated.


vim +938 drivers/mmc/host/sdhci-omap.c

   929	
   930	static unsigned int sdhci_omap_regulator_get_caps(struct device *dev,
   931							  const char *name)
   932	{
   933		struct regulator *reg;
   934		unsigned int caps = 0;
   935	
   936		reg = regulator_get(dev, name);
   937		if (IS_ERR(reg))
 > 938			return ~0UL;
   939	
   940		if (regulator_is_supported_voltage(reg, 1700000, 1950000))
   941			caps |= SDHCI_CAN_VDD_180;
   942		if (regulator_is_supported_voltage(reg, 2700000, 3150000))
   943			caps |= SDHCI_CAN_VDD_300;
   944		if (regulator_is_supported_voltage(reg, 3150000, 3600000))
   945			caps |= SDHCI_CAN_VDD_330;
   946	
   947		regulator_put(reg);
   948	
   949		return caps;
   950	}
   951	
   952	static int sdhci_omap_set_capabilities(struct sdhci_host *host)
   953	{
   954		struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
   955		struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host);
   956		struct device *dev = omap_host->dev;
   957		const u32 mask = SDHCI_CAN_VDD_180 | SDHCI_CAN_VDD_300 | SDHCI_CAN_VDD_330;
   958		unsigned int pbias, vqmmc, caps = 0;
   959		u32 reg;
   960	
   961		pbias = sdhci_omap_regulator_get_caps(dev, "pbias");
   962		vqmmc = sdhci_omap_regulator_get_caps(dev, "vqmmc");
   963		caps = pbias & vqmmc;
   964	
 > 965		if (pbias != ~0UL && vqmmc == ~0UL)
   966			dev_warn(dev, "vqmmc regulator missing for pbias\n");
   967		else if (caps == ~0UL)
   968			return 0;
   969	
   970		/*
   971		 * Quirk handling to allow 3.0V vqmmc with a valid 3.3V PBIAS. This is
   972		 * needed for 3.0V ldo9_reg on omap5 at least.
   973		 */
   974		if (pbias != ~0UL && (pbias & SDHCI_CAN_VDD_330) &&
   975		    (vqmmc & SDHCI_CAN_VDD_300))
   976			caps |= SDHCI_CAN_VDD_330;
   977	
   978		/* voltage capabilities might be set by boot loader, clear it */
   979		reg = sdhci_omap_readl(omap_host, SDHCI_OMAP_CAPA);
   980		reg &= ~(CAPA_VS18 | CAPA_VS30 | CAPA_VS33);
   981	
   982		if (caps & SDHCI_CAN_VDD_180)
   983			reg |= CAPA_VS18;
   984	
   985		if (caps & SDHCI_CAN_VDD_300)
   986			reg |= CAPA_VS30;
   987	
   988		if (caps & SDHCI_CAN_VDD_330)
   989			reg |= CAPA_VS33;
   990	
   991		sdhci_omap_writel(omap_host, SDHCI_OMAP_CAPA, reg);
   992	
   993		host->caps &= ~mask;
   994		host->caps |= caps;
   995	
   996		return 0;
   997	}
   998	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux