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

kbuild test robot lkp at intel.com
Tue Mar 27 20:39:15 CEST 2018


Hi Akshu,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on next-20180309]
[cannot apply to v4.16-rc4 v4.16-rc3 v4.16-rc2 v4.16-rc7]
[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-Use-single-dai-for-da7219-playback-and-capture/20180320-032923
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   sound/soc/amd/acp-da7219-max98357a.c:52:16: error: field 'acp_clks_hw' has incomplete type
     struct clk_hw acp_clks_hw;
                   ^~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c: In function 'acpd7219_clks_prepare':
>> sound/soc/amd/acp-da7219-max98357a.c:273:95: error: dereferencing pointer to incomplete type 'struct clk_hw'
      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:310: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:311:3: error: 'const struct clk_ops' has no member named 'prepare'
     .prepare = acpd7219_clks_prepare,
      ^~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:311:13: warning: excess elements in struct initializer
     .prepare = acpd7219_clks_prepare,
                ^~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:311:13: note: (near initialization for 'acpd7219_clks_ops')
   sound/soc/amd/acp-da7219-max98357a.c:312:3: error: 'const struct clk_ops' has no member named 'unprepare'
     .unprepare = acpd7219_clks_unprepare,
      ^~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:312:15: warning: excess elements in struct initializer
     .unprepare = acpd7219_clks_unprepare,
                  ^~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:312:15: note: (near initialization for 'acpd7219_clks_ops')
   sound/soc/amd/acp-da7219-max98357a.c:313:3: error: 'const struct clk_ops' has no member named 'is_enabled'
     .is_enabled = acpd7219_clks_is_enabled,
      ^~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:313:16: warning: excess elements in struct initializer
     .is_enabled = acpd7219_clks_is_enabled,
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:313: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:318:9: error: variable 'init' has initializer but incomplete type
     struct clk_init_data init = {};
            ^~~~~~~~~~~~~
   sound/soc/amd/acp-da7219-max98357a.c:318:23: error: storage size of 'init' isn't known
     struct clk_init_data init = {};
                          ^~~~
   sound/soc/amd/acp-da7219-max98357a.c:337:13: error: implicit declaration of function 'devm_clk_register'; did you mean 'device_register'? [-Werror=implicit-function-declaration]
     acp_clks = devm_clk_register(&dev, &cz_clock_obj->acp_clks_hw);
                ^~~~~~~~~~~~~~~~~
                device_register
>> sound/soc/amd/acp-da7219-max98357a.c:346:20: error: implicit declaration of function 'clkdev_create'; did you mean 'clk_set_rate'? [-Werror=implicit-function-declaration]
     acp_clks_lookup = clkdev_create(acp_clks, cz_clock_obj->acp_clks_name,
                       ^~~~~~~~~~~~~
                       clk_set_rate
   sound/soc/amd/acp-da7219-max98357a.c:346:18: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     acp_clks_lookup = clkdev_create(acp_clks, cz_clock_obj->acp_clks_name,
                     ^
   sound/soc/amd/acp-da7219-max98357a.c:318: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:310: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 +273 sound/soc/amd/acp-da7219-max98357a.c

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

---
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: 62234 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20180328/6ae71ad8/attachment-0001.bin>


More information about the Alsa-devel mailing list