[alsa-devel] [PATCH v3] ASoC: AMD: Enable/Disable auxiliary clock via common clock framework

kbuild test robot lkp at intel.com
Fri Mar 23 18:01:33 CET 2018


Hi Akshu,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on asoc/for-next]
[also build test ERROR on next-20180323]
[cannot apply to v4.16-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Akshu-Agrawal/ASoC-AMD-Enable-Disable-auxiliary-clock-via-common-clock-framework/20180323-220927
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: openrisc-allyesconfig (attached as .config)
compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental)
reproduce:
        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
        make.cross ARCH=openrisc 

All errors (new ones prefixed by >>):

   sound/soc/amd/acp-da7219-max98357a.c:54:16: error: field 'acp_clks_hw' has incomplete type
     struct clk_hw acp_clks_hw;
                   ^~~~~~~~~~~
   In file included from include/linux/ioport.h:13:0,
                    from include/linux/device.h:15,
                    from include/sound/core.h:25,
                    from sound/soc/amd/acp-da7219-max98357a.c:26:
   sound/soc/amd/acp-da7219-max98357a.c: In function 'acpd7219_clks_prepare':
   include/linux/kernel.h:931:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                                   ^~~~~~
   include/linux/compiler.h:316:19: note: in definition of macro '__compiletime_assert'
      bool __cond = !(condition);    \
                      ^~~~~~~~~
   include/linux/compiler.h:339:2: note: in expansion of macro '_compiletime_assert'
     _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
     ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:45:37: note: in expansion of macro 'compiletime_assert'
    #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                        ^~~~~~~~~~~~~~~~~~
   include/linux/kernel.h:931:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
     ^~~~~~~~~~~~~~~~
   include/linux/kernel.h:931:20: note: in expansion of macro '__same_type'
     BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
                       ^~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:275:3: note: in expansion of macro 'container_of'
      container_of(hw, struct cz_clock, acp_clks_hw);
      ^~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c: At top level:
   sound/soc/amd/acp-da7219-max98357a.c:312:14: error: variable 'acpd7219_clks_ops' has initializer but incomplete type
    const struct clk_ops acpd7219_clks_ops = {
                 ^~~~~~~
>> sound/soc/amd/acp-da7219-max98357a.c:313:2: error: unknown field 'prepare' specified in initializer
     .prepare = acpd7219_clks_prepare,
     ^
   sound/soc/amd/acp-da7219-max98357a.c:313:13: warning: excess elements in struct initializer
     .prepare = acpd7219_clks_prepare,
                ^~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:313:13: note: (near initialization for 'acpd7219_clks_ops')
>> sound/soc/amd/acp-da7219-max98357a.c:314:2: error: unknown field 'unprepare' specified in initializer
     .unprepare = acpd7219_clks_unprepare,
     ^
   sound/soc/amd/acp-da7219-max98357a.c:314:15: warning: excess elements in struct initializer
     .unprepare = acpd7219_clks_unprepare,
                  ^~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:314:15: note: (near initialization for 'acpd7219_clks_ops')
>> sound/soc/amd/acp-da7219-max98357a.c:315:2: error: unknown field 'is_enabled' specified in initializer
     .is_enabled = acpd7219_clks_is_enabled,
     ^
   sound/soc/amd/acp-da7219-max98357a.c:315:16: warning: excess elements in struct initializer
     .is_enabled = acpd7219_clks_is_enabled,
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:315:16: note: (near initialization for 'acpd7219_clks_ops')
   sound/soc/amd/acp-da7219-max98357a.c: In function 'register_acpd7219_clocks':
   sound/soc/amd/acp-da7219-max98357a.c:320:9: error: variable 'init' has initializer but incomplete type
     struct clk_init_data init = {};
            ^~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:320:23: error: storage size of 'init' isn't known
     struct clk_init_data init = {};
                          ^~~~
>> sound/soc/amd/acp-da7219-max98357a.c:339:13: error: implicit declaration of function 'devm_clk_register' [-Werror=implicit-function-declaration]
     acp_clks = devm_clk_register(&dev, &cz_clock_obj->acp_clks_hw);
                ^~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:320:23: warning: unused variable 'init' [-Wunused-variable]
     struct clk_init_data init = {};
                          ^~~~
   sound/soc/amd/acp-da7219-max98357a.c: At top level:
   sound/soc/amd/acp-da7219-max98357a.c:312:22: error: storage size of 'acpd7219_clks_ops' isn't known
    const struct clk_ops acpd7219_clks_ops = {
                         ^~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/prepare +313 sound/soc/amd/acp-da7219-max98357a.c

   270	
   271	static int acpd7219_clks_prepare(struct clk_hw *hw)
   272	{
   273		u32 reg_val;
   274		struct cz_clock *cz_clock_obj =
 > 275			container_of(hw, struct cz_clock, acp_clks_hw);
   276		void __iomem *base = cz_clock_obj->res_base;
   277	
   278		reg_val = readl(base + MISCCLKCNTL1);
   279		reg_val &= ~(0x1 << OSCCLKENB);
   280		writel(reg_val, base + MISCCLKCNTL1);
   281		reg_val = readl(base + CLKDRVSTR2);
   282		reg_val |= (0x1 << OSCOUT1CLK25MHZ);
   283		writel(reg_val, base + CLKDRVSTR2);
   284	
   285		return 0;
   286	}
   287	
   288	static void acpd7219_clks_unprepare(struct clk_hw *hw)
   289	{
   290		u32 reg_val;
   291		struct cz_clock *cz_clock_obj =
   292			container_of(hw, struct cz_clock, acp_clks_hw);
   293		void __iomem *base = cz_clock_obj->res_base;
   294	
   295		reg_val = readl(base + MISCCLKCNTL1);
   296		reg_val |= (0x1 << OSCCLKENB);
   297		writel(reg_val, base + MISCCLKCNTL1);
   298	}
   299	
   300	static int acpd7219_clks_is_enabled(struct clk_hw *hw)
   301	{
   302		u32 reg_val;
   303		struct cz_clock *cz_clock_obj =
   304			container_of(hw, struct cz_clock, acp_clks_hw);
   305		void __iomem *base = cz_clock_obj->res_base;
   306	
   307		reg_val = readl(base + MISCCLKCNTL1);
   308	
   309		return !(reg_val & OSCCLKENB);
   310	}
   311	
   312	const struct clk_ops acpd7219_clks_ops = {
 > 313		.prepare = acpd7219_clks_prepare,
 > 314		.unprepare = acpd7219_clks_unprepare,
 > 315		.is_enabled = acpd7219_clks_is_enabled,
   316	};
   317	
   318	static int register_acpd7219_clocks(struct platform_device *pdev)
   319	{
   320		struct clk_init_data init = {};
   321		struct clk *acp_clks;
   322		struct clk_lookup *acp_clks_lookup;
   323		struct cz_clock *cz_clock_obj;
   324		struct resource *res;
   325		struct device dev = pdev->dev;
   326	
   327		cz_clock_obj = kzalloc(sizeof(struct cz_clock), GFP_KERNEL);
   328		if (!cz_clock_obj)
   329			return -ENOMEM;
   330	
   331		cz_clock_obj->acp_clks_name = "acpd7219-clks";
   332	
   333		init.parent_names = NULL;
   334		init.num_parents = 0;
   335		init.name = cz_clock_obj->acp_clks_name;
   336		init.ops = &acpd7219_clks_ops;
   337		cz_clock_obj->acp_clks_hw.init = &init;
   338	
 > 339		acp_clks = devm_clk_register(&dev, &cz_clock_obj->acp_clks_hw);
   340		if (IS_ERR(acp_clks))
   341		{
   342			dev_err(&dev, "Failed to register DAI clocks: %ld\n",
   343				 PTR_ERR(acp_clks));
   344			return -EINVAL;
   345		}
   346		cz_clock_obj->acp_clks = acp_clks;
   347	
   348		acp_clks_lookup = clkdev_create(acp_clks, cz_clock_obj->acp_clks_name,
   349						"%s", dev_name(&dev));
   350		if (!acp_clks_lookup)
   351			dev_warn(&dev, "Failed to create DAI clkdev");
   352		else
   353			cz_clock_obj->acp_clks_lookup = acp_clks_lookup;
   354	
   355		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
   356		if (!res) {
   357			dev_err(&pdev->dev, "Failed to get misc io resource.\n");
   358			return -EINVAL;
   359		}
   360		cz_clock_obj->res_base = devm_ioremap_nocache(&pdev->dev, res->start,
   361						resource_size(res));
   362		if (!cz_clock_obj->res_base)
   363			return -ENOMEM;
   364	
   365		return 0;
   366	}
   367	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 44671 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20180324/724936a3/attachment-0001.bin>


More information about the Alsa-devel mailing list