Re: [PATCH v1 2/2] usb: dwc3: Add Qualcomm DWC3 glue driver
From: kbuild test robot
Date: Wed Mar 14 2018 - 00:22:09 EST
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
Attachment:
.config.gz
Description: application/gzip