lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202205252313.tlPAoDRf-lkp@intel.com>
Date:   Wed, 25 May 2022 23:40:10 +0800
From:   kernel test robot <lkp@...el.com>
To:     Viresh Kumar <viresh.kumar@...aro.org>
Cc:     llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org
Subject: [vireshk-pm:opp/config 33/33] drivers/opp/core.c:1961:19: warning:
 no previous prototype for function 'dev_pm_opp_set_supported_hw'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/config
head:   d730dc101c586defb49eeafd8eea9b7bb0baa01b
commit: d730dc101c586defb49eeafd8eea9b7bb0baa01b [33/33] OPP: Remove unused APIs
config: x86_64-randconfig-a016 (https://download.01.org/0day-ci/archive/20220525/202205252313.tlPAoDRf-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d52a6e75b0c402c7f3b42a2b1b2873f151220947)
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
        # https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git/commit/?id=d730dc101c586defb49eeafd8eea9b7bb0baa01b
        git remote add vireshk-pm https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git
        git fetch --no-tags vireshk-pm opp/config
        git checkout d730dc101c586defb49eeafd8eea9b7bb0baa01b
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/opp/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> drivers/opp/core.c:1961:19: warning: no previous prototype for function 'dev_pm_opp_set_supported_hw' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev,
                     ^
   drivers/opp/core.c:1961:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:1998:6: warning: no previous prototype for function 'dev_pm_opp_put_supported_hw' [-Wmissing-prototypes]
   void dev_pm_opp_put_supported_hw(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:1998:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_put_supported_hw(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2026:5: warning: no previous prototype for function 'devm_pm_opp_set_supported_hw' [-Wmissing-prototypes]
   int devm_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
       ^
   drivers/opp/core.c:2026:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int devm_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
   ^
   static 
>> drivers/opp/core.c:2050:19: warning: no previous prototype for function 'dev_pm_opp_set_prop_name' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name)
                     ^
   drivers/opp/core.c:2050:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name)
   ^
   static 
>> drivers/opp/core.c:2083:6: warning: no previous prototype for function 'dev_pm_opp_put_prop_name' [-Wmissing-prototypes]
   void dev_pm_opp_put_prop_name(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:2083:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_put_prop_name(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2107:19: warning: no previous prototype for function 'dev_pm_opp_set_regulators' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_set_regulators(struct device *dev,
                     ^
   drivers/opp/core.c:2107:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_set_regulators(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:2186:6: warning: no previous prototype for function 'dev_pm_opp_put_regulators' [-Wmissing-prototypes]
   void dev_pm_opp_put_regulators(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:2186:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_put_regulators(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2238:5: warning: no previous prototype for function 'devm_pm_opp_set_regulators' [-Wmissing-prototypes]
   int devm_pm_opp_set_regulators(struct device *dev,
       ^
   drivers/opp/core.c:2238:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int devm_pm_opp_set_regulators(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:2265:19: warning: no previous prototype for function 'dev_pm_opp_set_clkname' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char *name)
                     ^
   drivers/opp/core.c:2265:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char *name)
   ^
   static 
>> drivers/opp/core.c:2309:6: warning: no previous prototype for function 'dev_pm_opp_put_clkname' [-Wmissing-prototypes]
   void dev_pm_opp_put_clkname(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:2309:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_put_clkname(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2336:5: warning: no previous prototype for function 'devm_pm_opp_set_clkname' [-Wmissing-prototypes]
   int devm_pm_opp_set_clkname(struct device *dev, const char *name)
       ^
   drivers/opp/core.c:2336:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int devm_pm_opp_set_clkname(struct device *dev, const char *name)
   ^
   static 
>> drivers/opp/core.c:2359:19: warning: no previous prototype for function 'dev_pm_opp_register_set_opp_helper' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev,
                     ^
   drivers/opp/core.c:2359:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:2408:6: warning: no previous prototype for function 'dev_pm_opp_unregister_set_opp_helper' [-Wmissing-prototypes]
   void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:2408:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2438:5: warning: no previous prototype for function 'devm_pm_opp_register_set_opp_helper' [-Wmissing-prototypes]
   int devm_pm_opp_register_set_opp_helper(struct device *dev,
       ^
   drivers/opp/core.c:2438:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int devm_pm_opp_register_set_opp_helper(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:2493:19: warning: no previous prototype for function 'dev_pm_opp_attach_genpd' [-Wmissing-prototypes]
   struct opp_table *dev_pm_opp_attach_genpd(struct device *dev,
                     ^
   drivers/opp/core.c:2493:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct opp_table *dev_pm_opp_attach_genpd(struct device *dev,
   ^
   static 
>> drivers/opp/core.c:2570:6: warning: no previous prototype for function 'dev_pm_opp_detach_genpd' [-Wmissing-prototypes]
   void dev_pm_opp_detach_genpd(struct opp_table *opp_table)
        ^
   drivers/opp/core.c:2570:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void dev_pm_opp_detach_genpd(struct opp_table *opp_table)
   ^
   static 
>> drivers/opp/core.c:2603:5: warning: no previous prototype for function 'devm_pm_opp_attach_genpd' [-Wmissing-prototypes]
   int devm_pm_opp_attach_genpd(struct device *dev, const char * const *names,
       ^
   drivers/opp/core.c:2603:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int devm_pm_opp_attach_genpd(struct device *dev, const char * const *names,
   ^
   static 
   17 warnings generated.


vim +/dev_pm_opp_set_supported_hw +1961 drivers/opp/core.c

38393409da345c drivers/base/power/opp.c      Viresh Kumar        2014-11-25  1949  
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1950  /**
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1951   * dev_pm_opp_set_supported_hw() - Set supported platforms
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1952   * @dev: Device for which supported-hw has to be set.
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1953   * @versions: Array of hierarchy of versions to match.
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1954   * @count: Number of elements in the array.
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1955   *
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1956   * This is required only for the V2 bindings, and it enables a platform to
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1957   * specify the hierarchy of versions it supports. OPP layer will then enable
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1958   * OPPs, which are available for those versions, based on its 'opp-supported-hw'
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1959   * property.
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1960   */
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23 @1961  struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev,
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  1962  			const u32 *versions, unsigned int count)
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1963  {
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1964  	struct opp_table *opp_table;
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1965  
32439ac7535a8e drivers/opp/core.c            Viresh Kumar        2021-01-28  1966  	opp_table = _add_opp_table(dev, false);
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  1967  	if (IS_ERR(opp_table))
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  1968  		return opp_table;
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1969  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1970  	/* Make sure there are no concurrent readers while updating opp_table */
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1971  	WARN_ON(!list_empty(&opp_table->opp_list));
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1972  
25419de1b8dda2 drivers/opp/core.c            Viresh Kumar        2018-05-22  1973  	/* Another CPU that shares the OPP table has set the property ? */
25419de1b8dda2 drivers/opp/core.c            Viresh Kumar        2018-05-22  1974  	if (opp_table->supported_hw)
25419de1b8dda2 drivers/opp/core.c            Viresh Kumar        2018-05-22  1975  		return opp_table;
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1976  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1977  	opp_table->supported_hw = kmemdup(versions, count * sizeof(*versions),
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1978  					GFP_KERNEL);
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1979  	if (!opp_table->supported_hw) {
25419de1b8dda2 drivers/opp/core.c            Viresh Kumar        2018-05-22  1980  		dev_pm_opp_put_opp_table(opp_table);
25419de1b8dda2 drivers/opp/core.c            Viresh Kumar        2018-05-22  1981  		return ERR_PTR(-ENOMEM);
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1982  	}
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1983  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1984  	opp_table->supported_hw_count = count;
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  1985  
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  1986  	return opp_table;
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1987  }
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1988  EXPORT_SYMBOL_GPL(dev_pm_opp_set_supported_hw);
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1989  
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1990  /**
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1991   * dev_pm_opp_put_supported_hw() - Releases resources blocked for supported hw
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  1992   * @opp_table: OPP table returned by dev_pm_opp_set_supported_hw().
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1993   *
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1994   * This is required only for the V2 bindings, and is called for a matching
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  1995   * dev_pm_opp_set_supported_hw(). Until this is called, the opp_table structure
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1996   * will not be freed.
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1997   */
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23 @1998  void dev_pm_opp_put_supported_hw(struct opp_table *opp_table)
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  1999  {
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2000  	if (unlikely(!opp_table))
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2001  		return;
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2002  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2003  	kfree(opp_table->supported_hw);
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2004  	opp_table->supported_hw = NULL;
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2005  	opp_table->supported_hw_count = 0;
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2006  
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  2007  	dev_pm_opp_put_opp_table(opp_table);
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2008  }
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2009  EXPORT_SYMBOL_GPL(dev_pm_opp_put_supported_hw);
7de36b0aa51a5a drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2010  
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2011  static void devm_pm_opp_supported_hw_release(void *data)
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2012  {
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2013  	dev_pm_opp_put_supported_hw(data);
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2014  }
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2015  
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2016  /**
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2017   * devm_pm_opp_set_supported_hw() - Set supported platforms
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2018   * @dev: Device for which supported-hw has to be set.
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2019   * @versions: Array of hierarchy of versions to match.
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2020   * @count: Number of elements in the array.
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2021   *
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2022   * This is a resource-managed variant of dev_pm_opp_set_supported_hw().
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2023   *
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2024   * Return: 0 on success and errorno otherwise.
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2025   */
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14 @2026  int devm_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2027  				 unsigned int count)
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2028  {
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2029  	struct opp_table *opp_table;
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2030  
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2031  	opp_table = dev_pm_opp_set_supported_hw(dev, versions, count);
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2032  	if (IS_ERR(opp_table))
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2033  		return PTR_ERR(opp_table);
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2034  
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2035  	return devm_add_action_or_reset(dev, devm_pm_opp_supported_hw_release,
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2036  					opp_table);
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2037  }
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2038  EXPORT_SYMBOL_GPL(devm_pm_opp_set_supported_hw);
9c4f220f3dc260 drivers/opp/core.c            Yangtao Li          2021-03-14  2039  
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2040  /**
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2041   * dev_pm_opp_set_prop_name() - Set prop-extn name
a5da64477ee79e drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2042   * @dev: Device for which the prop-name has to be set.
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2043   * @name: name to postfix to properties.
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2044   *
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2045   * This is required only for the V2 bindings, and it enables a platform to
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2046   * specify the extn to be used for certain property names. The properties to
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2047   * which the extension will apply are opp-microvolt and opp-microamp. OPP core
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2048   * should postfix the property name with -<name> while looking for them.
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2049   */
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23 @2050  struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name)
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2051  {
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2052  	struct opp_table *opp_table;
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2053  
32439ac7535a8e drivers/opp/core.c            Viresh Kumar        2021-01-28  2054  	opp_table = _add_opp_table(dev, false);
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  2055  	if (IS_ERR(opp_table))
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  2056  		return opp_table;
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2057  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2058  	/* Make sure there are no concurrent readers while updating opp_table */
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2059  	WARN_ON(!list_empty(&opp_table->opp_list));
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2060  
878ec1a9f0e5a6 drivers/opp/core.c            Viresh Kumar        2018-05-22  2061  	/* Another CPU that shares the OPP table has set the property ? */
878ec1a9f0e5a6 drivers/opp/core.c            Viresh Kumar        2018-05-22  2062  	if (opp_table->prop_name)
878ec1a9f0e5a6 drivers/opp/core.c            Viresh Kumar        2018-05-22  2063  		return opp_table;
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2064  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2065  	opp_table->prop_name = kstrdup(name, GFP_KERNEL);
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2066  	if (!opp_table->prop_name) {
878ec1a9f0e5a6 drivers/opp/core.c            Viresh Kumar        2018-05-22  2067  		dev_pm_opp_put_opp_table(opp_table);
878ec1a9f0e5a6 drivers/opp/core.c            Viresh Kumar        2018-05-22  2068  		return ERR_PTR(-ENOMEM);
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2069  	}
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2070  
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  2071  	return opp_table;
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2072  }
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2073  EXPORT_SYMBOL_GPL(dev_pm_opp_set_prop_name);
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2074  
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2075  /**
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2076   * dev_pm_opp_put_prop_name() - Releases resources blocked for prop-name
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  2077   * @opp_table: OPP table returned by dev_pm_opp_set_prop_name().
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2078   *
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2079   * This is required only for the V2 bindings, and is called for a matching
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2080   * dev_pm_opp_set_prop_name(). Until this is called, the opp_table structure
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2081   * will not be freed.
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2082   */
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23 @2083  void dev_pm_opp_put_prop_name(struct opp_table *opp_table)
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2084  {
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2085  	if (unlikely(!opp_table))
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2086  		return;
c7bf8758c955e6 drivers/opp/core.c            Viresh Kumar        2020-11-06  2087  
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2088  	kfree(opp_table->prop_name);
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2089  	opp_table->prop_name = NULL;
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2090  
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  2091  	dev_pm_opp_put_opp_table(opp_table);
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2092  }
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2093  EXPORT_SYMBOL_GPL(dev_pm_opp_put_prop_name);
01fb4d3c39d35b drivers/base/power/opp/core.c Viresh Kumar        2015-12-09  2094  
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2095  /**
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2096   * dev_pm_opp_set_regulators() - Set regulator names for the device
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2097   * @dev: Device for which regulator name is being set.
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2098   * @names: Array of pointers to the names of the regulator.
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2099   * @count: Number of regulators.
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2100   *
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2101   * In order to support OPP switching, OPP layer needs to know the name of the
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2102   * device's regulators, as the core would be required to switch voltages as
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2103   * well.
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2104   *
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2105   * This must be called before any OPPs are initialized for the device.
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2106   */
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01 @2107  struct opp_table *dev_pm_opp_set_regulators(struct device *dev,
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2108  					    const char * const names[],
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2109  					    unsigned int count)
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2110  {
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2111  	struct dev_pm_opp_supply *supplies;
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2112  	struct opp_table *opp_table;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2113  	struct regulator *reg;
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2114  	int ret, i;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2115  
32439ac7535a8e drivers/opp/core.c            Viresh Kumar        2021-01-28  2116  	opp_table = _add_opp_table(dev, false);
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  2117  	if (IS_ERR(opp_table))
dd461cd9183fe8 drivers/opp/core.c            Stephan Gerhold     2020-07-27  2118  		return opp_table;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2119  
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2120  	/* This should be called before OPPs are initialized */
2c2709dc6921c5 drivers/base/power/opp/core.c Viresh Kumar        2016-02-16  2121  	if (WARN_ON(!list_empty(&opp_table->opp_list))) {
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2122  		ret = -EBUSY;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2123  		goto err;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2124  	}
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2125  
779b783cfaa726 drivers/opp/core.c            Viresh Kumar        2018-05-22  2126  	/* Another CPU that shares the OPP table has set the regulators ? */
779b783cfaa726 drivers/opp/core.c            Viresh Kumar        2018-05-22  2127  	if (opp_table->regulators)
779b783cfaa726 drivers/opp/core.c            Viresh Kumar        2018-05-22  2128  		return opp_table;
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2129  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2130  	opp_table->regulators = kmalloc_array(count,
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2131  					      sizeof(*opp_table->regulators),
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2132  					      GFP_KERNEL);
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2133  	if (!opp_table->regulators) {
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2134  		ret = -ENOMEM;
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2135  		goto err;
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2136  	}
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2137  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2138  	for (i = 0; i < count; i++) {
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2139  		reg = regulator_get_optional(dev, names[i]);
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2140  		if (IS_ERR(reg)) {
543256d239b415 drivers/opp/core.c            Krzysztof Kozlowski 2022-04-08  2141  			ret = dev_err_probe(dev, PTR_ERR(reg),
543256d239b415 drivers/opp/core.c            Krzysztof Kozlowski 2022-04-08  2142  					    "%s: no regulator (%s) found\n",
543256d239b415 drivers/opp/core.c            Krzysztof Kozlowski 2022-04-08  2143  					    __func__, names[i]);
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2144  			goto free_regulators;
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2145  		}
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2146  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2147  		opp_table->regulators[i] = reg;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2148  	}
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2149  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2150  	opp_table->regulator_count = count;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2151  
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2152  	supplies = kmalloc_array(count * 2, sizeof(*supplies), GFP_KERNEL);
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2153  	if (!supplies) {
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2154  		ret = -ENOMEM;
947355850fcb3b drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2155  		goto free_regulators;
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2156  	}
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2157  
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2158  	mutex_lock(&opp_table->lock);
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2159  	opp_table->sod_supplies = supplies;
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2160  	if (opp_table->set_opp_data) {
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2161  		opp_table->set_opp_data->old_opp.supplies = supplies;
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2162  		opp_table->set_opp_data->new_opp.supplies = supplies + count;
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2163  	}
38bb34393804b7 drivers/opp/core.c            Viresh Kumar        2021-01-19  2164  	mutex_unlock(&opp_table->lock);
947355850fcb3b drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2165  
91291d9ad92faa drivers/base/power/opp/core.c Stephen Boyd        2016-11-30  2166  	return opp_table;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2167  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2168  free_regulators:
24957db1004353 drivers/opp/core.c            Marek Szyprowski    2019-10-17  2169  	while (i != 0)
24957db1004353 drivers/opp/core.c            Marek Szyprowski    2019-10-17  2170  		regulator_put(opp_table->regulators[--i]);
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2171  
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2172  	kfree(opp_table->regulators);
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2173  	opp_table->regulators = NULL;
46f48aca2e5aef drivers/opp/core.c            Viresh Kumar        2018-12-11  2174  	opp_table->regulator_count = -1;
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2175  err:
fa30184d192ec7 drivers/base/power/opp/core.c Viresh Kumar        2017-01-23  2176  	dev_pm_opp_put_opp_table(opp_table);
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2177  
91291d9ad92faa drivers/base/power/opp/core.c Stephen Boyd        2016-11-30  2178  	return ERR_PTR(ret);
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2179  }
dfbe4678d709e2 drivers/base/power/opp/core.c Viresh Kumar        2016-12-01  2180  EXPORT_SYMBOL_GPL(dev_pm_opp_set_regulators);
9f8ea969d5cfdd drivers/base/power/opp/core.c Viresh Kumar        2016-02-09  2181  

:::::: The code at line 1961 was first introduced by commit
:::::: fa30184d192ec78d443cf6d3abc37d9eb3b9253e PM / OPP: Return opp_table from dev_pm_opp_set_*() routines

:::::: TO: Viresh Kumar <viresh.kumar@...aro.org>
:::::: CC: Rafael J. Wysocki <rafael.j.wysocki@...el.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