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