[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