[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