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-d... 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