All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Mark Brown" <broonie@kernel.org>
Cc: kbuild-all@lists.01.org, linux-spi@vger.kernel.org,
	linux-clk@vger.kernel.org, kernel@pengutronix.de
Subject: Re: [PATCH] spi: davinci: Simplify using devm_clk_get_prepared()
Date: Tue, 30 Mar 2021 12:09:44 +0800	[thread overview]
Message-ID: <202103301259.l0zBEbYv-lkp@intel.com> (raw)
In-Reply-To: <20210324201723.76299-1-u.kleine-koenig@pengutronix.de>

[-- Attachment #1: Type: text/plain, Size: 7634 bytes --]

Hi "Uwe,

I love your patch! Yet something to improve:

[auto build test ERROR on spi/for-next]
[also build test ERROR on v5.12-rc5 next-20210329]
[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]

url:    https://github.com/0day-ci/linux/commits/Uwe-Kleine-K-nig/spi-davinci-Simplify-using-devm_clk_get_prepared/20210325-041955
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/d4207ccf698f3daec6f45ba37439f303cd20196c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Uwe-Kleine-K-nig/spi-davinci-Simplify-using-devm_clk_get_prepared/20210325-041955
        git checkout d4207ccf698f3daec6f45ba37439f303cd20196c
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/spi/spi-davinci.c: In function 'davinci_spi_probe':
>> drivers/spi/spi-davinci.c:939:14: error: implicit declaration of function 'devm_clk_get_prepared' [-Werror=implicit-function-declaration]
     939 |  dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
         |              ^~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-davinci.c:939:12: warning: assignment to 'struct clk *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     939 |  dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
         |            ^
   cc1: some warnings being treated as errors


vim +/devm_clk_get_prepared +939 drivers/spi/spi-davinci.c

   856	
   857	/**
   858	 * davinci_spi_probe - probe function for SPI Master Controller
   859	 * @pdev: platform_device structure which contains plateform specific data
   860	 *
   861	 * According to Linux Device Model this function will be invoked by Linux
   862	 * with platform_device struct which contains the device specific info.
   863	 * This function will map the SPI controller's memory, register IRQ,
   864	 * Reset SPI controller and setting its registers to default value.
   865	 * It will invoke spi_bitbang_start to create work queue so that client driver
   866	 * can register transfer method to work queue.
   867	 */
   868	static int davinci_spi_probe(struct platform_device *pdev)
   869	{
   870		struct spi_master *master;
   871		struct davinci_spi *dspi;
   872		struct davinci_spi_platform_data *pdata;
   873		struct resource *r;
   874		int ret = 0;
   875		u32 spipc0;
   876	
   877		master = spi_alloc_master(&pdev->dev, sizeof(struct davinci_spi));
   878		if (master == NULL) {
   879			ret = -ENOMEM;
   880			goto err;
   881		}
   882	
   883		platform_set_drvdata(pdev, master);
   884	
   885		dspi = spi_master_get_devdata(master);
   886	
   887		if (dev_get_platdata(&pdev->dev)) {
   888			pdata = dev_get_platdata(&pdev->dev);
   889			dspi->pdata = *pdata;
   890		} else {
   891			/* update dspi pdata with that from the DT */
   892			ret = spi_davinci_get_pdata(pdev, dspi);
   893			if (ret < 0)
   894				goto free_master;
   895		}
   896	
   897		/* pdata in dspi is now updated and point pdata to that */
   898		pdata = &dspi->pdata;
   899	
   900		dspi->bytes_per_word = devm_kcalloc(&pdev->dev,
   901						    pdata->num_chipselect,
   902						    sizeof(*dspi->bytes_per_word),
   903						    GFP_KERNEL);
   904		if (dspi->bytes_per_word == NULL) {
   905			ret = -ENOMEM;
   906			goto free_master;
   907		}
   908	
   909		r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
   910		if (r == NULL) {
   911			ret = -ENOENT;
   912			goto free_master;
   913		}
   914	
   915		dspi->pbase = r->start;
   916	
   917		dspi->base = devm_ioremap_resource(&pdev->dev, r);
   918		if (IS_ERR(dspi->base)) {
   919			ret = PTR_ERR(dspi->base);
   920			goto free_master;
   921		}
   922	
   923		init_completion(&dspi->done);
   924	
   925		ret = platform_get_irq(pdev, 0);
   926		if (ret == 0)
   927			ret = -EINVAL;
   928		if (ret < 0)
   929			goto free_master;
   930		dspi->irq = ret;
   931	
   932		ret = devm_request_threaded_irq(&pdev->dev, dspi->irq, davinci_spi_irq,
   933					dummy_thread_fn, 0, dev_name(&pdev->dev), dspi);
   934		if (ret)
   935			goto free_master;
   936	
   937		dspi->bitbang.master = master;
   938	
 > 939		dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
   940		if (IS_ERR(dspi->clk)) {
   941			ret = -ENODEV;
   942			goto free_master;
   943		}
   944	
   945		master->use_gpio_descriptors = true;
   946		master->dev.of_node = pdev->dev.of_node;
   947		master->bus_num = pdev->id;
   948		master->num_chipselect = pdata->num_chipselect;
   949		master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 16);
   950		master->flags = SPI_MASTER_MUST_RX;
   951		master->setup = davinci_spi_setup;
   952		master->cleanup = davinci_spi_cleanup;
   953		master->can_dma = davinci_spi_can_dma;
   954	
   955		dspi->bitbang.chipselect = davinci_spi_chipselect;
   956		dspi->bitbang.setup_transfer = davinci_spi_setup_transfer;
   957		dspi->prescaler_limit = pdata->prescaler_limit;
   958		dspi->version = pdata->version;
   959	
   960		dspi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP | SPI_CS_WORD;
   961		if (dspi->version == SPI_VERSION_2)
   962			dspi->bitbang.flags |= SPI_READY;
   963	
   964		dspi->bitbang.txrx_bufs = davinci_spi_bufs;
   965	
   966		ret = davinci_spi_request_dma(dspi);
   967		if (ret == -EPROBE_DEFER) {
   968			goto free_master;
   969		} else if (ret) {
   970			dev_info(&pdev->dev, "DMA is not supported (%d)\n", ret);
   971			dspi->dma_rx = NULL;
   972			dspi->dma_tx = NULL;
   973		}
   974	
   975		dspi->get_rx = davinci_spi_rx_buf_u8;
   976		dspi->get_tx = davinci_spi_tx_buf_u8;
   977	
   978		/* Reset In/OUT SPI module */
   979		iowrite32(0, dspi->base + SPIGCR0);
   980		udelay(100);
   981		iowrite32(1, dspi->base + SPIGCR0);
   982	
   983		/* Set up SPIPC0.  CS and ENA init is done in davinci_spi_setup */
   984		spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK;
   985		iowrite32(spipc0, dspi->base + SPIPC0);
   986	
   987		if (pdata->intr_line)
   988			iowrite32(SPI_INTLVL_1, dspi->base + SPILVL);
   989		else
   990			iowrite32(SPI_INTLVL_0, dspi->base + SPILVL);
   991	
   992		iowrite32(CS_DEFAULT, dspi->base + SPIDEF);
   993	
   994		/* master mode default */
   995		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_CLKMOD_MASK);
   996		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_MASTER_MASK);
   997		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK);
   998	
   999		ret = spi_bitbang_start(&dspi->bitbang);
  1000		if (ret)
  1001			goto free_dma;
  1002	
  1003		dev_info(&pdev->dev, "Controller at 0x%p\n", dspi->base);
  1004	
  1005		return ret;
  1006	
  1007	free_dma:
  1008		if (dspi->dma_rx) {
  1009			dma_release_channel(dspi->dma_rx);
  1010			dma_release_channel(dspi->dma_tx);
  1011		}
  1012	free_master:
  1013		spi_master_put(master);
  1014	err:
  1015		return ret;
  1016	}
  1017	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 54314 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] spi: davinci: Simplify using devm_clk_get_prepared()
