Hi Sergey,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on spi/for-next]
[also build test ERROR on v4.16 next-20180403]
[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/Sergey-Suloev/spi-Add-support-for-DMA-transfers-in-sun6i-SPI-driver/20180404-053231
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
config: alpha-allyesconfig (attached as .config)
compiler: alpha-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=alpha 

Note: the 
linux-review/Sergey-Suloev/spi-Add-support-for-DMA-transfers-in-sun6i-SPI-driver/20180404-053231
 HEAD a0c010a285d830f07bb81ea59eaea8773d78b74c builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>):

   drivers//spi/spi-sun6i.c: In function 'sun6i_spi_transfer_one':
>> drivers//spi/spi-sun6i.c:371:2: error: implicit declaration of function 
>> 'sun6i_spi_enable_interrupt'; did you mean 'sun6i_spi_transfer_one'? 
>> [-Werror=implicit-function-declaration]
     sun6i_spi_enable_interrupt(sspi, SUN6I_INT_CTL_TC |
     ^~~~~~~~~~~~~~~~~~~~~~~~~~
     sun6i_spi_transfer_one
   drivers//spi/spi-sun6i.c:277:27: warning: unused variable 'tx_time' 
[-Wunused-variable]
     unsigned int start, end, tx_time;
                              ^~~~~~~
   drivers//spi/spi-sun6i.c:277:22: warning: unused variable 'end' 
[-Wunused-variable]
     unsigned int start, end, tx_time;
                         ^~~
   drivers//spi/spi-sun6i.c:277:15: warning: unused variable 'start' 
[-Wunused-variable]
     unsigned int start, end, tx_time;
                  ^~~~~
   drivers//spi/spi-sun6i.c:276:31: warning: unused variable 'timeout' 
[-Wunused-variable]
     unsigned int mclk_rate, div, timeout;
                                  ^~~~~~~
   cc1: some warnings being treated as errors

vim +371 drivers//spi/spi-sun6i.c

43836daab Sergey Suloev   2018-04-03  270  
3558fe900 Maxime Ripard   2014-02-05  271  static int 
sun6i_spi_transfer_one(struct spi_master *master,
3558fe900 Maxime Ripard   2014-02-05  272                                 
struct spi_device *spi,
3558fe900 Maxime Ripard   2014-02-05  273                                 
struct spi_transfer *tfr)
3558fe900 Maxime Ripard   2014-02-05  274  {
3558fe900 Maxime Ripard   2014-02-05  275       struct sun6i_spi *sspi = 
spi_master_get_devdata(master);
3558fe900 Maxime Ripard   2014-02-05  276       unsigned int mclk_rate, div, 
timeout;
719bd6542 Michal Suchanek 2016-06-13  277       unsigned int start, end, 
tx_time;
913f536c6 Icenowy Zheng   2017-03-06  278       unsigned int trig_level;
3558fe900 Maxime Ripard   2014-02-05  279       unsigned int tx_len = 0;
3558fe900 Maxime Ripard   2014-02-05  280       int ret = 0;
3558fe900 Maxime Ripard   2014-02-05  281       u32 reg;
3558fe900 Maxime Ripard   2014-02-05  282  
e31cf0250 Sergey Suloev   2018-04-03  283       /* A zero length transfer never 
finishes if programmed
e31cf0250 Sergey Suloev   2018-04-03  284          in the hardware */
e31cf0250 Sergey Suloev   2018-04-03  285       if (!tfr->len)
e31cf0250 Sergey Suloev   2018-04-03  286               return 0;
e31cf0250 Sergey Suloev   2018-04-03  287  
e31cf0250 Sergey Suloev   2018-04-03  288       /* Don't support transfer 
larger than the FIFO */
e31cf0250 Sergey Suloev   2018-04-03  289       if (tfr->len > sspi->fifo_depth)
e31cf0250 Sergey Suloev   2018-04-03  290               return -EMSGSIZE;
3558fe900 Maxime Ripard   2014-02-05  291  
3558fe900 Maxime Ripard   2014-02-05  292       sspi->tx_buf = tfr->tx_buf;
3558fe900 Maxime Ripard   2014-02-05  293       sspi->rx_buf = tfr->rx_buf;
3558fe900 Maxime Ripard   2014-02-05  294       sspi->len = tfr->len;
3558fe900 Maxime Ripard   2014-02-05  295  
3558fe900 Maxime Ripard   2014-02-05  296       /* Clear pending interrupts */
3558fe900 Maxime Ripard   2014-02-05  297       sun6i_spi_write(sspi, 
SUN6I_INT_STA_REG, ~0);
3558fe900 Maxime Ripard   2014-02-05  298  
3558fe900 Maxime Ripard   2014-02-05  299       /* Reset FIFO */
3558fe900 Maxime Ripard   2014-02-05  300       sun6i_spi_write(sspi, 
SUN6I_FIFO_CTL_REG,
3558fe900 Maxime Ripard   2014-02-05  301                       
SUN6I_FIFO_CTL_RF_RST | SUN6I_FIFO_CTL_TF_RST);
3558fe900 Maxime Ripard   2014-02-05  302  
3558fe900 Maxime Ripard   2014-02-05  303       /*
913f536c6 Icenowy Zheng   2017-03-06  304        * Setup FIFO interrupt trigger 
level
913f536c6 Icenowy Zheng   2017-03-06  305        * Here we choose 3/4 of the 
full fifo depth, as it's the hardcoded
913f536c6 Icenowy Zheng   2017-03-06  306        * value used in old generation 
of Allwinner SPI controller.
913f536c6 Icenowy Zheng   2017-03-06  307        * (See spi-sun4i.c)
913f536c6 Icenowy Zheng   2017-03-06  308        */
913f536c6 Icenowy Zheng   2017-03-06  309       trig_level = sspi->fifo_depth / 
4 * 3;
913f536c6 Icenowy Zheng   2017-03-06  310       sun6i_spi_write(sspi, 
SUN6I_FIFO_CTL_REG,
e31cf0250 Sergey Suloev   2018-04-03  311                       (trig_level << 
SUN6I_FIFO_CTL_RF_RDY_TRIG_LEVEL_BITS));
913f536c6 Icenowy Zheng   2017-03-06  312  
3558fe900 Maxime Ripard   2014-02-05  313       /*
3558fe900 Maxime Ripard   2014-02-05  314        * If it's a TX only transfer, 
we don't want to fill the RX
3558fe900 Maxime Ripard   2014-02-05  315        * FIFO with bogus data
3558fe900 Maxime Ripard   2014-02-05  316        */
3558fe900 Maxime Ripard   2014-02-05  317       if (sspi->rx_buf)
2c98d976c Sergey Suloev   2018-04-03  318               sun6i_spi_unset(sspi, 
SUN6I_TFR_CTL_REG, SUN6I_TFR_CTL_DHB);
3558fe900 Maxime Ripard   2014-02-05  319       else
2c98d976c Sergey Suloev   2018-04-03  320               sun6i_spi_set(sspi, 
SUN6I_TFR_CTL_REG, SUN6I_TFR_CTL_DHB);
3558fe900 Maxime Ripard   2014-02-05  321  
09d186f3c Sergey Suloev   2018-04-03  322  
3558fe900 Maxime Ripard   2014-02-05  323       /* Ensure that we have a parent 
clock fast enough */
3558fe900 Maxime Ripard   2014-02-05  324       mclk_rate = 
clk_get_rate(sspi->mclk);
47284e3e0 Marcus Weseloh  2015-11-08  325       if (mclk_rate < (2 * 
tfr->speed_hz)) {
47284e3e0 Marcus Weseloh  2015-11-08  326               
clk_set_rate(sspi->mclk, 2 * tfr->speed_hz);
3558fe900 Maxime Ripard   2014-02-05  327               mclk_rate = 
clk_get_rate(sspi->mclk);
3558fe900 Maxime Ripard   2014-02-05  328       }
3558fe900 Maxime Ripard   2014-02-05  329  
3558fe900 Maxime Ripard   2014-02-05  330       /*
3558fe900 Maxime Ripard   2014-02-05  331        * Setup clock divider.
3558fe900 Maxime Ripard   2014-02-05  332        *
3558fe900 Maxime Ripard   2014-02-05  333        * We have two choices there. 
Either we can use the clock
3558fe900 Maxime Ripard   2014-02-05  334        * divide rate 1, which is 
calculated thanks to this formula:
3558fe900 Maxime Ripard   2014-02-05  335        * SPI_CLK = MOD_CLK / (2 ^ cdr)
3558fe900 Maxime Ripard   2014-02-05  336        * Or we can use CDR2, which is 
calculated with the formula:
3558fe900 Maxime Ripard   2014-02-05  337        * SPI_CLK = MOD_CLK / (2 * 
(cdr + 1))
3558fe900 Maxime Ripard   2014-02-05  338        * Wether we use the former or 
the latter is set through the
3558fe900 Maxime Ripard   2014-02-05  339        * DRS bit.
3558fe900 Maxime Ripard   2014-02-05  340        *
3558fe900 Maxime Ripard   2014-02-05  341        * First try CDR2, and if we 
can't reach the expected
3558fe900 Maxime Ripard   2014-02-05  342        * frequency, fall back to CDR1.
3558fe900 Maxime Ripard   2014-02-05  343        */
47284e3e0 Marcus Weseloh  2015-11-08  344       div = mclk_rate / (2 * 
tfr->speed_hz);
3558fe900 Maxime Ripard   2014-02-05  345       if (div <= 
(SUN6I_CLK_CTL_CDR2_MASK + 1)) {
3558fe900 Maxime Ripard   2014-02-05  346               if (div > 0)
3558fe900 Maxime Ripard   2014-02-05  347                       div--;
3558fe900 Maxime Ripard   2014-02-05  348  
3558fe900 Maxime Ripard   2014-02-05  349               reg = 
SUN6I_CLK_CTL_CDR2(div) | SUN6I_CLK_CTL_DRS;
3558fe900 Maxime Ripard   2014-02-05  350       } else {
47284e3e0 Marcus Weseloh  2015-11-08  351               div = ilog2(mclk_rate) 
- ilog2(tfr->speed_hz);
3558fe900 Maxime Ripard   2014-02-05  352               reg = 
SUN6I_CLK_CTL_CDR1(div);
3558fe900 Maxime Ripard   2014-02-05  353       }
3558fe900 Maxime Ripard   2014-02-05  354  
3558fe900 Maxime Ripard   2014-02-05  355       sun6i_spi_write(sspi, 
SUN6I_CLK_CTL_REG, reg);
3558fe900 Maxime Ripard   2014-02-05  356  
3558fe900 Maxime Ripard   2014-02-05  357       /* Setup the transfer now... */
3558fe900 Maxime Ripard   2014-02-05  358       if (sspi->tx_buf)
3558fe900 Maxime Ripard   2014-02-05  359               tx_len = tfr->len;
3558fe900 Maxime Ripard   2014-02-05  360  
3558fe900 Maxime Ripard   2014-02-05  361       /* Setup the counters */
3558fe900 Maxime Ripard   2014-02-05  362       sun6i_spi_write(sspi, 
SUN6I_BURST_CNT_REG, SUN6I_BURST_CNT(tfr->len));
3558fe900 Maxime Ripard   2014-02-05  363       sun6i_spi_write(sspi, 
SUN6I_XMIT_CNT_REG, SUN6I_XMIT_CNT(tx_len));
3558fe900 Maxime Ripard   2014-02-05  364       sun6i_spi_write(sspi, 
SUN6I_BURST_CTL_CNT_REG,
3558fe900 Maxime Ripard   2014-02-05  365                       
SUN6I_BURST_CTL_CNT_STC(tx_len));
3558fe900 Maxime Ripard   2014-02-05  366  
3558fe900 Maxime Ripard   2014-02-05  367       /* Fill the TX FIFO */
10565dfd3 Milo Kim        2016-10-28  368       sun6i_spi_fill_fifo(sspi, 
sspi->fifo_depth);
3558fe900 Maxime Ripard   2014-02-05  369  
3558fe900 Maxime Ripard   2014-02-05  370       /* Enable the interrupts */
913f536c6 Icenowy Zheng   2017-03-06 @371       
sun6i_spi_enable_interrupt(sspi, SUN6I_INT_CTL_TC |
913f536c6 Icenowy Zheng   2017-03-06  372                                       
 SUN6I_INT_CTL_RF_RDY);
3558fe900 Maxime Ripard   2014-02-05  373  
3558fe900 Maxime Ripard   2014-02-05  374       /* Start the transfer */
2c98d976c Sergey Suloev   2018-04-03  375       sun6i_spi_set(sspi, 
SUN6I_TFR_CTL_REG, SUN6I_TFR_CTL_XCH);
3558fe900 Maxime Ripard   2014-02-05  376  
43836daab Sergey Suloev   2018-04-03  377       /* Wait for completion */
43836daab Sergey Suloev   2018-04-03  378       ret = 
sun6i_spi_wait_for_transfer(spi, tfr);
3558fe900 Maxime Ripard   2014-02-05  379  
3558fe900 Maxime Ripard   2014-02-05  380       sun6i_spi_write(sspi, 
SUN6I_INT_CTL_REG, 0);
3558fe900 Maxime Ripard   2014-02-05  381  
3558fe900 Maxime Ripard   2014-02-05  382       return ret;
3558fe900 Maxime Ripard   2014-02-05  383  }
3558fe900 Maxime Ripard   2014-02-05  384  

:::::: The code at line 371 was first introduced by commit
:::::: 913f536c6c18a2e19e32f06971101c1d0ae3739c spi: sun6i: Allow transfers 
larger than FIFO size

:::::: TO: Icenowy Zheng <[email protected]>
:::::: CC: Mark Brown <[email protected]>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to