lkml.org 
[lkml]   [2024]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v1 1/2] spi: spi-cadence: Add optional reset control support
Hi Ji,

kernel test robot noticed the following build errors:

[auto build test ERROR on broonie-spi/for-next]
[also build test ERROR on robh/for-next krzk-dt/for-next linus/master v6.9-rc5 next-20240424]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Ji-Sheng-Teoh/spi-spi-cadence-Add-optional-reset-control-support/20240424-131551
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
patch link: https://lore.kernel.org/r/20240424051317.2084059-2-jisheng.teoh%40starfivetech.com
patch subject: [PATCH v1 1/2] spi: spi-cadence: Add optional reset control support
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240425/202404250235.htdVhIMY-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240425/202404250235.htdVhIMY-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404250235.htdVhIMY-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/spi/spi-cadence.c:593:15: error: implicit declaration of function 'devm_reset_control_get_optional_exclusive' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
xspi->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, NULL);
^
>> drivers/spi/spi-cadence.c:593:13: warning: incompatible integer to pointer conversion assigning to 'struct reset_control *' from 'int' [-Wint-conversion]
xspi->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, NULL);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/spi/spi-cadence.c:600:2: error: implicit declaration of function 'reset_control_assert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
reset_control_assert(xspi->rstc);
^
>> drivers/spi/spi-cadence.c:601:2: error: implicit declaration of function 'reset_control_deassert' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
reset_control_deassert(xspi->rstc);
^
drivers/spi/spi-cadence.c:601:2: note: did you mean 'reset_control_assert'?
drivers/spi/spi-cadence.c:600:2: note: 'reset_control_assert' declared here
reset_control_assert(xspi->rstc);
^
1 warning and 3 errors generated.


vim +/devm_reset_control_get_optional_exclusive +593 drivers/spi/spi-cadence.c

550
551 /**
552 * cdns_spi_probe - Probe method for the SPI driver
553 * @pdev: Pointer to the platform_device structure
554 *
555 * This function initializes the driver data structures and the hardware.
556 *
557 * Return: 0 on success and error value on error
558 */
559 static int cdns_spi_probe(struct platform_device *pdev)
560 {
561 int ret = 0, irq;
562 struct spi_controller *ctlr;
563 struct cdns_spi *xspi;
564 u32 num_cs;
565 bool target;
566
567 target = of_property_read_bool(pdev->dev.of_node, "spi-slave");
568 if (target)
569 ctlr = spi_alloc_target(&pdev->dev, sizeof(*xspi));
570 else
571 ctlr = spi_alloc_host(&pdev->dev, sizeof(*xspi));
572
573 if (!ctlr)
574 return -ENOMEM;
575
576 xspi = spi_controller_get_devdata(ctlr);
577 ctlr->dev.of_node = pdev->dev.of_node;
578 platform_set_drvdata(pdev, ctlr);
579
580 xspi->regs = devm_platform_ioremap_resource(pdev, 0);
581 if (IS_ERR(xspi->regs)) {
582 ret = PTR_ERR(xspi->regs);
583 goto remove_ctlr;
584 }
585
586 xspi->pclk = devm_clk_get_enabled(&pdev->dev, "pclk");
587 if (IS_ERR(xspi->pclk)) {
588 dev_err(&pdev->dev, "pclk clock not found.\n");
589 ret = PTR_ERR(xspi->pclk);
590 goto remove_ctlr;
591 }
592
> 593 xspi->rstc = devm_reset_control_get_optional_exclusive(&pdev->dev, NULL);
594 if (IS_ERR(xspi->rstc)) {
595 ret = PTR_ERR(xspi->rstc);
596 dev_err(&pdev->dev, "Cannot get SPI reset.\n");
597 goto remove_ctlr;
598 }
599
> 600 reset_control_assert(xspi->rstc);
> 601 reset_control_deassert(xspi->rstc);
602
603 if (!spi_controller_is_target(ctlr)) {
604 xspi->ref_clk = devm_clk_get_enabled(&pdev->dev, "ref_clk");
605 if (IS_ERR(xspi->ref_clk)) {
606 dev_err(&pdev->dev, "ref_clk clock not found.\n");
607 ret = PTR_ERR(xspi->ref_clk);
608 goto remove_ctlr;
609 }
610
611 pm_runtime_use_autosuspend(&pdev->dev);
612 pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT);
613 pm_runtime_get_noresume(&pdev->dev);
614 pm_runtime_set_active(&pdev->dev);
615 pm_runtime_enable(&pdev->dev);
616
617 ret = of_property_read_u32(pdev->dev.of_node, "num-cs", &num_cs);
618 if (ret < 0)
619 ctlr->num_chipselect = CDNS_SPI_DEFAULT_NUM_CS;
620 else
621 ctlr->num_chipselect = num_cs;
622
623 ret = of_property_read_u32(pdev->dev.of_node, "is-decoded-cs",
624 &xspi->is_decoded_cs);
625 if (ret < 0)
626 xspi->is_decoded_cs = 0;
627 }
628
629 cdns_spi_detect_fifo_depth(xspi);
630
631 /* SPI controller initializations */
632 cdns_spi_init_hw(xspi, spi_controller_is_target(ctlr));
633
634 irq = platform_get_irq(pdev, 0);
635 if (irq < 0) {
636 ret = irq;
637 goto clk_dis_all;
638 }
639
640 ret = devm_request_irq(&pdev->dev, irq, cdns_spi_irq,
641 0, pdev->name, ctlr);
642 if (ret != 0) {
643 ret = -ENXIO;
644 dev_err(&pdev->dev, "request_irq failed\n");
645 goto clk_dis_all;
646 }
647
648 ctlr->use_gpio_descriptors = true;
649 ctlr->prepare_transfer_hardware = cdns_prepare_transfer_hardware;
650 ctlr->prepare_message = cdns_prepare_message;
651 ctlr->transfer_one = cdns_transfer_one;
652 ctlr->unprepare_transfer_hardware = cdns_unprepare_transfer_hardware;
653 ctlr->mode_bits = SPI_CPOL | SPI_CPHA;
654 ctlr->bits_per_word_mask = SPI_BPW_MASK(8);
655
656 if (!spi_controller_is_target(ctlr)) {
657 ctlr->mode_bits |= SPI_CS_HIGH;
658 ctlr->set_cs = cdns_spi_chipselect;
659 ctlr->auto_runtime_pm = true;
660 xspi->clk_rate = clk_get_rate(xspi->ref_clk);
661 /* Set to default valid value */
662 ctlr->max_speed_hz = xspi->clk_rate / 4;
663 xspi->speed_hz = ctlr->max_speed_hz;
664 pm_runtime_mark_last_busy(&pdev->dev);
665 pm_runtime_put_autosuspend(&pdev->dev);
666 } else {
667 ctlr->mode_bits |= SPI_NO_CS;
668 ctlr->target_abort = cdns_target_abort;
669 }
670 ret = spi_register_controller(ctlr);
671 if (ret) {
672 dev_err(&pdev->dev, "spi_register_controller failed\n");
673 goto clk_dis_all;
674 }
675
676 return ret;
677
678 clk_dis_all:
679 if (!spi_controller_is_target(ctlr)) {
680 pm_runtime_set_suspended(&pdev->dev);
681 pm_runtime_disable(&pdev->dev);
682 }
683 remove_ctlr:
684 spi_controller_put(ctlr);
685 return ret;
686 }
687

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

\
 
 \ /
  Last update: 2024-04-24 20:41    [W:0.113 / U:0.912 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site