0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # USB Dual Role (OTG-ready) Controller Drivers
0004 # for silicon based on Mentor Graphics INVENTRA designs
0005 #
0006
0007 # (M)HDRC = (Multipoint) Highspeed Dual-Role Controller
0008 config USB_MUSB_HDRC
0009 tristate 'Inventra Highspeed Dual Role Controller'
0010 depends on (USB || USB_GADGET)
0011 depends on HAS_IOMEM
0012 help
0013 Say Y here if your system has a dual role high speed USB
0014 controller based on the Mentor Graphics silicon IP. Then
0015 configure options to match your silicon and the board
0016 it's being used with, including the USB peripheral role,
0017 or the USB host role, or both.
0018
0019 Texas Instruments families using this IP include DaVinci
0020 (35x, 644x ...), OMAP 243x, OMAP 3, and TUSB 6010.
0021
0022 Allwinner SoCs using this IP include A10, A13, A20, ...
0023
0024 If you do not know what this is, please say N.
0025
0026 To compile this driver as a module, choose M here; the
0027 module will be called "musb-hdrc".
0028
0029 if USB_MUSB_HDRC
0030
0031 choice
0032 bool "MUSB Mode Selection"
0033 default USB_MUSB_DUAL_ROLE if (USB && USB_GADGET)
0034 default USB_MUSB_HOST if (USB && !USB_GADGET)
0035 default USB_MUSB_GADGET if (!USB && USB_GADGET)
0036
0037 config USB_MUSB_HOST
0038 bool "Host only mode"
0039 depends on USB=y || USB=USB_MUSB_HDRC
0040 help
0041 Select this when you want to use MUSB in host mode only,
0042 thereby the gadget feature will be regressed.
0043
0044 config USB_MUSB_GADGET
0045 bool "Gadget only mode"
0046 depends on USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC
0047 depends on HAS_DMA
0048 help
0049 Select this when you want to use MUSB in gadget mode only,
0050 thereby the host feature will be regressed.
0051
0052 config USB_MUSB_DUAL_ROLE
0053 bool "Dual Role mode"
0054 depends on ((USB=y || USB=USB_MUSB_HDRC) && (USB_GADGET=y || USB_GADGET=USB_MUSB_HDRC))
0055 depends on HAS_DMA
0056 help
0057 This is the default mode of working of MUSB controller where
0058 both host and gadget features are enabled.
0059
0060 endchoice
0061
0062 comment "Platform Glue Layer"
0063
0064 config USB_MUSB_SUNXI
0065 tristate "Allwinner (sunxi)"
0066 depends on ARCH_SUNXI
0067 depends on NOP_USB_XCEIV
0068 depends on PHY_SUN4I_USB
0069 depends on EXTCON
0070 select GENERIC_PHY
0071 select SUNXI_SRAM
0072
0073 config USB_MUSB_DAVINCI
0074 tristate "DaVinci"
0075 depends on ARCH_DAVINCI_DMx
0076 depends on NOP_USB_XCEIV
0077 depends on BROKEN
0078
0079 config USB_MUSB_DA8XX
0080 tristate "DA8xx/OMAP-L1x"
0081 depends on ARCH_DAVINCI_DA8XX
0082 depends on NOP_USB_XCEIV
0083 select PHY_DA8XX_USB
0084
0085 config USB_MUSB_TUSB6010
0086 tristate "TUSB6010"
0087 depends on HAS_IOMEM
0088 depends on ARCH_OMAP2PLUS || COMPILE_TEST
0089 depends on NOP_USB_XCEIV!=m || USB_MUSB_HDRC=m
0090
0091 config USB_MUSB_OMAP2PLUS
0092 tristate "OMAP2430 and onwards"
0093 depends on ARCH_OMAP2PLUS && USB
0094 depends on OMAP_CONTROL_PHY || !OMAP_CONTROL_PHY
0095 select GENERIC_PHY
0096
0097 config USB_MUSB_AM35X
0098 tristate "AM35x"
0099 depends on ARCH_OMAP
0100 depends on NOP_USB_XCEIV
0101
0102 config USB_MUSB_DSPS
0103 tristate "TI DSPS platforms"
0104 depends on ARCH_OMAP2PLUS || COMPILE_TEST
0105 depends on OF_IRQ
0106
0107 config USB_MUSB_UX500
0108 tristate "Ux500 platforms"
0109 depends on ARCH_U8500 || COMPILE_TEST
0110
0111 config USB_MUSB_JZ4740
0112 tristate "JZ4740"
0113 depends on OF
0114 depends on MIPS || COMPILE_TEST
0115 depends on USB_MUSB_GADGET
0116 depends on USB=n || USB_OTG_DISABLE_EXTERNAL_HUB
0117 select USB_ROLE_SWITCH
0118
0119 config USB_MUSB_MEDIATEK
0120 tristate "MediaTek platforms"
0121 depends on ARCH_MEDIATEK || COMPILE_TEST
0122 depends on NOP_USB_XCEIV
0123 select GENERIC_PHY
0124 select USB_ROLE_SWITCH
0125
0126 config USB_MUSB_POLARFIRE_SOC
0127 tristate "Microchip PolarFire SoC platforms"
0128 depends on SOC_MICROCHIP_POLARFIRE || COMPILE_TEST
0129 depends on NOP_USB_XCEIV
0130 select USB_MUSB_DUAL_ROLE
0131 help
0132 Say Y here to enable support for USB on Microchip's PolarFire SoC.
0133
0134 This support is also available as a module. If so, the module
0135 will be called mpfs.
0136
0137 comment "MUSB DMA mode"
0138
0139 config MUSB_PIO_ONLY
0140 bool 'Disable DMA (always use PIO)'
0141 help
0142 All data is copied between memory and FIFO by the CPU.
0143 DMA controllers are ignored.
0144
0145 Do not choose this unless DMA support for your SOC or board
0146 is unavailable (or unstable). When DMA is enabled at compile time,
0147 you can still disable it at run time using the "use_dma=n" module
0148 parameter.
0149
0150 if !MUSB_PIO_ONLY
0151
0152 config USB_UX500_DMA
0153 bool 'ST Ericsson Ux500'
0154 depends on USB_MUSB_UX500
0155 help
0156 Enable DMA transfers on UX500 platforms.
0157
0158 config USB_INVENTRA_DMA
0159 bool 'Inventra'
0160 depends on USB_MUSB_OMAP2PLUS || USB_MUSB_MEDIATEK || USB_MUSB_JZ4740 || USB_MUSB_POLARFIRE_SOC
0161 help
0162 Enable DMA transfers using Mentor's engine.
0163
0164 config USB_TI_CPPI_DMA
0165 bool 'TI CPPI (Davinci)'
0166 depends on USB_MUSB_DAVINCI
0167 help
0168 Enable DMA transfers when TI CPPI DMA is available.
0169
0170 config USB_TI_CPPI41_DMA
0171 bool 'TI CPPI 4.1'
0172 depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX) && DMADEVICES
0173 select TI_CPPI41
0174
0175 config USB_TUSB_OMAP_DMA
0176 bool 'TUSB 6010'
0177 depends on USB_MUSB_TUSB6010 = USB_MUSB_HDRC # both built-in or both modules
0178 depends on ARCH_OMAP
0179 help
0180 Enable DMA transfers on TUSB 6010 when OMAP DMA is available.
0181
0182 endif # !MUSB_PIO_ONLY
0183
0184 endif # USB_MUSB_HDRC