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