Subject: linux-next: build failure after merge of the spi tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 29 Jul 2013 13:42:23 +1000

Hi Mark,

After merging the spi tree, today's linux-next build (x86_64 allmodconfig)
failed like this:

drivers/spi/spi-pxa2xx-pxadma.c: In function 'wait_dma_channel_stop':
drivers/spi/spi-pxa2xx-pxadma.c:136:2: error: implicit declaration of function 'DCSR' [-Werror=implicit-function-declaration]
  while (!(DCSR(channel) & DCSR_STOPSTATE) && --limit)
  ^
drivers/spi/spi-pxa2xx-pxadma.c:136:27: error: 'DCSR_STOPSTATE' undeclared (first use in this function)
  while (!(DCSR(channel) & DCSR_STOPSTATE) && --limit)
                           ^
drivers/spi/spi-pxa2xx-pxadma.c:136:27: note: each undeclared identifier is reported only once for each function it appears in
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_error_stop':
drivers/spi/spi-pxa2xx-pxadma.c:32:28: error: 'DCSR_NODESC' undeclared (first use in this function)
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                            ^
drivers/spi/spi-pxa2xx-pxadma.c:148:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:24: error: 'DCSR_ENDINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:148:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:39: error: 'DCSR_STARTINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                       ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:148:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:56: error: 'DCSR_BUSERR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:148:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_transfer_complete':
drivers/spi/spi-pxa2xx-pxadma.c:32:28: error: 'DCSR_NODESC' undeclared (first use in this function)
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                            ^
drivers/spi/spi-pxa2xx-pxadma.c:173:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:24: error: 'DCSR_ENDINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:173:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:39: error: 'DCSR_STARTINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                       ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:173:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:56: error: 'DCSR_BUSERR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:173:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->tx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:188:4: error: implicit declaration of function 'DCMD' [-Werror=implicit-function-declaration]
    (DCMD(drv_data->rx_channel) & DCMD_LENGTH);
    ^
drivers/spi/spi-pxa2xx-pxadma.c:188:34: error: 'DCMD_LENGTH' undeclared (first use in this function)
    (DCMD(drv_data->rx_channel) & DCMD_LENGTH);
                                  ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_handler':
drivers/spi/spi-pxa2xx-pxadma.c:31:24: error: 'DCSR_ENDINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                        ^
drivers/spi/spi-pxa2xx-pxadma.c:213:35: note: in expansion of macro 'DMA_INT_MASK'
  u32 irq_status = DCSR(channel) & DMA_INT_MASK;
                                   ^
drivers/spi/spi-pxa2xx-pxadma.c:31:39: error: 'DCSR_STARTINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                       ^
drivers/spi/spi-pxa2xx-pxadma.c:213:35: note: in expansion of macro 'DMA_INT_MASK'
  u32 irq_status = DCSR(channel) & DMA_INT_MASK;
                                   ^
drivers/spi/spi-pxa2xx-pxadma.c:31:56: error: 'DCSR_BUSERR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                                        ^
drivers/spi/spi-pxa2xx-pxadma.c:213:35: note: in expansion of macro 'DMA_INT_MASK'
  u32 irq_status = DCSR(channel) & DMA_INT_MASK;
                                   ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_transfer':
