162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# USB Dual Role (OTG-ready) Controller Drivers
462306a36Sopenharmony_ci# for silicon based on Mentor Graphics INVENTRA designs
562306a36Sopenharmony_ci#
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci# (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
862306a36Sopenharmony_ciconfig USB_MUSB_HDRC
962306a36Sopenharmony_ci	tristate 'Inventra Highspeed Dual Role Controller'
1062306a36Sopenharmony_ci	depends on (USB || USB_GADGET)
1162306a36Sopenharmony_ci	depends on HAS_IOMEM
1262306a36Sopenharmony_ci	help
1362306a36Sopenharmony_ci	  Say Y here if your system has a dual role high speed USB
1462306a36Sopenharmony_ci	  controller based on the Mentor Graphics silicon IP.  Then
1562306a36Sopenharmony_ci	  configure options to match your silicon and the board
1662306a36Sopenharmony_ci	  it's being used with, including the USB peripheral role,
1762306a36Sopenharmony_ci	  or the USB host role, or both.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	  Texas Instruments families using this IP include DaVinci
2062306a36Sopenharmony_ci	  (35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	  Allwinner SoCs using this IP include A10, A13, A20, ...
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	  If you do not know what this is, please say N.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	  To compile this driver as a module, choose M here; the
2762306a36Sopenharmony_ci	  module will be called "musb-hdrc".
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciif USB_MUSB_HDRC
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cichoice
3262306a36Sopenharmony_ci	bool "MUSB Mode Selection"
3362306a36Sopenharmony_ci	default USB_MUSB_DUAL_ROLE if (USB && USB_GADGET)
3462306a36Sopenharmony_ci	default USB_MUSB_HOST if (USB && !USB_GADGET)
3562306a36Sopenharmony_ci	default USB_MUSB_GADGET if (!USB && USB_GADGET)
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciconfig USB_MUSB_HOST
3862306a36Sopenharmony_ci	bool "Host only mode"
3962306a36Sopenharmony_ci	depends on USB=y || USB=USB_MUSB_HDRC
4062306a36Sopenharmony_ci	help
4162306a36Sopenharmony_ci	  Select this when you want to use MUSB in host mode only,
4262306a36Sopenharmony_ci	  thereby the gadget feature will be regressed.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciconfig USB_MUSB_GADGET
4562306a36Sopenharmony_ci	bool "Gadget only mode"
4662306a36Sopenharmony_ci	depends on USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC
4762306a36Sopenharmony_ci	depends on HAS_DMA
4862306a36Sopenharmony_ci	help
4962306a36Sopenharmony_ci	  Select this when you want to use MUSB in gadget mode only,
5062306a36Sopenharmony_ci	  thereby the host feature will be regressed.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ciconfig USB_MUSB_DUAL_ROLE
5362306a36Sopenharmony_ci	bool "Dual Role mode"
5462306a36Sopenharmony_ci	depends on ((USB=y || USB=USB_MUSB_HDRC) && (USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC))
5562306a36Sopenharmony_ci	depends on HAS_DMA
5662306a36Sopenharmony_ci	help
5762306a36Sopenharmony_ci	  This is the default mode of working of MUSB controller where
5862306a36Sopenharmony_ci	  both host and gadget features are enabled.
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciendchoice
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cicomment "Platform Glue Layer"
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig USB_MUSB_SUNXI
6562306a36Sopenharmony_ci	tristate "Allwinner (sunxi)"
6662306a36Sopenharmony_ci	depends on ARCH_SUNXI
6762306a36Sopenharmony_ci	depends on NOP_USB_XCEIV
6862306a36Sopenharmony_ci	depends on PHY_SUN4I_USB
6962306a36Sopenharmony_ci	depends on EXTCON
7062306a36Sopenharmony_ci	select GENERIC_PHY
7162306a36Sopenharmony_ci	select SUNXI_SRAM
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig USB_MUSB_DA8XX
7462306a36Sopenharmony_ci	tristate "DA8xx/OMAP-L1x"
7562306a36Sopenharmony_ci	depends on ARCH_DAVINCI_DA8XX
7662306a36Sopenharmony_ci	depends on NOP_USB_XCEIV
7762306a36Sopenharmony_ci	select PHY_DA8XX_USB
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciconfig USB_MUSB_TUSB6010
8062306a36Sopenharmony_ci	tristate "TUSB6010"
8162306a36Sopenharmony_ci	depends on HAS_IOMEM
8262306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS || COMPILE_TEST
8362306a36Sopenharmony_ci	depends on NOP_USB_XCEIV!=m || USB_MUSB_HDRC=m
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciconfig USB_MUSB_OMAP2PLUS
8662306a36Sopenharmony_ci	tristate "OMAP2430 and onwards"
8762306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS && USB
8862306a36Sopenharmony_ci	depends on OMAP_CONTROL_PHY || !OMAP_CONTROL_PHY
8962306a36Sopenharmony_ci	select GENERIC_PHY
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciconfig USB_MUSB_DSPS
9262306a36Sopenharmony_ci	tristate "TI DSPS platforms"
9362306a36Sopenharmony_ci	depends on ARCH_OMAP2PLUS || COMPILE_TEST
9462306a36Sopenharmony_ci	depends on OF_IRQ
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciconfig USB_MUSB_UX500
9762306a36Sopenharmony_ci	tristate "Ux500 platforms"
9862306a36Sopenharmony_ci	depends on ARCH_U8500 || COMPILE_TEST
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciconfig USB_MUSB_JZ4740
10162306a36Sopenharmony_ci	tristate "JZ4740"
10262306a36Sopenharmony_ci	depends on OF
10362306a36Sopenharmony_ci	depends on MIPS || COMPILE_TEST
10462306a36Sopenharmony_ci	depends on USB_MUSB_GADGET
10562306a36Sopenharmony_ci	select USB_ROLE_SWITCH
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciconfig USB_MUSB_MEDIATEK
10862306a36Sopenharmony_ci	tristate "MediaTek platforms"
10962306a36Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
11062306a36Sopenharmony_ci	depends on NOP_USB_XCEIV
11162306a36Sopenharmony_ci	select GENERIC_PHY
11262306a36Sopenharmony_ci	select USB_ROLE_SWITCH
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciconfig USB_MUSB_POLARFIRE_SOC
11562306a36Sopenharmony_ci	tristate "Microchip PolarFire SoC platforms"
11662306a36Sopenharmony_ci	depends on ARCH_MICROCHIP_POLARFIRE || COMPILE_TEST
11762306a36Sopenharmony_ci	depends on NOP_USB_XCEIV
11862306a36Sopenharmony_ci	select USB_MUSB_DUAL_ROLE
11962306a36Sopenharmony_ci	help
12062306a36Sopenharmony_ci	  Say Y here to enable support for USB on Microchip's PolarFire SoC.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	  This support is also available as a module.  If so, the module
12362306a36Sopenharmony_ci	  will be called mpfs.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_cicomment "MUSB DMA mode"
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciconfig MUSB_PIO_ONLY
12862306a36Sopenharmony_ci	bool 'Disable DMA (always use PIO)'
12962306a36Sopenharmony_ci	help
13062306a36Sopenharmony_ci	  All data is copied between memory and FIFO by the CPU.
13162306a36Sopenharmony_ci	  DMA controllers are ignored.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci	  Do not choose this unless DMA support for your SOC or board
13462306a36Sopenharmony_ci	  is unavailable (or unstable).  When DMA is enabled at compile time,
13562306a36Sopenharmony_ci	  you can still disable it at run time using the "use_dma=n" module
13662306a36Sopenharmony_ci	  parameter.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciif !MUSB_PIO_ONLY
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciconfig USB_UX500_DMA
14162306a36Sopenharmony_ci	bool 'ST Ericsson Ux500'
14262306a36Sopenharmony_ci	depends on USB_MUSB_UX500
14362306a36Sopenharmony_ci	help
14462306a36Sopenharmony_ci	  Enable DMA transfers on UX500 platforms.
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciconfig USB_INVENTRA_DMA
14762306a36Sopenharmony_ci	bool 'Inventra'
14862306a36Sopenharmony_ci	depends on USB_MUSB_OMAP2PLUS || USB_MUSB_MEDIATEK || USB_MUSB_JZ4740 || USB_MUSB_POLARFIRE_SOC
14962306a36Sopenharmony_ci	help
15062306a36Sopenharmony_ci	  Enable DMA transfers using Mentor's engine.
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ciconfig USB_TI_CPPI41_DMA
15362306a36Sopenharmony_ci	bool 'TI CPPI 4.1'
15462306a36Sopenharmony_ci	depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX) && DMADEVICES
15562306a36Sopenharmony_ci	select TI_CPPI41
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ciconfig USB_TUSB_OMAP_DMA
15862306a36Sopenharmony_ci	bool 'TUSB 6010'
15962306a36Sopenharmony_ci	depends on USB_MUSB_TUSB6010 = USB_MUSB_HDRC # both built-in or both modules
16062306a36Sopenharmony_ci	depends on ARCH_OMAP
16162306a36Sopenharmony_ci	help
16262306a36Sopenharmony_ci	  Enable DMA transfers on TUSB 6010 when OMAP DMA is available.
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ciendif # !MUSB_PIO_ONLY
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciendif # USB_MUSB_HDRC
167