Date: Tue, 30 Mar 2021 12:09:44 +0800	[thread overview]
Message-ID: <202103301259.l0zBEbYv-lkp@intel.com> (raw)
In-Reply-To: <20210324201723.76299-1-u.kleine-koenig@pengutronix.de>

[-- Attachment #1: Type: text/plain, Size: 7843 bytes --]

Hi "Uwe,

I love your patch! Yet something to improve:

[auto build test ERROR on spi/for-next]
[also build test ERROR on v5.12-rc5 next-20210329]
[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]

url:    https://github.com/0day-ci/linux/commits/Uwe-Kleine-K-nig/spi-davinci-Simplify-using-devm_clk_get_prepared/20210325-041955
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/d4207ccf698f3daec6f45ba37439f303cd20196c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Uwe-Kleine-K-nig/spi-davinci-Simplify-using-devm_clk_get_prepared/20210325-041955
        git checkout d4207ccf698f3daec6f45ba37439f303cd20196c
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/spi/spi-davinci.c: In function 'davinci_spi_probe':
>> drivers/spi/spi-davinci.c:939:14: error: implicit declaration of function 'devm_clk_get_prepared' [-Werror=implicit-function-declaration]
     939 |  dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
         |              ^~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-davinci.c:939:12: warning: assignment to 'struct clk *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     939 |  dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
         |            ^
   cc1: some warnings being treated as errors


vim +/devm_clk_get_prepared +939 drivers/spi/spi-davinci.c

   856	
   857	/**
   858	 * davinci_spi_probe - probe function for SPI Master Controller
   859	 * @pdev: platform_device structure which contains plateform specific data
   860	 *
   861	 * According to Linux Device Model this function will be invoked by Linux
   862	 * with platform_device struct which contains the device specific info.
   863	 * This function will map the SPI controller's memory, register IRQ,
   864	 * Reset SPI controller and setting its registers to default value.
   865	 * It will invoke spi_bitbang_start to create work queue so that client driver
   866	 * can register transfer method to work queue.
   867	 */
   868	static int davinci_spi_probe(struct platform_device *pdev)
   869	{
   870		struct spi_master *master;
   871		struct davinci_spi *dspi;
   872		struct davinci_spi_platform_data *pdata;
   873		struct resource *r;
   874		int ret = 0;
   875		u32 spipc0;
   876	
   877		master = spi_alloc_master(&pdev->dev, sizeof(struct davinci_spi));
   878		if (master == NULL) {
   879			ret = -ENOMEM;
   880			goto err;
   881		}
   882	
   883		platform_set_drvdata(pdev, master);
   884	
   885		dspi = spi_master_get_devdata(master);
   886	
   887		if (dev_get_platdata(&pdev->dev)) {
   888			pdata = dev_get_platdata(&pdev->dev);
   889			dspi->pdata = *pdata;
   890		} else {
   891			/* update dspi pdata with that from the DT */
   892			ret = spi_davinci_get_pdata(pdev, dspi);
   893			if (ret < 0)
   894				goto free_master;
   895		}
   896	
   897		/* pdata in dspi is now updated and point pdata to that */
   898		pdata = &dspi->pdata;
   899	
   900		dspi->bytes_per_word = devm_kcalloc(&pdev->dev,
   901						    pdata->num_chipselect,
   902						    sizeof(*dspi->bytes_per_word),
   903						    GFP_KERNEL);
   904		if (dspi->bytes_per_word == NULL) {
   905			ret = -ENOMEM;
   906			goto free_master;
   907		}
   908	
   909		r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
   910		if (r == NULL) {
   911			ret = -ENOENT;
   912			goto free_master;
   913		}
   914	
   915		dspi->pbase = r->start;
   916	
   917		dspi->base = devm_ioremap_resource(&pdev->dev, r);
   918		if (IS_ERR(dspi->base)) {
   919			ret = PTR_ERR(dspi->base);
   920			goto free_master;
   921		}
   922	
   923		init_completion(&dspi->done);
   924	
   925		ret = platform_get_irq(pdev, 0);
   926		if (ret == 0)
   927			ret = -EINVAL;
   928		if (ret < 0)
   929			goto free_master;
   930		dspi->irq = ret;
   931	
   932		ret = devm_request_threaded_irq(&pdev->dev, dspi->irq, davinci_spi_irq,
   933					dummy_thread_fn, 0, dev_name(&pdev->dev), dspi);
   934		if (ret)
   935			goto free_master;
   936	
   937		dspi->bitbang.master = master;
   938	
 > 939		dspi->clk = devm_clk_get_prepared(&pdev->dev, NULL);
   940		if (IS_ERR(dspi->clk)) {
   941			ret = -ENODEV;
   942			goto free_master;
   943		}
   944	
   945		master->use_gpio_descriptors = true;
   946		master->dev.of_node = pdev->dev.of_node;
   947		master->bus_num = pdev->id;
   948		master->num_chipselect = pdata->num_chipselect;
   949		master->bits_per_word_mask = SPI_BPW_RANGE_MASK(2, 16);
   950		master->flags = SPI_MASTER_MUST_RX;
   951		master->setup = davinci_spi_setup;
   952		master->cleanup = davinci_spi_cleanup;
   953		master->can_dma = davinci_spi_can_dma;
   954	
   955		dspi->bitbang.chipselect = davinci_spi_chipselect;
   956		dspi->bitbang.setup_transfer = davinci_spi_setup_transfer;
   957		dspi->prescaler_limit = pdata->prescaler_limit;
   958		dspi->version = pdata->version;
   959	
   960		dspi->bitbang.flags = SPI_NO_CS | SPI_LSB_FIRST | SPI_LOOP | SPI_CS_WORD;
   961		if (dspi->version == SPI_VERSION_2)
   962			dspi->bitbang.flags |= SPI_READY;
   963	
   964		dspi->bitbang.txrx_bufs = davinci_spi_bufs;
   965	
   966		ret = davinci_spi_request_dma(dspi);
   967		if (ret == -EPROBE_DEFER) {
   968			goto free_master;
   969		} else if (ret) {
   970			dev_info(&pdev->dev, "DMA is not supported (%d)\n", ret);
   971			dspi->dma_rx = NULL;
   972			dspi->dma_tx = NULL;
   973		}
   974	
   975		dspi->get_rx = davinci_spi_rx_buf_u8;
   976		dspi->get_tx = davinci_spi_tx_buf_u8;
   977	
   978		/* Reset In/OUT SPI module */
   979		iowrite32(0, dspi->base + SPIGCR0);
   980		udelay(100);
   981		iowrite32(1, dspi->base + SPIGCR0);
   982	
   983		/* Set up SPIPC0.  CS and ENA init is done in davinci_spi_setup */
   984		spipc0 = SPIPC0_DIFUN_MASK | SPIPC0_DOFUN_MASK | SPIPC0_CLKFUN_MASK;
   985		iowrite32(spipc0, dspi->base + SPIPC0);
   986	
   987		if (pdata->intr_line)
   988			iowrite32(SPI_INTLVL_1, dspi->base + SPILVL);
   989		else
   990			iowrite32(SPI_INTLVL_0, dspi->base + SPILVL);
   991	
   992		iowrite32(CS_DEFAULT, dspi->base + SPIDEF);
   993	
   994		/* master mode default */
   995		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_CLKMOD_MASK);
   996		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_MASTER_MASK);
   997		set_io_bits(dspi->base + SPIGCR1, SPIGCR1_POWERDOWN_MASK);
   998	
   999		ret = spi_bitbang_start(&dspi->bitbang);
  1000		if (ret)
  1001			goto free_dma;
  1002	
  1003		dev_info(&pdev->dev, "Controller at 0x%p\n", dspi->base);
  1004	
  1005		return ret;
  1006	
  1007	free_dma:
  1008		if (dspi->dma_rx) {
  1009			dma_release_channel(dspi->dma_rx);
  1010			dma_release_channel(dspi->dma_tx);
  1011		}
  1012	free_master:
  1013		spi_master_put(master);
  1014	err:
  1015		return ret;
  1016	}
  1017	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 54314 bytes --]

  parent reply	other threads:[~2021-03-30  4:12 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-01 13:50 [PATCH v3 0/3] clk: provide new devm helpers for prepared and enabled clocks Uwe Kleine-König
2021-03-01 13:50 ` [PATCH v3 1/3] clk: generalize devm_clk_get() a bit Uwe Kleine-König
2021-03-01 13:50 ` [PATCH v3 2/3] clk: Provide new devm_clk_helpers for prepared and enabled clocks Uwe Kleine-König
2021-03-01 13:50 ` [PATCH v3 3/3] pwm: atmel: Simplify using devm_clk_get_prepared() Uwe Kleine-König
2021-03-22 14:22 ` [PATCH v3 0/3] clk: provide new devm helpers for prepared and enabled clocks Uwe Kleine-König
2021-03-24 20:12 ` [PATCH] i2c: imx: Simplify using devm_clk_get_prepared() Uwe Kleine-König
2021-03-24 20:22   ` Uwe Kleine-König
2021-03-25  4:49     ` Oleksij Rempel
2021-03-26 13:42   ` kernel test robot
2021-03-26 13:42     ` kernel test robot
2021-03-31  3:37   ` kernel test robot
2021-03-31  3:37     ` kernel test robot
2021-03-24 20:17 ` [PATCH] spi: davinci: " Uwe Kleine-König
2021-03-24 20:22   ` Uwe Kleine-König
2021-03-30 17:04     ` Mark Brown
2021-03-30  4:09   ` kernel test robot [this message]
2021-03-30  4:09     ` kernel test robot
2021-03-24 20:27 ` [PATCH] rtc: at91sma9: Simplify using devm_clk_get_enabled() Uwe Kleine-König
2021-03-24 20:27   ` Uwe Kleine-König
2021-03-25  1:11   ` kernel test robot
2021-03-25  1:11     ` kernel test robot
2021-03-25  1:11     ` kernel test robot
2021-03-25 15:15   ` kernel test robot
2021-03-25 15:15     ` kernel test robot
2021-03-25 15:15     ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202103301259.l0zBEbYv-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=broonie@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.