Hi Manu, Thank you for the patch! Yet something to improve: [auto build test ERROR on v4.16-rc4] [also build test ERROR on next-20180313] [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/Manu-Gautam/dt-bindings-usb-Update-documentation-for-Qualcomm-DWC3-driver/20180314-095557 config: sparc64-allmodconfig (attached as .config) compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 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=sparc64 All errors (new ones prefixed by >>): drivers/usb/dwc3/dwc3-qcom.c: In function 'dwc3_qcom_probe': >> drivers/usb/dwc3/dwc3-qcom.c:407:33: error: implicit declaration of function 'of_clk_get_parent_count'; did you mean 'clk_get_parent'? [-Werror=implicit-function-declaration] ret = dwc3_qcom_clk_init(qcom, of_clk_get_parent_count(np)); ^~~~~~~~~~~~~~~~~~~~~~~ clk_get_parent cc1: some warnings being treated as errors vim +407 drivers/usb/dwc3/dwc3-qcom.c 380 381 static int dwc3_qcom_probe(struct platform_device *pdev) 382 { 383 struct device_node *np = pdev->dev.of_node, *dwc3_np; 384 struct dwc3_qcom *qcom; 385 struct resource *res; 386 int irq, ret, i; 387 bool ignore_pipe_clk; 388 389 qcom = devm_kzalloc(&pdev->dev, sizeof(*qcom), GFP_KERNEL); 390 if (!qcom) 391 return -ENOMEM; 392 393 platform_set_drvdata(pdev, qcom); 394 qcom->dev = &pdev->dev; 395 396 qcom->resets = of_reset_control_array_get_optional_exclusive(np); 397 if (IS_ERR(qcom->resets)) { 398 ret = PTR_ERR(qcom->resets); 399 dev_err(&pdev->dev, "failed to get resets, err=%d\n", ret); 400 return ret; 401 } 402 403 ret = reset_control_deassert(qcom->resets); 404 if (ret) 405 goto reset_put; 406 > 407 ret = dwc3_qcom_clk_init(qcom, of_clk_get_parent_count(np)); 408 if (ret) { 409 dev_err(qcom->dev, "failed to get clocks\n"); 410 goto reset_assert; 411 } 412 413 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "qscratch"); 414 qcom->qscratch_base = devm_ioremap_resource(qcom->dev, res); 415 if (IS_ERR(qcom->qscratch_base)) { 416 dev_err(qcom->dev, "failed to map qscratch - %d\n", ret); 417 ret = PTR_ERR(qcom->qscratch_base); 418 goto clk_disable; 419 } 420 421 irq = platform_get_irq_byname(pdev, "hs_phy_irq"); 422 if (irq > 0) { 423 ret = devm_request_threaded_irq(qcom->dev, irq, NULL, 424 qcom_dwc3_resume_irq, 425 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 426 "qcom_dwc3 HS", qcom); 427 if (ret) { 428 dev_err(qcom->dev, "hs_phy_irq failed: %d\n", ret); 429 goto clk_disable; 430 } 431 } 432 433 irq = platform_get_irq_byname(pdev, "dp_hs_phy_irq"); 434 if (irq > 0) { 435 irq_set_status_flags(irq, IRQ_NOAUTOEN); 436 ret = devm_request_threaded_irq(qcom->dev, irq, NULL, 437 qcom_dwc3_resume_irq, 438 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 439 "qcom_dwc3 DP_HS", qcom); 440 if (ret) { 441 dev_err(qcom->dev, "dp_hs_phy_irq failed: %d\n", ret); 442 goto clk_disable; 443 } 444 qcom->dp_hs_phy_irq = irq; 445 } 446 447 irq = platform_get_irq_byname(pdev, "dm_hs_phy_irq"); 448 if (irq > 0) { 449 irq_set_status_flags(irq, IRQ_NOAUTOEN); 450 ret = devm_request_threaded_irq(qcom->dev, irq, NULL, 451 qcom_dwc3_resume_irq, 452 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 453 "qcom_dwc3 DM_HS", qcom); 454 if (ret) { 455 dev_err(qcom->dev, "dm_hs_phy_irq failed: %d\n", ret); 456 goto clk_disable; 457 } 458 qcom->dm_hs_phy_irq = irq; 459 } 460 461 irq = platform_get_irq_byname(pdev, "ss_phy_irq"); 462 if (irq > 0) { 463 irq_set_status_flags(irq, IRQ_NOAUTOEN); 464 ret = devm_request_threaded_irq(qcom->dev, irq, NULL, 465 qcom_dwc3_resume_irq, 466 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 467 "qcom_dwc3 SS", qcom); 468 if (ret) { 469 dev_err(qcom->dev, "ss_phy_irq failed: %d\n", ret); 470 goto clk_disable; 471 } 472 qcom->ss_phy_irq = irq; 473 } 474 475 dwc3_np = of_get_child_by_name(np, "dwc3"); 476 if (!dwc3_np) { 477 dev_err(qcom->dev, "failed to find dwc3 core child\n"); 478 ret = -ENODEV; 479 goto clk_disable; 480 } 481 482 /* 483 * Disable pipe_clk requirement if specified. Used when dwc3 484 * operates without SSPHY and only HS/FS/LS modes are supported. 485 */ 486 ignore_pipe_clk = device_property_read_bool(qcom->dev, 487 "qcom,select-utmi-as-pipe-clk"); 488 if (ignore_pipe_clk) 489 dwc3_qcom_select_utmi_clk(qcom); 490 491 ret = of_platform_populate(np, NULL, NULL, qcom->dev); 492 if (ret) { 493 dev_err(qcom->dev, "failed to register dwc3 core - %d\n", ret); 494 goto clk_disable; 495 } 496 497 qcom->dwc3 = of_find_device_by_node(dwc3_np); 498 if (!qcom->dwc3) { 499 dev_err(&pdev->dev, "failed to get dwc3 platform device\n"); 500 goto depopulate; 501 } 502 503 qcom->mode = usb_get_dr_mode(&qcom->dwc3->dev); 504 505 /* register extcon to override vbus later on mode switch */ 506 if (qcom->mode == USB_DR_MODE_OTG) { 507 ret = dwc3_qcom_register_extcon(qcom); 508 if (ret) 509 goto depopulate; 510 } else if (qcom->mode == USB_DR_MODE_PERIPHERAL) { 511 /* enable vbus override for device mode */ 512 dwc3_qcom_vbus_overrride_enable(qcom, true); 513 } 514 515 device_init_wakeup(&pdev->dev, 1); 516 qcom->is_suspended = false; 517 pm_runtime_set_active(qcom->dev); 518 pm_runtime_enable(qcom->dev); 519 520 return 0; 521 522 depopulate: 523 of_platform_depopulate(&pdev->dev); 524 clk_disable: 525 for (i = qcom->num_clocks - 1; i >= 0; i--) { 526 clk_disable_unprepare(qcom->clks[i]); 527 clk_put(qcom->clks[i]); 528 } 529 reset_assert: 530 reset_control_assert(qcom->resets); 531 reset_put: 532 reset_control_put(qcom->resets); 533 534 return ret; 535 } 536 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation