1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# USB Dual Role (OTG-ready) Controller Drivers 4*4882a593Smuzhiyun# for silicon based on Mentor Graphics INVENTRA designs 5*4882a593Smuzhiyun# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# (M)HDRC = (Multipoint) Highspeed Dual-Role Controller 8*4882a593Smuzhiyunconfig USB_MUSB_HDRC 9*4882a593Smuzhiyun tristate 'Inventra Highspeed Dual Role Controller' 10*4882a593Smuzhiyun depends on (USB || USB_GADGET) 11*4882a593Smuzhiyun depends on HAS_IOMEM 12*4882a593Smuzhiyun help 13*4882a593Smuzhiyun Say Y here if your system has a dual role high speed USB 14*4882a593Smuzhiyun controller based on the Mentor Graphics silicon IP. Then 15*4882a593Smuzhiyun configure options to match your silicon and the board 16*4882a593Smuzhiyun it's being used with, including the USB peripheral role, 17*4882a593Smuzhiyun or the USB host role, or both. 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun Texas Instruments families using this IP include DaVinci 20*4882a593Smuzhiyun (35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010. 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun Allwinner SoCs using this IP include A10, A13, A20, ... 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun If you do not know what this is, please say N. 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun To compile this driver as a module, choose M here; the 27*4882a593Smuzhiyun module will be called "musb-hdrc". 28*4882a593Smuzhiyun 29*4882a593Smuzhiyunif USB_MUSB_HDRC 30*4882a593Smuzhiyun 31*4882a593Smuzhiyunchoice 32*4882a593Smuzhiyun bool "MUSB Mode Selection" 33*4882a593Smuzhiyun default USB_MUSB_DUAL_ROLE if (USB && USB_GADGET) 34*4882a593Smuzhiyun default USB_MUSB_HOST if (USB && !USB_GADGET) 35*4882a593Smuzhiyun default USB_MUSB_GADGET if (!USB && USB_GADGET) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyunconfig USB_MUSB_HOST 38*4882a593Smuzhiyun bool "Host only mode" 39*4882a593Smuzhiyun depends on USB=y || USB=USB_MUSB_HDRC 40*4882a593Smuzhiyun help 41*4882a593Smuzhiyun Select this when you want to use MUSB in host mode only, 42*4882a593Smuzhiyun thereby the gadget feature will be regressed. 43*4882a593Smuzhiyun 44*4882a593Smuzhiyunconfig USB_MUSB_GADGET 45*4882a593Smuzhiyun bool "Gadget only mode" 46*4882a593Smuzhiyun depends on USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC 47*4882a593Smuzhiyun depends on HAS_DMA 48*4882a593Smuzhiyun help 49*4882a593Smuzhiyun Select this when you want to use MUSB in gadget mode only, 50*4882a593Smuzhiyun thereby the host feature will be regressed. 51*4882a593Smuzhiyun 52*4882a593Smuzhiyunconfig USB_MUSB_DUAL_ROLE 53*4882a593Smuzhiyun bool "Dual Role mode" 54*4882a593Smuzhiyun depends on ((USB=y || USB=USB_MUSB_HDRC) && (USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC)) 55*4882a593Smuzhiyun depends on HAS_DMA 56*4882a593Smuzhiyun help 57*4882a593Smuzhiyun This is the default mode of working of MUSB controller where 58*4882a593Smuzhiyun both host and gadget features are enabled. 59*4882a593Smuzhiyun 60*4882a593Smuzhiyunendchoice 61*4882a593Smuzhiyun 62*4882a593Smuzhiyuncomment "Platform Glue Layer" 63*4882a593Smuzhiyun 64*4882a593Smuzhiyunconfig USB_MUSB_SUNXI 65*4882a593Smuzhiyun tristate "Allwinner (sunxi)" 66*4882a593Smuzhiyun depends on ARCH_SUNXI 67*4882a593Smuzhiyun depends on NOP_USB_XCEIV 68*4882a593Smuzhiyun depends on PHY_SUN4I_USB 69*4882a593Smuzhiyun depends on EXTCON 70*4882a593Smuzhiyun select GENERIC_PHY 71*4882a593Smuzhiyun select SUNXI_SRAM 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunconfig USB_MUSB_DAVINCI 74*4882a593Smuzhiyun tristate "DaVinci" 75*4882a593Smuzhiyun depends on ARCH_DAVINCI_DMx 76*4882a593Smuzhiyun depends on NOP_USB_XCEIV 77*4882a593Smuzhiyun depends on BROKEN 78*4882a593Smuzhiyun 79*4882a593Smuzhiyunconfig USB_MUSB_DA8XX 80*4882a593Smuzhiyun tristate "DA8xx/OMAP-L1x" 81*4882a593Smuzhiyun depends on ARCH_DAVINCI_DA8XX 82*4882a593Smuzhiyun depends on NOP_USB_XCEIV 83*4882a593Smuzhiyun select PHY_DA8XX_USB 84*4882a593Smuzhiyun 85*4882a593Smuzhiyunconfig USB_MUSB_TUSB6010 86*4882a593Smuzhiyun tristate "TUSB6010" 87*4882a593Smuzhiyun depends on HAS_IOMEM 88*4882a593Smuzhiyun depends on ARCH_OMAP2PLUS || COMPILE_TEST 89*4882a593Smuzhiyun depends on NOP_USB_XCEIV = USB_MUSB_HDRC # both built-in or both modules 90*4882a593Smuzhiyun 91*4882a593Smuzhiyunconfig USB_MUSB_OMAP2PLUS 92*4882a593Smuzhiyun tristate "OMAP2430 and onwards" 93*4882a593Smuzhiyun depends on ARCH_OMAP2PLUS && USB 94*4882a593Smuzhiyun depends on OMAP_CONTROL_PHY || !OMAP_CONTROL_PHY 95*4882a593Smuzhiyun select GENERIC_PHY 96*4882a593Smuzhiyun 97*4882a593Smuzhiyunconfig USB_MUSB_AM35X 98*4882a593Smuzhiyun tristate "AM35x" 99*4882a593Smuzhiyun depends on ARCH_OMAP 100*4882a593Smuzhiyun depends on NOP_USB_XCEIV 101*4882a593Smuzhiyun 102*4882a593Smuzhiyunconfig USB_MUSB_DSPS 103*4882a593Smuzhiyun tristate "TI DSPS platforms" 104*4882a593Smuzhiyun depends on ARCH_OMAP2PLUS || COMPILE_TEST 105*4882a593Smuzhiyun depends on OF_IRQ 106*4882a593Smuzhiyun 107*4882a593Smuzhiyunconfig USB_MUSB_UX500 108*4882a593Smuzhiyun tristate "Ux500 platforms" 109*4882a593Smuzhiyun depends on ARCH_U8500 || COMPILE_TEST 110*4882a593Smuzhiyun 111*4882a593Smuzhiyunconfig USB_MUSB_JZ4740 112*4882a593Smuzhiyun tristate "JZ4740" 113*4882a593Smuzhiyun depends on OF 114*4882a593Smuzhiyun depends on MIPS || COMPILE_TEST 115*4882a593Smuzhiyun depends on USB_MUSB_GADGET 116*4882a593Smuzhiyun depends on USB=n || USB_OTG_DISABLE_EXTERNAL_HUB 117*4882a593Smuzhiyun select USB_ROLE_SWITCH 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunconfig USB_MUSB_MEDIATEK 120*4882a593Smuzhiyun tristate "MediaTek platforms" 121*4882a593Smuzhiyun depends on ARCH_MEDIATEK || COMPILE_TEST 122*4882a593Smuzhiyun depends on NOP_USB_XCEIV 123*4882a593Smuzhiyun select GENERIC_PHY 124*4882a593Smuzhiyun select USB_ROLE_SWITCH 125*4882a593Smuzhiyun 126*4882a593Smuzhiyuncomment "MUSB DMA mode" 127*4882a593Smuzhiyun 128*4882a593Smuzhiyunconfig MUSB_PIO_ONLY 129*4882a593Smuzhiyun bool 'Disable DMA (always use PIO)' 130*4882a593Smuzhiyun help 131*4882a593Smuzhiyun All data is copied between memory and FIFO by the CPU. 132*4882a593Smuzhiyun DMA controllers are ignored. 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun Do not choose this unless DMA support for your SOC or board 135*4882a593Smuzhiyun is unavailable (or unstable). When DMA is enabled at compile time, 136*4882a593Smuzhiyun you can still disable it at run time using the "use_dma=n" module 137*4882a593Smuzhiyun parameter. 138*4882a593Smuzhiyun 139*4882a593Smuzhiyunif !MUSB_PIO_ONLY 140*4882a593Smuzhiyun 141*4882a593Smuzhiyunconfig USB_UX500_DMA 142*4882a593Smuzhiyun bool 'ST Ericsson Ux500' 143*4882a593Smuzhiyun depends on USB_MUSB_UX500 144*4882a593Smuzhiyun help 145*4882a593Smuzhiyun Enable DMA transfers on UX500 platforms. 146*4882a593Smuzhiyun 147*4882a593Smuzhiyunconfig USB_INVENTRA_DMA 148*4882a593Smuzhiyun bool 'Inventra' 149*4882a593Smuzhiyun depends on USB_MUSB_OMAP2PLUS || USB_MUSB_MEDIATEK || USB_MUSB_JZ4740 150*4882a593Smuzhiyun help 151*4882a593Smuzhiyun Enable DMA transfers using Mentor's engine. 152*4882a593Smuzhiyun 153*4882a593Smuzhiyunconfig USB_TI_CPPI_DMA 154*4882a593Smuzhiyun bool 'TI CPPI (Davinci)' 155*4882a593Smuzhiyun depends on USB_MUSB_DAVINCI 156*4882a593Smuzhiyun help 157*4882a593Smuzhiyun Enable DMA transfers when TI CPPI DMA is available. 158*4882a593Smuzhiyun 159*4882a593Smuzhiyunconfig USB_TI_CPPI41_DMA 160*4882a593Smuzhiyun bool 'TI CPPI 4.1' 161*4882a593Smuzhiyun depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX) && DMADEVICES 162*4882a593Smuzhiyun select TI_CPPI41 163*4882a593Smuzhiyun 164*4882a593Smuzhiyunconfig USB_TUSB_OMAP_DMA 165*4882a593Smuzhiyun bool 'TUSB 6010' 166*4882a593Smuzhiyun depends on USB_MUSB_TUSB6010 = USB_MUSB_HDRC # both built-in or both modules 167*4882a593Smuzhiyun depends on ARCH_OMAP 168*4882a593Smuzhiyun help 169*4882a593Smuzhiyun Enable DMA transfers on TUSB 6010 when OMAP DMA is available. 170*4882a593Smuzhiyun 171*4882a593Smuzhiyunendif # !MUSB_PIO_ONLY 172*4882a593Smuzhiyun 173*4882a593Smuzhiyunendif # USB_MUSB_HDRC 174