On Tue, Aug 27, 2013 at 9:16 PM, Felipe Balbi <balbi@xxxxxx> wrote: > On Mon, Aug 19, 2013 at 09:24:01AM +0800, Peter Chen wrote: >> On Sun, Aug 18, 2013 at 10:20:44PM +0200, Geert Uytterhoeven wrote: >> > If NO_DMA=y: >> > >> > drivers/built-in.o: In function `dma_set_coherent_mask': >> > include/linux/dma-mapping.h:93: undefined reference to `dma_supported' >> > >> > Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> >> > --- >> > drivers/usb/chipidea/Kconfig | 2 +- >> > 1 file changed, 1 insertion(+), 1 deletion(-) >> > >> > diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig >> > index d1bd8ef..dbd5232 100644 >> > --- a/drivers/usb/chipidea/Kconfig >> > +++ b/drivers/usb/chipidea/Kconfig >> > @@ -1,6 +1,6 @@ >> > config USB_CHIPIDEA >> > tristate "ChipIdea Highspeed Dual Role Controller" >> > - depends on USB || USB_GADGET >> > + depends on (USB || USB_GADGET) && HAS_DMA >> > help >> > Say Y here if your system has a dual role high speed USB >> > controller based on ChipIdea silicon IP. Currently, only the >> >> I can't understand why the DMA can't be changed to fix this instead >> of changing every driver? > > I'm with you. It'd be nicer to just provide empty stubs when !HAS_DMA That would give us drivers that compile but don't work. Not having stubs is intentional, cfr. the comment at the top of include/asm-generic/dma-mapping-broken.h: /* define the dma api to allow compilation but not linking of * dma dependent code. Code that depends on the dma-mapping * API needs to set 'depends on HAS_DMA' in its Kconfig */ and the comments in the commit that introduced it: commit 1b0fac45878bb88759eec347c273285195649ff7 Author: Dan Williams <dan.j.williams@xxxxxxxxx> Date: Sun Jul 15 23:40:26 2007 -0700 dma-mapping: prevent dma dependent code from linking on !HAS_DMA archs Continuing the work started in 411f0f3edc141a582190d3605cadd1d993abb6df ... This enables code with a dma path, that compiles away, to build without requiring additional code factoring. It also prevents code that calls dma_alloc_coherent and dma_free_coherent from linking whereas previously the code would hit a BUG() at run time. Finally, it allows archs that set !HAS_DMA to delete their asm/dma-mapping.h file. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html