Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e7fc3ba authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Felipe Balbi
Browse files

usb: musb: use a Kconfig choice to pick the right DMA method



The logic to allow only one DMA driver in MUSB is currently
flawed, because it also allows picking no DMA driver at all
and also not selecting PIO mode.

Using a choice statement makes this foolproof for now and
also simplifies the Makefile.

Unfortunately, we will have to revisit this when we start
supporting multiple ARM platforms in a single kernel binary,
because at that point we will actually need to select
multiple DMA drivers and pick the right one at run-time.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Cc: Felipe Balbi <balbi@ti.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent e25bec16
Loading
Loading
Loading
Loading
+34 −23
Original line number Diff line number Diff line
@@ -65,46 +65,57 @@ config USB_MUSB_UX500

endchoice

config MUSB_PIO_ONLY
	bool 'Disable DMA (always use PIO)'
	depends on USB_MUSB_HDRC
	default USB_MUSB_TUSB6010 || USB_MUSB_DA8XX || USB_MUSB_AM35X
choice
	prompt 'MUSB DMA mode'
	default USB_UX500_DMA if USB_MUSB_UX500
	default USB_INVENTRA_DMA if USB_MUSB_OMAP2PLUS || USB_MUSB_BLACKFIN
	default USB_TI_CPPI_DMA if USB_MUSB_DAVINCI
	default USB_TUSB_OMAP_DMA if USB_MUSB_TUSB6010
	default MUSB_PIO_ONLY if USB_MUSB_TUSB6010 || USB_MUSB_DA8XX || USB_MUSB_AM35X
	help
	  All data is copied between memory and FIFO by the CPU.
	  DMA controllers are ignored.

	  Do not select 'n' here unless DMA support for your SOC or board
	  is unavailable (or unstable).  When DMA is enabled at compile time,
	  you can still disable it at run time using the "use_dma=n" module
	  parameter.
	  Unfortunately, only one option can be enabled here. Ideally one
	  should be able to build all these drivers into one kernel to
	  allow using DMA on multiplatform kernels.

config USB_UX500_DMA
	bool
	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
	default USB_MUSB_UX500
	bool 'ST Ericsson U8500 and U5500'
	depends on USB_MUSB_HDRC
	depends on USB_MUSB_UX500
	help
	  Enable DMA transfers on UX500 platforms.

config USB_INVENTRA_DMA
	bool
	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
	default USB_MUSB_OMAP2PLUS || USB_MUSB_BLACKFIN
	bool 'Inventra'
	depends on USB_MUSB_HDRC
	depends on USB_MUSB_OMAP2PLUS || USB_MUSB_BLACKFIN
	help
	  Enable DMA transfers using Mentor's engine.

config USB_TI_CPPI_DMA
	bool
	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
	default USB_MUSB_DAVINCI
	bool 'TI CPPI (Davinci)'
	depends on USB_MUSB_HDRC
	depends on USB_MUSB_DAVINCI
	help
	  Enable DMA transfers when TI CPPI DMA is available.

config USB_TUSB_OMAP_DMA
	bool
	depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
	bool 'TUSB 6010'
	depends on USB_MUSB_HDRC
	depends on USB_MUSB_TUSB6010
	depends on ARCH_OMAP
	default y
	help
	  Enable DMA transfers on TUSB 6010 when OMAP DMA is available.

config MUSB_PIO_ONLY
	bool 'Disable DMA (always use PIO)'
	depends on USB_MUSB_HDRC
	help
	  All data is copied between memory and FIFO by the CPU.
	  DMA controllers are ignored.

	  Do not choose this unless DMA support for your SOC or board
	  is unavailable (or unstable).  When DMA is enabled at compile time,
	  you can still disable it at run time using the "use_dma=n" module
	  parameter.

endchoice
+4 −22
Original line number Diff line number Diff line
@@ -24,25 +24,7 @@ obj-$(CONFIG_USB_MUSB_UX500) += ux500.o
# PIO only, or DMA (several potential schemes).
# though PIO is always there to back up DMA, and for ep0

ifneq ($(CONFIG_MUSB_PIO_ONLY),y)

  ifeq ($(CONFIG_USB_INVENTRA_DMA),y)
    musb_hdrc-y			+= musbhsdma.o

  else
    ifeq ($(CONFIG_USB_TI_CPPI_DMA),y)
      musb_hdrc-y		+= cppi_dma.o

    else
      ifeq ($(CONFIG_USB_TUSB_OMAP_DMA),y)
	musb_hdrc-y		+= tusb6010_omap.o

      else
        ifeq ($(CONFIG_USB_UX500_DMA),y)
	  musb_hdrc-y		+= ux500_dma.o

        endif
      endif
    endif
  endif
endif
musb_hdrc-$(CONFIG_USB_INVENTRA_DMA)		+= musbhsdma.o
musb_hdrc-$(CONFIG_USB_TI_CPPI_DMA)		+= cppi_dma.o
musb_hdrc-$(CONFIG_USB_TUSB_OMAP_DMA)		+= tusb6010_omap.o
musb_hdrc-$(CONFIG_USB_UX500_DMA)		+= ux500_dma.o