xref: /OK3568_Linux_fs/kernel/drivers/usb/musb/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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