drivers/spi/spi-pxa2xx-pxadma.c:255:36: error: 'DCSR_RUN' undeclared (first use in this function)
   && (DCSR(drv_data->tx_channel) & DCSR_RUN)) {
                                    ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_prepare':
drivers/spi/spi-pxa2xx-pxadma.c:283:15: error: 'DCMD_WIDTH1' undeclared (first use in this function)
   dma_width = DCMD_WIDTH1;
               ^
drivers/spi/spi-pxa2xx-pxadma.c:286:15: error: 'DCMD_WIDTH2' undeclared (first use in this function)
   dma_width = DCMD_WIDTH2;
               ^
drivers/spi/spi-pxa2xx-pxadma.c:289:15: error: 'DCMD_WIDTH4' undeclared (first use in this function)
   dma_width = DCMD_WIDTH4;
               ^
drivers/spi/spi-pxa2xx-pxadma.c:32:28: error: 'DCSR_NODESC' undeclared (first use in this function)
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                            ^
drivers/spi/spi-pxa2xx-pxadma.c:294:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:24: error: 'DCSR_ENDINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:294:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:39: error: 'DCSR_STARTINTR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                       ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:294:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:31:56: error: 'DCSR_BUSERR' undeclared (first use in this function)
 #define DMA_INT_MASK  (DCSR_ENDINTR | DCSR_STARTINTR | DCSR_BUSERR)
                                                        ^
drivers/spi/spi-pxa2xx-pxadma.c:32:42: note: in expansion of macro 'DMA_INT_MASK'
 #define RESET_DMA_CHANNEL (DCSR_NODESC | DMA_INT_MASK)
                                          ^
drivers/spi/spi-pxa2xx-pxadma.c:294:31: note: in expansion of macro 'RESET_DMA_CHANNEL'
  DCSR(drv_data->rx_channel) = RESET_DMA_CHANNEL;
                               ^
drivers/spi/spi-pxa2xx-pxadma.c:295:2: error: implicit declaration of function 'DSADR' [-Werror=implicit-function-declaration]
  DSADR(drv_data->rx_channel) = drv_data->ssdr_physical;
  ^
drivers/spi/spi-pxa2xx-pxadma.c:295:30: error: lvalue required as left operand of assignment
  DSADR(drv_data->rx_channel) = drv_data->ssdr_physical;
                              ^
drivers/spi/spi-pxa2xx-pxadma.c:296:2: error: implicit declaration of function 'DTADR' [-Werror=implicit-function-declaration]
  DTADR(drv_data->rx_channel) = drv_data->rx_dma;
  ^
drivers/spi/spi-pxa2xx-pxadma.c:296:30: error: lvalue required as left operand of assignment
  DTADR(drv_data->rx_channel) = drv_data->rx_dma;
                              ^
drivers/spi/spi-pxa2xx-pxadma.c:299:32: error: 'DCMD_FLOWSRC' undeclared (first use in this function)
   DCMD(drv_data->rx_channel) = DCMD_FLOWSRC
                                ^
drivers/spi/spi-pxa2xx-pxadma.c:304:32: error: 'DCMD_INCTRGADDR' undeclared (first use in this function)
   DCMD(drv_data->rx_channel) = DCMD_INCTRGADDR
                                ^
drivers/spi/spi-pxa2xx-pxadma.c:312:30: error: lvalue required as left operand of assignment
  DSADR(drv_data->tx_channel) = drv_data->tx_dma;
                              ^
drivers/spi/spi-pxa2xx-pxadma.c:313:30: error: lvalue required as left operand of assignment
  DTADR(drv_data->tx_channel) = drv_data->ssdr_physical;
                              ^
drivers/spi/spi-pxa2xx-pxadma.c:316:32: error: 'DCMD_FLOWTRG' undeclared (first use in this function)
   DCMD(drv_data->tx_channel) = DCMD_FLOWTRG
                                ^
drivers/spi/spi-pxa2xx-pxadma.c:321:32: error: 'DCMD_INCSRCADDR' undeclared (first use in this function)
   DCMD(drv_data->tx_channel) = DCMD_INCSRCADDR
                                ^
drivers/spi/spi-pxa2xx-pxadma.c:329:33: error: 'DCMD_ENDIRQEN' undeclared (first use in this function)
   DCMD(drv_data->tx_channel) |= DCMD_ENDIRQEN;
                                 ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_start':
drivers/spi/spi-pxa2xx-pxadma.c:336:32: error: 'DCSR_RUN' undeclared (first use in this function)
  DCSR(drv_data->rx_channel) |= DCSR_RUN;
                                ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_setup':
drivers/spi/spi-pxa2xx-pxadma.c:346:2: error: implicit declaration of function 'pxa_request_dma' [-Werror=implicit-function-declaration]
  drv_data->rx_channel = pxa_request_dma("pxa2xx_spi_ssp_rx",
  ^
drivers/spi/spi-pxa2xx-pxadma.c:347:7: error: 'DMA_PRIO_HIGH' undeclared (first use in this function)
       DMA_PRIO_HIGH,
       ^
drivers/spi/spi-pxa2xx-pxadma.c:356:7: error: 'DMA_PRIO_MEDIUM' undeclared (first use in this function)
       DMA_PRIO_MEDIUM,
       ^
drivers/spi/spi-pxa2xx-pxadma.c:362:3: error: implicit declaration of function 'pxa_free_dma' [-Werror=implicit-function-declaration]
   pxa_free_dma(drv_data->rx_channel);
   ^
drivers/spi/spi-pxa2xx-pxadma.c:366:2: error: implicit declaration of function 'DRCMR' [-Werror=implicit-function-declaration]
  DRCMR(ssp->drcmr_rx) = DRCMR_MAPVLD | drv_data->rx_channel;
  ^
drivers/spi/spi-pxa2xx-pxadma.c:366:25: error: 'DRCMR_MAPVLD' undeclared (first use in this function)
  DRCMR(ssp->drcmr_rx) = DRCMR_MAPVLD | drv_data->rx_channel;
                         ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_release':
drivers/spi/spi-pxa2xx-pxadma.c:376:23: error: lvalue required as left operand of assignment
  DRCMR(ssp->drcmr_rx) = 0;
                       ^
drivers/spi/spi-pxa2xx-pxadma.c:377:23: error: lvalue required as left operand of assignment
  DRCMR(ssp->drcmr_tx) = 0;
                       ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_dma_resume':
drivers/spi/spi-pxa2xx-pxadma.c:389:4: error: 'DRCMR_MAPVLD' undeclared (first use in this function)
    DRCMR_MAPVLD | drv_data->rx_channel;
    ^
drivers/spi/spi-pxa2xx-pxadma.c: In function 'pxa2xx_spi_set_dma_burst_and_threshold':
drivers/spi/spi-pxa2xx-pxadma.c:441:27: error: 'DCMD_BURST8' undeclared (first use in this function)
    chip->dma_burst_size = DCMD_BURST8;
                           ^
drivers/spi/spi-pxa2xx-pxadma.c:445:8: error: 'DCMD_BURST16' undeclared (first use in this function)
   case DCMD_BURST16:
        ^
drivers/spi/spi-pxa2xx-pxadma.c:448:8: error: 'DCMD_BURST32' undeclared (first use in this function)
   case DCMD_BURST32:
        ^

Presumably caused by commit 854b3b284ec9 ("spi/drivers: Enable build of
drivers with COMPILE_TEST").

Frankly, Mark, if you are unable or unwilling to do some basic cross
build testing, please do not do any more of these patches that add
CONFIG_COMPILE_TEST.  Leave them to someone who can.

I have used the spi tree from next-20130726 for today.
-- 
Cheers,
Stephen Rothwell                    [email-masked]