mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Tony Lindgren <tony@atomide.com>
Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
	Felipe Balbi <balbi@ti.com>
Subject: [PATCH 15/30] usb/musb: use a Kconfig choice to pick the right DMA method
Date: Sun,  2 Oct 2011 16:45:45 +0200	[thread overview]
Message-ID: <1317566760-25681-16-git-send-email-arnd@arndb.de> (raw)
In-Reply-To: <1317566760-25681-1-git-send-email-arnd@arndb.de>

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: Arnd Bergmann <arnd@arndb.de>
Cc: Felipe Balbi <balbi@ti.com>
---
 drivers/usb/musb/Kconfig  |   57 ++++++++++++++++++++++++++------------------
 drivers/usb/musb/Makefile |   26 +++-----------------
 2 files changed, 38 insertions(+), 45 deletions(-)

diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
index fc34b8b..d596fb2 100644
--- a/drivers/usb/musb/Kconfig
+++ b/drivers/usb/musb/Kconfig
@@ -64,46 +64,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
diff --git a/drivers/usb/musb/Makefile b/drivers/usb/musb/Makefile
index d8fd9d0..88bfb9d 100644
--- a/drivers/usb/musb/Makefile
+++ b/drivers/usb/musb/Makefile
@@ -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
-- 
1.7.5.4


  parent reply	other threads:[~2011-10-02 14:50 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-02 14:45 [PATCH 00/30] ARM/omap: omap specific randconfig fixes Arnd Bergmann
2011-10-02 14:45 ` [PATCH 01/30] sound/omap: omap_mcpdm_remove cannot be __devexit Arnd Bergmann
2011-10-02 19:24   ` Mark Brown
2011-10-02 14:45 ` [PATCH 02/30] video/omap: fix dependencies Arnd Bergmann
2011-10-03  6:53   ` Tomi Valkeinen
2011-10-03  9:51     ` Arnd Bergmann
2011-10-02 14:45 ` [PATCH 03/30] video/omap: fix build dependencies Arnd Bergmann
2011-10-03  6:59   ` Tomi Valkeinen
2011-10-03  9:51     ` Arnd Bergmann
2011-10-02 14:45 ` [PATCH 04/30] ARM: omap: add missing __devexit_p() annotations Arnd Bergmann
2011-10-02 15:56   ` Bjarne Steinsbo
2011-10-02 16:09     ` Russell King - ARM Linux
2011-10-03 17:46       ` Tony Lindgren
2011-10-03 17:48     ` Tony Lindgren
2011-10-03  4:59   ` Santosh Shilimkar
2011-10-02 14:45 ` [PATCH 05/30] ARM: omap: enable building omap2 without omap2420/2430 Arnd Bergmann
2011-10-03  5:07   ` Santosh Shilimkar
2011-10-03 17:53   ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 06/30] ARM: omap: fix build with CONFIG_I2C_OMAP disabled Arnd Bergmann
2011-10-03  5:06   ` Santosh Shilimkar
2011-10-02 14:45 ` [PATCH 07/30] ARM: omap: fix visibility of omap2_mbox_iva_priv Arnd Bergmann
2011-10-03  5:08   ` Santosh Shilimkar
2011-10-02 14:45 ` [PATCH 08/30] ARM: omap2+: fix building without i2c Arnd Bergmann
2011-10-03  1:31   ` Paul Walmsley
2011-10-03  9:49     ` Arnd Bergmann
2011-10-03 17:56       ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 09/30] ARM: omap2: export functions used by nand driver Arnd Bergmann
2011-10-03 17:56   ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 10/30] ARM: omap/iommu: always provide iommu debug code Arnd Bergmann
2011-10-02 16:34   ` Ohad Ben-Cohen
2011-10-02 18:01     ` Arnd Bergmann
2011-10-02 18:21       ` Ohad Ben-Cohen
2011-10-03 17:57   ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 11/30] ARM: omap2/n8x0: work around modular omap mmc Arnd Bergmann
2011-10-02 15:53   ` Russell King - ARM Linux
2011-10-02 18:54     ` Arnd Bergmann
2011-10-03 18:03       ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 12/30] ARM: omap4: always build omap_phy_internal Arnd Bergmann
2011-10-03 18:04   ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 13/30] ARM: omap2+: fix omap_hdq_init compilation Arnd Bergmann
2011-10-03  5:11   ` Santosh Shilimkar
2011-10-03 18:06     ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 14/30] ARM: omap2: irq.c is always needed Arnd Bergmann
2011-10-03  5:14   ` Santosh Shilimkar
2011-10-02 14:45 ` Arnd Bergmann [this message]
2011-10-02 16:14   ` [PATCH 15/30] usb/musb: use a Kconfig choice to pick the right DMA method Russell King - ARM Linux
2011-10-02 18:00     ` Arnd Bergmann
2011-10-02 18:56       ` Felipe Balbi
2011-10-02 19:44         ` Arnd Bergmann
2011-10-02 22:10           ` Felipe Balbi
2011-10-03  9:40             ` Arnd Bergmann
2011-10-03 10:07               ` Felipe Balbi
2011-10-10  6:10   ` Felipe Balbi
2011-10-02 14:45 ` [PATCH 16/30] usb/musb: HDRC depends on TWL4030_CORE for OMAP3/4 Arnd Bergmann
2011-10-02 18:59   ` Felipe Balbi
2011-10-02 14:45 ` [PATCH 17/30] usb/musb: allow building USB_MUSB_TUSB6010 as a module Arnd Bergmann
2011-10-03 18:14   ` Tony Lindgren
2011-10-10  6:10   ` Felipe Balbi
2011-10-02 14:45 ` [PATCH 18/30] omap-usb: automatically select MFD_OMAP_USB_HOST Arnd Bergmann
2011-10-04 11:00   ` Samuel Ortiz
2011-10-02 14:45 ` [PATCH 19/30] tty/serial/omap: console can only be built-in Arnd Bergmann
2011-10-03  4:53   ` Govindraj
2011-10-02 14:45 ` [PATCH 20/30] media/omap_vout: disable driver for now Arnd Bergmann
2011-10-03  6:09   ` Archit Taneja
2011-10-03  9:16     ` Arnd Bergmann
2011-10-02 14:45 ` [PATCH 21/30] sound/soc/omap: limit to omap2plus Arnd Bergmann
2011-10-02 17:40   ` Jarkko Nikula
2011-10-02 18:03     ` Arnd Bergmann
2011-10-02 18:24       ` Jarkko Nikula
2011-10-02 18:30         ` Arnd Bergmann
2011-10-02 19:18   ` Mark Brown
2011-10-02 14:45 ` [PATCH 22/30] mfd: build twl6030 only on omap2 Arnd Bergmann
2011-10-04 10:47   ` Samuel Ortiz
2011-10-04 14:47     ` Arnd Bergmann
2011-10-02 14:45 ` [PATCH 23/30] ARM: omap2: select twl4030 support on boards that need it Arnd Bergmann
2011-10-03  5:19   ` Santosh Shilimkar
2011-10-03 11:03     ` Arnd Bergmann
2011-10-03 18:18   ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 24/30] ARM: omap2+: ensure that one of omap2/3/4 is selected Arnd Bergmann
2011-10-03  5:20   ` Santosh Shilimkar
2011-10-03 18:21     ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 25/30] ARM: OMAP depends on MMU Arnd Bergmann
2011-10-03  5:21   ` Santosh Shilimkar
2011-10-03 18:22     ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 26/30] ARM: omap: add board autoselection Arnd Bergmann
2011-10-03  5:28   ` Santosh Shilimkar
2011-10-03  9:11     ` Arnd Bergmann
2011-10-03  9:19       ` Santosh Shilimkar
2011-10-03  9:27       ` Cousson, Benoit
2011-10-03  9:54         ` Arnd Bergmann
2011-10-03 18:26           ` Tony Lindgren
2011-10-04  7:44             ` Arnd Bergmann
2011-10-04 15:57               ` Tony Lindgren
2011-10-04 19:29                 ` Arnd Bergmann
2011-10-05  1:05                   ` [GIT PULL] initial omap DT support for v3.2 merge window (Re: [PATCH 26/30] ARM: omap: add board autoselection) Tony Lindgren
2011-10-14 16:02                     ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 27/30] ARM: omap: select L2X0 cache on omap4 Arnd Bergmann
2011-10-03  5:29   ` Santosh Shilimkar
2011-10-03 18:27     ` Tony Lindgren
2011-10-02 14:45 ` [PATCH 28/30] ARM: omap: select CPU_FREQ_TABLE where needed Arnd Bergmann
2011-10-03  5:39   ` Santosh Shilimkar
2011-10-03  9:15     ` Arnd Bergmann
2011-10-03  9:33       ` Santosh Shilimkar
2011-10-02 14:45 ` [PATCH 29/30] ARM: omap: select USB_ARCH_HAS_EHCI only when USB is enabled Arnd Bergmann
2011-10-03 18:27   ` Tony Lindgren
2011-10-02 14:46 ` [PATCH 30/30] ARM: omap2: select ARM_AMBA for OMAP3_EMU Arnd Bergmann
2011-10-03  5:31   ` Santosh Shilimkar
2011-10-03 18:28     ` Tony Lindgren
2011-10-03  5:05 ` [PATCH 00/30] ARM/omap: omap specific randconfig fixes Santosh Shilimkar
2011-10-03  9:22   ` Arnd Bergmann
2011-10-03  9:42     ` Santosh Shilimkar
2011-10-03 18:29       ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1317566760-25681-16-git-send-email-arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=balbi@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®