On Wed, 10 Jul 2013, Geert Uytterhoeven wrote: > If NO_DMA=y: > > drivers/built-in.o: In function `usb_hcd_unmap_urb_setup_for_dma': > drivers/usb/core/hcd.c:1361: undefined reference to `dma_unmap_single' > ,,, > > Commit d9ea21a779278da06d0cbe989594bf542ed213d7 ("usb: host: make > USB_ARCH_HAS_?HCI obsolete") allowed to enable USB on platforms with > NO_DMA=y, and exposed several input and media USB drivers that just select > USB if USB_ARCH_HAS_HCD, without checking HAS_DMA. > > Fix the former by making USB depend on HAS_DMA. This isn't right. There are USB host controllers that use PIO, not DMA. The HAS_DMA dependency should go with the controller driver, not the USB core. On the other hand, the USB core does call various routines like dma_unmap_single. It ought to be possible to compile these calls even when DMA isn't enabled. That is, they should be defined as do-nothing stubs. > To fix the latter, instead of adding lots of "depends on HAS_DMA", make > those drivers depend on USB, instead of depending on USB_ARCH_HAS_HCD and > selecting USB. Drivers for other busses (e.g. MOUSE_SYNAPTICS_I2C) already > handle this in a similar way. That seems reasonable. Alan Stern -- 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