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 sfr@canb.auug.org.au