Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: gadget: Gadget directory cleanup - group UDC drivers

The drivers/usb/gadget directory contains many files.
Files which are related can be distributed into separate directories.
This patch moves the UDC drivers into a separate directory.

Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>

authored by

Andrzej Pietrasiewicz and committed by
Felipe Balbi
90fccb52 8443f2d2

+420 -399
+1 -370
drivers/usb/gadget/Kconfig
··· 127 127 a module parameter as well. 128 128 If unsure, say 2. 129 129 130 - # 131 - # USB Peripheral Controller Support 132 - # 133 - # The order here is alphabetical, except that integrated controllers go 134 - # before discrete ones so they will be the initial/default value: 135 - # - integrated/SOC controllers first 136 - # - licensed IP used in both SOC and discrete versions 137 - # - discrete ones (including all PCI-only controllers) 138 - # - debug/dummy gadget+hcd is last. 139 - # 140 - menu "USB Peripheral Controller" 141 - 142 - # 143 - # Integrated controllers 144 - # 145 - 146 - config USB_AT91 147 - tristate "Atmel AT91 USB Device Port" 148 - depends on ARCH_AT91 149 - help 150 - Many Atmel AT91 processors (such as the AT91RM2000) have a 151 - full speed USB Device Port with support for five configurable 152 - endpoints (plus endpoint zero). 153 - 154 - Say "y" to link the driver statically, or "m" to build a 155 - dynamically linked module called "at91_udc" and force all 156 - gadget drivers to also be dynamically linked. 157 - 158 - config USB_LPC32XX 159 - tristate "LPC32XX USB Peripheral Controller" 160 - depends on ARCH_LPC32XX && I2C 161 - select USB_ISP1301 162 - help 163 - This option selects the USB device controller in the LPC32xx SoC. 164 - 165 - Say "y" to link the driver statically, or "m" to build a 166 - dynamically linked module called "lpc32xx_udc" and force all 167 - gadget drivers to also be dynamically linked. 168 - 169 - config USB_ATMEL_USBA 170 - tristate "Atmel USBA" 171 - depends on AVR32 || ARCH_AT91 172 - help 173 - USBA is the integrated high-speed USB Device controller on 174 - the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. 175 - 176 - config USB_BCM63XX_UDC 177 - tristate "Broadcom BCM63xx Peripheral Controller" 178 - depends on BCM63XX 179 - help 180 - Many Broadcom BCM63xx chipsets (such as the BCM6328) have a 181 - high speed USB Device Port with support for four fixed endpoints 182 - (plus endpoint zero). 183 - 184 - Say "y" to link the driver statically, or "m" to build a 185 - dynamically linked module called "bcm63xx_udc". 186 - 187 - config USB_FSL_USB2 188 - tristate "Freescale Highspeed USB DR Peripheral Controller" 189 - depends on FSL_SOC || ARCH_MXC 190 - select USB_FSL_MPH_DR_OF if OF 191 - help 192 - Some of Freescale PowerPC and i.MX processors have a High Speed 193 - Dual-Role(DR) USB controller, which supports device mode. 194 - 195 - The number of programmable endpoints is different through 196 - SOC revisions. 197 - 198 - Say "y" to link the driver statically, or "m" to build a 199 - dynamically linked module called "fsl_usb2_udc" and force 200 - all gadget drivers to also be dynamically linked. 201 - 202 - config USB_FUSB300 203 - tristate "Faraday FUSB300 USB Peripheral Controller" 204 - depends on !PHYS_ADDR_T_64BIT && HAS_DMA 205 - help 206 - Faraday usb device controller FUSB300 driver 207 - 208 - config USB_FOTG210_UDC 209 - depends on HAS_DMA 210 - tristate "Faraday FOTG210 USB Peripheral Controller" 211 - help 212 - Faraday USB2.0 OTG controller which can be configured as 213 - high speed or full speed USB device. This driver supppors 214 - Bulk Transfer so far. 215 - 216 - Say "y" to link the driver statically, or "m" to build a 217 - dynamically linked module called "fotg210_udc". 218 - 219 - config USB_GR_UDC 220 - tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver" 221 - depends on HAS_DMA 222 - help 223 - Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB 224 - VHDL IP core library. 225 - 226 - config USB_OMAP 227 - tristate "OMAP USB Device Controller" 228 - depends on ARCH_OMAP1 229 - depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3) 230 - help 231 - Many Texas Instruments OMAP processors have flexible full 232 - speed USB device controllers, with support for up to 30 233 - endpoints (plus endpoint zero). This driver supports the 234 - controller in the OMAP 1611, and should work with controllers 235 - in other OMAP processors too, given minor tweaks. 236 - 237 - Say "y" to link the driver statically, or "m" to build a 238 - dynamically linked module called "omap_udc" and force all 239 - gadget drivers to also be dynamically linked. 240 - 241 - config USB_PXA25X 242 - tristate "PXA 25x or IXP 4xx" 243 - depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 244 - help 245 - Intel's PXA 25x series XScale ARM-5TE processors include 246 - an integrated full speed USB 1.1 device controller. The 247 - controller in the IXP 4xx series is register-compatible. 248 - 249 - It has fifteen fixed-function endpoints, as well as endpoint 250 - zero (for control transfers). 251 - 252 - Say "y" to link the driver statically, or "m" to build a 253 - dynamically linked module called "pxa25x_udc" and force all 254 - gadget drivers to also be dynamically linked. 255 - 256 - # if there's only one gadget driver, using only two bulk endpoints, 257 - # don't waste memory for the other endpoints 258 - config USB_PXA25X_SMALL 259 - depends on USB_PXA25X 260 - bool 261 - default n if USB_ETH_RNDIS 262 - default y if USB_ZERO 263 - default y if USB_ETH 264 - default y if USB_G_SERIAL 265 - 266 - config USB_R8A66597 267 - tristate "Renesas R8A66597 USB Peripheral Controller" 268 - depends on HAS_DMA 269 - help 270 - R8A66597 is a discrete USB host and peripheral controller chip that 271 - supports both full and high speed USB 2.0 data transfers. 272 - It has nine configurable endpoints, and endpoint zero. 273 - 274 - Say "y" to link the driver statically, or "m" to build a 275 - dynamically linked module called "r8a66597_udc" and force all 276 - gadget drivers to also be dynamically linked. 277 - 278 - config USB_RENESAS_USBHS_UDC 279 - tristate 'Renesas USBHS controller' 280 - depends on USB_RENESAS_USBHS 281 - help 282 - Renesas USBHS is a discrete USB host and peripheral controller chip 283 - that supports both full and high speed USB 2.0 data transfers. 284 - It has nine or more configurable endpoints, and endpoint zero. 285 - 286 - Say "y" to link the driver statically, or "m" to build a 287 - dynamically linked module called "renesas_usbhs" and force all 288 - gadget drivers to also be dynamically linked. 289 - 290 - config USB_PXA27X 291 - tristate "PXA 27x" 292 - help 293 - Intel's PXA 27x series XScale ARM v5TE processors include 294 - an integrated full speed USB 1.1 device controller. 295 - 296 - It has up to 23 endpoints, as well as endpoint zero (for 297 - control transfers). 298 - 299 - Say "y" to link the driver statically, or "m" to build a 300 - dynamically linked module called "pxa27x_udc" and force all 301 - gadget drivers to also be dynamically linked. 302 - 303 - config USB_S3C2410 304 - tristate "S3C2410 USB Device Controller" 305 - depends on ARCH_S3C24XX 306 - help 307 - Samsung's S3C2410 is an ARM-4 processor with an integrated 308 - full speed USB 1.1 device controller. It has 4 configurable 309 - endpoints, as well as endpoint zero (for control transfers). 310 - 311 - This driver has been tested on the S3C2410, S3C2412, and 312 - S3C2440 processors. 313 - 314 - config USB_S3C2410_DEBUG 315 - boolean "S3C2410 udc debug messages" 316 - depends on USB_S3C2410 317 - 318 - config USB_S3C_HSUDC 319 - tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller" 320 - depends on ARCH_S3C24XX 321 - help 322 - Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC 323 - integrated with dual speed USB 2.0 device controller. It has 324 - 8 endpoints, as well as endpoint zero. 325 - 326 - This driver has been tested on S3C2416 and S3C2450 processors. 327 - 328 - config USB_MV_UDC 329 - tristate "Marvell USB2.0 Device Controller" 330 - depends on HAS_DMA 331 - help 332 - Marvell Socs (including PXA and MMP series) include a high speed 333 - USB2.0 OTG controller, which can be configured as high speed or 334 - full speed USB peripheral. 335 - 336 - config USB_MV_U3D 337 - depends on HAS_DMA 338 - tristate "MARVELL PXA2128 USB 3.0 controller" 339 - help 340 - MARVELL PXA2128 Processor series include a super speed USB3.0 device 341 - controller, which support super speed USB peripheral. 342 - 343 - # 344 - # Controllers available in both integrated and discrete versions 345 - # 346 - 347 - config USB_M66592 348 - tristate "Renesas M66592 USB Peripheral Controller" 349 - help 350 - M66592 is a discrete USB peripheral controller chip that 351 - supports both full and high speed USB 2.0 data transfers. 352 - It has seven configurable endpoints, and endpoint zero. 353 - 354 - Say "y" to link the driver statically, or "m" to build a 355 - dynamically linked module called "m66592_udc" and force all 356 - gadget drivers to also be dynamically linked. 357 - 358 - # 359 - # Controllers available only in discrete form (and all PCI controllers) 360 - # 361 - 362 - config USB_AMD5536UDC 363 - tristate "AMD5536 UDC" 364 - depends on PCI 365 - help 366 - The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 367 - It is a USB Highspeed DMA capable USB device controller. Beside ep0 368 - it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 369 - The UDC port supports OTG operation, and may be used as a host port 370 - if it's not being used to implement peripheral or OTG roles. 371 - 372 - Say "y" to link the driver statically, or "m" to build a 373 - dynamically linked module called "amd5536udc" and force all 374 - gadget drivers to also be dynamically linked. 375 - 376 - config USB_FSL_QE 377 - tristate "Freescale QE/CPM USB Device Controller" 378 - depends on FSL_SOC && (QUICC_ENGINE || CPM) 379 - help 380 - Some of Freescale PowerPC processors have a Full Speed 381 - QE/CPM2 USB controller, which support device mode with 4 382 - programmable endpoints. This driver supports the 383 - controller in the MPC8360 and MPC8272, and should work with 384 - controllers having QE or CPM2, given minor tweaks. 385 - 386 - Set CONFIG_USB_GADGET to "m" to build this driver as a 387 - dynamically linked module called "fsl_qe_udc". 388 - 389 - config USB_NET2272 390 - tristate "PLX NET2272" 391 - help 392 - PLX NET2272 is a USB peripheral controller which supports 393 - both full and high speed USB 2.0 data transfers. 394 - 395 - It has three configurable endpoints, as well as endpoint zero 396 - (for control transfer). 397 - Say "y" to link the driver statically, or "m" to build a 398 - dynamically linked module called "net2272" and force all 399 - gadget drivers to also be dynamically linked. 400 - 401 - config USB_NET2272_DMA 402 - boolean "Support external DMA controller" 403 - depends on USB_NET2272 && HAS_DMA 404 - help 405 - The NET2272 part can optionally support an external DMA 406 - controller, but your board has to have support in the 407 - driver itself. 408 - 409 - If unsure, say "N" here. The driver works fine in PIO mode. 410 - 411 - config USB_NET2280 412 - tristate "NetChip 228x / PLX USB338x" 413 - depends on PCI 414 - help 415 - NetChip 2280 / 2282 is a PCI based USB peripheral controller which 416 - supports both full and high speed USB 2.0 data transfers. 417 - 418 - It has six configurable endpoints, as well as endpoint zero 419 - (for control transfers) and several endpoints with dedicated 420 - functions. 421 - 422 - PLX 3380 / 3382 is a PCIe based USB peripheral controller which 423 - supports full, high speed USB 2.0 and super speed USB 3.0 424 - data transfers. 425 - 426 - It has eight configurable endpoints, as well as endpoint zero 427 - (for control transfers) and several endpoints with dedicated 428 - functions. 429 - 430 - Say "y" to link the driver statically, or "m" to build a 431 - dynamically linked module called "net2280" and force all 432 - gadget drivers to also be dynamically linked. 433 - 434 - config USB_GOKU 435 - tristate "Toshiba TC86C001 'Goku-S'" 436 - depends on PCI 437 - help 438 - The Toshiba TC86C001 is a PCI device which includes controllers 439 - for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 440 - 441 - The device controller has three configurable (bulk or interrupt) 442 - endpoints, plus endpoint zero (for control transfers). 443 - 444 - Say "y" to link the driver statically, or "m" to build a 445 - dynamically linked module called "goku_udc" and to force all 446 - gadget drivers to also be dynamically linked. 447 - 448 - config USB_EG20T 449 - tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" 450 - depends on PCI 451 - help 452 - This is a USB device driver for EG20T PCH. 453 - EG20T PCH is the platform controller hub that is used in Intel's 454 - general embedded platform. EG20T PCH has USB device interface. 455 - Using this interface, it is able to access system devices connected 456 - to USB device. 457 - This driver enables USB device function. 458 - USB device is a USB peripheral controller which 459 - supports both full and high speed USB 2.0 data transfers. 460 - This driver supports both control transfer and bulk transfer modes. 461 - This driver dose not support interrupt transfer or isochronous 462 - transfer modes. 463 - 464 - This driver also can be used for LAPIS Semiconductor's ML7213 which is 465 - for IVI(In-Vehicle Infotainment) use. 466 - ML7831 is for general purpose use. 467 - ML7213/ML7831 is companion chip for Intel Atom E6xx series. 468 - ML7213/ML7831 is completely compatible for Intel EG20T PCH. 469 - 470 - # 471 - # LAST -- dummy/emulated controller 472 - # 473 - 474 - config USB_DUMMY_HCD 475 - tristate "Dummy HCD (DEVELOPMENT)" 476 - depends on USB=y || (USB=m && USB_GADGET=m) 477 - help 478 - This host controller driver emulates USB, looping all data transfer 479 - requests back to a USB "gadget driver" in the same host. The host 480 - side is the master; the gadget side is the slave. Gadget drivers 481 - can be high, full, or low speed; and they have access to endpoints 482 - like those from NET2280, PXA2xx, or SA1100 hardware. 483 - 484 - This may help in some stages of creating a driver to embed in a 485 - Linux device, since it lets you debug several parts of the gadget 486 - driver without its hardware or drivers being involved. 487 - 488 - Since such a gadget side driver needs to interoperate with a host 489 - side Linux-USB device driver, this may help to debug both sides 490 - of a USB protocol stack. 491 - 492 - Say "y" to link the driver statically, or "m" to build a 493 - dynamically linked module called "dummy_hcd" and force all 494 - gadget drivers to also be dynamically linked. 495 - 496 - # NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 497 - # first and will be selected by default. 498 - 499 - endmenu 130 + source "drivers/usb/gadget/udc/Kconfig" 500 131 501 132 # 502 133 # USB Gadget Drivers
+2 -29
drivers/usb/gadget/Makefile
··· 3 3 # 4 4 subdir-ccflags-$(CONFIG_USB_GADGET_DEBUG) := -DDEBUG 5 5 subdir-ccflags-$(CONFIG_USB_GADGET_VERBOSE) += -DVERBOSE_DEBUG 6 + ccflags-y += -I$(PWD)/drivers/usb/gadget/udc 6 7 7 - obj-$(CONFIG_USB_GADGET) += udc-core.o 8 8 obj-$(CONFIG_USB_LIBCOMPOSITE) += libcomposite.o 9 9 libcomposite-y := usbstring.o config.o epautoconf.o 10 10 libcomposite-y += composite.o functions.o configfs.o u_f.o 11 - obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o 12 - obj-$(CONFIG_USB_NET2272) += net2272.o 13 - obj-$(CONFIG_USB_NET2280) += net2280.o 14 - obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o 15 - obj-$(CONFIG_USB_PXA25X) += pxa25x_udc.o 16 - obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o 17 - obj-$(CONFIG_USB_GOKU) += goku_udc.o 18 - obj-$(CONFIG_USB_OMAP) += omap_udc.o 19 - obj-$(CONFIG_USB_S3C2410) += s3c2410_udc.o 20 - obj-$(CONFIG_USB_AT91) += at91_udc.o 21 - obj-$(CONFIG_USB_ATMEL_USBA) += atmel_usba_udc.o 22 - obj-$(CONFIG_USB_BCM63XX_UDC) += bcm63xx_udc.o 23 - obj-$(CONFIG_USB_FSL_USB2) += fsl_usb2_udc.o 24 - fsl_usb2_udc-y := fsl_udc_core.o 25 - fsl_usb2_udc-$(CONFIG_ARCH_MXC) += fsl_mxc_udc.o 26 - obj-$(CONFIG_USB_M66592) += m66592-udc.o 27 - obj-$(CONFIG_USB_R8A66597) += r8a66597-udc.o 28 - obj-$(CONFIG_USB_FSL_QE) += fsl_qe_udc.o 29 - obj-$(CONFIG_USB_S3C_HSUDC) += s3c-hsudc.o 30 - obj-$(CONFIG_USB_LPC32XX) += lpc32xx_udc.o 31 - obj-$(CONFIG_USB_EG20T) += pch_udc.o 32 - obj-$(CONFIG_USB_MV_UDC) += mv_udc.o 33 - mv_udc-y := mv_udc_core.o 34 - obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o 35 - obj-$(CONFIG_USB_FOTG210_UDC) += fotg210-udc.o 36 - obj-$(CONFIG_USB_MV_U3D) += mv_u3d_core.o 37 - obj-$(CONFIG_USB_GR_UDC) += gr_udc.o 38 11 39 12 # USB Functions 40 13 usb_f_acm-y := f_acm.o ··· 37 64 usb_f_fs-y := f_fs.o 38 65 obj-$(CONFIG_USB_F_FS) += usb_f_fs.o 39 66 40 - obj-$(CONFIG_USB_GADGET) += legacy/ 67 + obj-$(CONFIG_USB_GADGET) += udc/ legacy/
drivers/usb/gadget/amd5536udc.c drivers/usb/gadget/udc/amd5536udc.c
drivers/usb/gadget/amd5536udc.h drivers/usb/gadget/udc/amd5536udc.h
drivers/usb/gadget/at91_udc.c drivers/usb/gadget/udc/at91_udc.c
drivers/usb/gadget/at91_udc.h drivers/usb/gadget/udc/at91_udc.h
drivers/usb/gadget/atmel_usba_udc.c drivers/usb/gadget/udc/atmel_usba_udc.c
drivers/usb/gadget/atmel_usba_udc.h drivers/usb/gadget/udc/atmel_usba_udc.h
drivers/usb/gadget/bcm63xx_udc.c drivers/usb/gadget/udc/bcm63xx_udc.c
drivers/usb/gadget/dummy_hcd.c drivers/usb/gadget/udc/dummy_hcd.c
drivers/usb/gadget/fotg210-udc.c drivers/usb/gadget/udc/fotg210-udc.c
drivers/usb/gadget/fotg210.h drivers/usb/gadget/udc/fotg210.h
drivers/usb/gadget/fsl_mxc_udc.c drivers/usb/gadget/udc/fsl_mxc_udc.c
drivers/usb/gadget/fsl_qe_udc.c drivers/usb/gadget/udc/fsl_qe_udc.c
drivers/usb/gadget/fsl_qe_udc.h drivers/usb/gadget/udc/fsl_qe_udc.h
drivers/usb/gadget/fsl_udc_core.c drivers/usb/gadget/udc/fsl_udc_core.c
drivers/usb/gadget/fsl_usb2_udc.h drivers/usb/gadget/udc/fsl_usb2_udc.h
drivers/usb/gadget/fusb300_udc.c drivers/usb/gadget/udc/fusb300_udc.c
drivers/usb/gadget/fusb300_udc.h drivers/usb/gadget/udc/fusb300_udc.h
drivers/usb/gadget/gadget_chips.h drivers/usb/gadget/udc/gadget_chips.h
drivers/usb/gadget/goku_udc.c drivers/usb/gadget/udc/goku_udc.c
drivers/usb/gadget/goku_udc.h drivers/usb/gadget/udc/goku_udc.h
drivers/usb/gadget/gr_udc.c drivers/usb/gadget/udc/gr_udc.c
drivers/usb/gadget/gr_udc.h drivers/usb/gadget/udc/gr_udc.h
+1
drivers/usb/gadget/legacy/Makefile
··· 3 3 # 4 4 5 5 ccflags-y := -I$(PWD)/drivers/usb/gadget/ 6 + ccflags-y += -I$(PWD)/drivers/usb/gadget/udc/ 6 7 7 8 g_zero-y := zero.o 8 9 g_audio-y := audio.o
drivers/usb/gadget/lpc32xx_udc.c drivers/usb/gadget/udc/lpc32xx_udc.c
drivers/usb/gadget/m66592-udc.c drivers/usb/gadget/udc/m66592-udc.c
drivers/usb/gadget/m66592-udc.h drivers/usb/gadget/udc/m66592-udc.h
drivers/usb/gadget/mv_u3d.h drivers/usb/gadget/udc/mv_u3d.h
drivers/usb/gadget/mv_u3d_core.c drivers/usb/gadget/udc/mv_u3d_core.c
drivers/usb/gadget/mv_udc.h drivers/usb/gadget/udc/mv_udc.h
drivers/usb/gadget/mv_udc_core.c drivers/usb/gadget/udc/mv_udc_core.c
drivers/usb/gadget/net2272.c drivers/usb/gadget/udc/net2272.c
drivers/usb/gadget/net2272.h drivers/usb/gadget/udc/net2272.h
drivers/usb/gadget/net2280.c drivers/usb/gadget/udc/net2280.c
drivers/usb/gadget/net2280.h drivers/usb/gadget/udc/net2280.h
drivers/usb/gadget/omap_udc.c drivers/usb/gadget/udc/omap_udc.c
drivers/usb/gadget/omap_udc.h drivers/usb/gadget/udc/omap_udc.h
drivers/usb/gadget/pch_udc.c drivers/usb/gadget/udc/pch_udc.c
drivers/usb/gadget/pxa25x_udc.c drivers/usb/gadget/udc/pxa25x_udc.c
drivers/usb/gadget/pxa25x_udc.h drivers/usb/gadget/udc/pxa25x_udc.h
drivers/usb/gadget/pxa27x_udc.c drivers/usb/gadget/udc/pxa27x_udc.c
drivers/usb/gadget/pxa27x_udc.h drivers/usb/gadget/udc/pxa27x_udc.h
drivers/usb/gadget/r8a66597-udc.c drivers/usb/gadget/udc/r8a66597-udc.c
drivers/usb/gadget/r8a66597-udc.h drivers/usb/gadget/udc/r8a66597-udc.h
drivers/usb/gadget/s3c-hsudc.c drivers/usb/gadget/udc/s3c-hsudc.c
drivers/usb/gadget/s3c2410_udc.c drivers/usb/gadget/udc/s3c2410_udc.c
drivers/usb/gadget/s3c2410_udc.h drivers/usb/gadget/udc/s3c2410_udc.h
drivers/usb/gadget/udc-core.c drivers/usb/gadget/udc/udc-core.c
+385
drivers/usb/gadget/udc/Kconfig
··· 1 + # 2 + # USB Gadget support on a system involves 3 + # (a) a peripheral controller, and 4 + # (b) the gadget driver using it. 5 + # 6 + # NOTE: Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !! 7 + # 8 + # - Host systems (like PCs) need CONFIG_USB (with "A" jacks). 9 + # - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks). 10 + # - Some systems have both kinds of controllers. 11 + # 12 + # With help from a special transceiver and a "Mini-AB" jack, systems with 13 + # both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG). 14 + # 15 + 16 + # 17 + # USB Peripheral Controller Support 18 + # 19 + # The order here is alphabetical, except that integrated controllers go 20 + # before discrete ones so they will be the initial/default value: 21 + # - integrated/SOC controllers first 22 + # - licensed IP used in both SOC and discrete versions 23 + # - discrete ones (including all PCI-only controllers) 24 + # - debug/dummy gadget+hcd is last. 25 + # 26 + menu "USB Peripheral Controller" 27 + 28 + # 29 + # Integrated controllers 30 + # 31 + 32 + config USB_AT91 33 + tristate "Atmel AT91 USB Device Port" 34 + depends on ARCH_AT91 35 + help 36 + Many Atmel AT91 processors (such as the AT91RM2000) have a 37 + full speed USB Device Port with support for five configurable 38 + endpoints (plus endpoint zero). 39 + 40 + Say "y" to link the driver statically, or "m" to build a 41 + dynamically linked module called "at91_udc" and force all 42 + gadget drivers to also be dynamically linked. 43 + 44 + config USB_LPC32XX 45 + tristate "LPC32XX USB Peripheral Controller" 46 + depends on ARCH_LPC32XX && I2C 47 + select USB_ISP1301 48 + help 49 + This option selects the USB device controller in the LPC32xx SoC. 50 + 51 + Say "y" to link the driver statically, or "m" to build a 52 + dynamically linked module called "lpc32xx_udc" and force all 53 + gadget drivers to also be dynamically linked. 54 + 55 + config USB_ATMEL_USBA 56 + tristate "Atmel USBA" 57 + depends on AVR32 || ARCH_AT91 58 + help 59 + USBA is the integrated high-speed USB Device controller on 60 + the AT32AP700x, some AT91SAM9 and AT91CAP9 processors from Atmel. 61 + 62 + config USB_BCM63XX_UDC 63 + tristate "Broadcom BCM63xx Peripheral Controller" 64 + depends on BCM63XX 65 + help 66 + Many Broadcom BCM63xx chipsets (such as the BCM6328) have a 67 + high speed USB Device Port with support for four fixed endpoints 68 + (plus endpoint zero). 69 + 70 + Say "y" to link the driver statically, or "m" to build a 71 + dynamically linked module called "bcm63xx_udc". 72 + 73 + config USB_FSL_USB2 74 + tristate "Freescale Highspeed USB DR Peripheral Controller" 75 + depends on FSL_SOC || ARCH_MXC 76 + select USB_FSL_MPH_DR_OF if OF 77 + help 78 + Some of Freescale PowerPC and i.MX processors have a High Speed 79 + Dual-Role(DR) USB controller, which supports device mode. 80 + 81 + The number of programmable endpoints is different through 82 + SOC revisions. 83 + 84 + Say "y" to link the driver statically, or "m" to build a 85 + dynamically linked module called "fsl_usb2_udc" and force 86 + all gadget drivers to also be dynamically linked. 87 + 88 + config USB_FUSB300 89 + tristate "Faraday FUSB300 USB Peripheral Controller" 90 + depends on !PHYS_ADDR_T_64BIT && HAS_DMA 91 + help 92 + Faraday usb device controller FUSB300 driver 93 + 94 + config USB_FOTG210_UDC 95 + depends on HAS_DMA 96 + tristate "Faraday FOTG210 USB Peripheral Controller" 97 + help 98 + Faraday USB2.0 OTG controller which can be configured as 99 + high speed or full speed USB device. This driver supppors 100 + Bulk Transfer so far. 101 + 102 + Say "y" to link the driver statically, or "m" to build a 103 + dynamically linked module called "fotg210_udc". 104 + 105 + config USB_GR_UDC 106 + tristate "Aeroflex Gaisler GRUSBDC USB Peripheral Controller Driver" 107 + depends on HAS_DMA 108 + help 109 + Select this to support Aeroflex Gaisler GRUSBDC cores from the GRLIB 110 + VHDL IP core library. 111 + 112 + config USB_OMAP 113 + tristate "OMAP USB Device Controller" 114 + depends on ARCH_OMAP1 115 + depends on ISP1301_OMAP || !(MACH_OMAP_H2 || MACH_OMAP_H3) 116 + help 117 + Many Texas Instruments OMAP processors have flexible full 118 + speed USB device controllers, with support for up to 30 119 + endpoints (plus endpoint zero). This driver supports the 120 + controller in the OMAP 1611, and should work with controllers 121 + in other OMAP processors too, given minor tweaks. 122 + 123 + Say "y" to link the driver statically, or "m" to build a 124 + dynamically linked module called "omap_udc" and force all 125 + gadget drivers to also be dynamically linked. 126 + 127 + config USB_PXA25X 128 + tristate "PXA 25x or IXP 4xx" 129 + depends on (ARCH_PXA && PXA25x) || ARCH_IXP4XX 130 + help 131 + Intel's PXA 25x series XScale ARM-5TE processors include 132 + an integrated full speed USB 1.1 device controller. The 133 + controller in the IXP 4xx series is register-compatible. 134 + 135 + It has fifteen fixed-function endpoints, as well as endpoint 136 + zero (for control transfers). 137 + 138 + Say "y" to link the driver statically, or "m" to build a 139 + dynamically linked module called "pxa25x_udc" and force all 140 + gadget drivers to also be dynamically linked. 141 + 142 + # if there's only one gadget driver, using only two bulk endpoints, 143 + # don't waste memory for the other endpoints 144 + config USB_PXA25X_SMALL 145 + depends on USB_PXA25X 146 + bool 147 + default n if USB_ETH_RNDIS 148 + default y if USB_ZERO 149 + default y if USB_ETH 150 + default y if USB_G_SERIAL 151 + 152 + config USB_R8A66597 153 + tristate "Renesas R8A66597 USB Peripheral Controller" 154 + depends on HAS_DMA 155 + help 156 + R8A66597 is a discrete USB host and peripheral controller chip that 157 + supports both full and high speed USB 2.0 data transfers. 158 + It has nine configurable endpoints, and endpoint zero. 159 + 160 + Say "y" to link the driver statically, or "m" to build a 161 + dynamically linked module called "r8a66597_udc" and force all 162 + gadget drivers to also be dynamically linked. 163 + 164 + config USB_RENESAS_USBHS_UDC 165 + tristate 'Renesas USBHS controller' 166 + depends on USB_RENESAS_USBHS 167 + help 168 + Renesas USBHS is a discrete USB host and peripheral controller chip 169 + that supports both full and high speed USB 2.0 data transfers. 170 + It has nine or more configurable endpoints, and endpoint zero. 171 + 172 + Say "y" to link the driver statically, or "m" to build a 173 + dynamically linked module called "renesas_usbhs" and force all 174 + gadget drivers to also be dynamically linked. 175 + 176 + config USB_PXA27X 177 + tristate "PXA 27x" 178 + help 179 + Intel's PXA 27x series XScale ARM v5TE processors include 180 + an integrated full speed USB 1.1 device controller. 181 + 182 + It has up to 23 endpoints, as well as endpoint zero (for 183 + control transfers). 184 + 185 + Say "y" to link the driver statically, or "m" to build a 186 + dynamically linked module called "pxa27x_udc" and force all 187 + gadget drivers to also be dynamically linked. 188 + 189 + config USB_S3C2410 190 + tristate "S3C2410 USB Device Controller" 191 + depends on ARCH_S3C24XX 192 + help 193 + Samsung's S3C2410 is an ARM-4 processor with an integrated 194 + full speed USB 1.1 device controller. It has 4 configurable 195 + endpoints, as well as endpoint zero (for control transfers). 196 + 197 + This driver has been tested on the S3C2410, S3C2412, and 198 + S3C2440 processors. 199 + 200 + config USB_S3C2410_DEBUG 201 + boolean "S3C2410 udc debug messages" 202 + depends on USB_S3C2410 203 + 204 + config USB_S3C_HSUDC 205 + tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller" 206 + depends on ARCH_S3C24XX 207 + help 208 + Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC 209 + integrated with dual speed USB 2.0 device controller. It has 210 + 8 endpoints, as well as endpoint zero. 211 + 212 + This driver has been tested on S3C2416 and S3C2450 processors. 213 + 214 + config USB_MV_UDC 215 + tristate "Marvell USB2.0 Device Controller" 216 + depends on HAS_DMA 217 + help 218 + Marvell Socs (including PXA and MMP series) include a high speed 219 + USB2.0 OTG controller, which can be configured as high speed or 220 + full speed USB peripheral. 221 + 222 + config USB_MV_U3D 223 + depends on HAS_DMA 224 + tristate "MARVELL PXA2128 USB 3.0 controller" 225 + help 226 + MARVELL PXA2128 Processor series include a super speed USB3.0 device 227 + controller, which support super speed USB peripheral. 228 + 229 + # 230 + # Controllers available in both integrated and discrete versions 231 + # 232 + 233 + config USB_M66592 234 + tristate "Renesas M66592 USB Peripheral Controller" 235 + help 236 + M66592 is a discrete USB peripheral controller chip that 237 + supports both full and high speed USB 2.0 data transfers. 238 + It has seven configurable endpoints, and endpoint zero. 239 + 240 + Say "y" to link the driver statically, or "m" to build a 241 + dynamically linked module called "m66592_udc" and force all 242 + gadget drivers to also be dynamically linked. 243 + 244 + # 245 + # Controllers available only in discrete form (and all PCI controllers) 246 + # 247 + 248 + config USB_AMD5536UDC 249 + tristate "AMD5536 UDC" 250 + depends on PCI 251 + help 252 + The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. 253 + It is a USB Highspeed DMA capable USB device controller. Beside ep0 254 + it provides 4 IN and 4 OUT endpoints (bulk or interrupt type). 255 + The UDC port supports OTG operation, and may be used as a host port 256 + if it's not being used to implement peripheral or OTG roles. 257 + 258 + Say "y" to link the driver statically, or "m" to build a 259 + dynamically linked module called "amd5536udc" and force all 260 + gadget drivers to also be dynamically linked. 261 + 262 + config USB_FSL_QE 263 + tristate "Freescale QE/CPM USB Device Controller" 264 + depends on FSL_SOC && (QUICC_ENGINE || CPM) 265 + help 266 + Some of Freescale PowerPC processors have a Full Speed 267 + QE/CPM2 USB controller, which support device mode with 4 268 + programmable endpoints. This driver supports the 269 + controller in the MPC8360 and MPC8272, and should work with 270 + controllers having QE or CPM2, given minor tweaks. 271 + 272 + Set CONFIG_USB_GADGET to "m" to build this driver as a 273 + dynamically linked module called "fsl_qe_udc". 274 + 275 + config USB_NET2272 276 + tristate "PLX NET2272" 277 + help 278 + PLX NET2272 is a USB peripheral controller which supports 279 + both full and high speed USB 2.0 data transfers. 280 + 281 + It has three configurable endpoints, as well as endpoint zero 282 + (for control transfer). 283 + Say "y" to link the driver statically, or "m" to build a 284 + dynamically linked module called "net2272" and force all 285 + gadget drivers to also be dynamically linked. 286 + 287 + config USB_NET2272_DMA 288 + boolean "Support external DMA controller" 289 + depends on USB_NET2272 && HAS_DMA 290 + help 291 + The NET2272 part can optionally support an external DMA 292 + controller, but your board has to have support in the 293 + driver itself. 294 + 295 + If unsure, say "N" here. The driver works fine in PIO mode. 296 + 297 + config USB_NET2280 298 + tristate "NetChip 228x / PLX USB338x" 299 + depends on PCI 300 + help 301 + NetChip 2280 / 2282 is a PCI based USB peripheral controller which 302 + supports both full and high speed USB 2.0 data transfers. 303 + 304 + It has six configurable endpoints, as well as endpoint zero 305 + (for control transfers) and several endpoints with dedicated 306 + functions. 307 + 308 + PLX 3380 / 3382 is a PCIe based USB peripheral controller which 309 + supports full, high speed USB 2.0 and super speed USB 3.0 310 + data transfers. 311 + 312 + It has eight configurable endpoints, as well as endpoint zero 313 + (for control transfers) and several endpoints with dedicated 314 + functions. 315 + 316 + Say "y" to link the driver statically, or "m" to build a 317 + dynamically linked module called "net2280" and force all 318 + gadget drivers to also be dynamically linked. 319 + 320 + config USB_GOKU 321 + tristate "Toshiba TC86C001 'Goku-S'" 322 + depends on PCI 323 + help 324 + The Toshiba TC86C001 is a PCI device which includes controllers 325 + for full speed USB devices, IDE, I2C, SIO, plus a USB host (OHCI). 326 + 327 + The device controller has three configurable (bulk or interrupt) 328 + endpoints, plus endpoint zero (for control transfers). 329 + 330 + Say "y" to link the driver statically, or "m" to build a 331 + dynamically linked module called "goku_udc" and to force all 332 + gadget drivers to also be dynamically linked. 333 + 334 + config USB_EG20T 335 + tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" 336 + depends on PCI 337 + help 338 + This is a USB device driver for EG20T PCH. 339 + EG20T PCH is the platform controller hub that is used in Intel's 340 + general embedded platform. EG20T PCH has USB device interface. 341 + Using this interface, it is able to access system devices connected 342 + to USB device. 343 + This driver enables USB device function. 344 + USB device is a USB peripheral controller which 345 + supports both full and high speed USB 2.0 data transfers. 346 + This driver supports both control transfer and bulk transfer modes. 347 + This driver dose not support interrupt transfer or isochronous 348 + transfer modes. 349 + 350 + This driver also can be used for LAPIS Semiconductor's ML7213 which is 351 + for IVI(In-Vehicle Infotainment) use. 352 + ML7831 is for general purpose use. 353 + ML7213/ML7831 is companion chip for Intel Atom E6xx series. 354 + ML7213/ML7831 is completely compatible for Intel EG20T PCH. 355 + 356 + # 357 + # LAST -- dummy/emulated controller 358 + # 359 + 360 + config USB_DUMMY_HCD 361 + tristate "Dummy HCD (DEVELOPMENT)" 362 + depends on USB=y || (USB=m && USB_GADGET=m) 363 + help 364 + This host controller driver emulates USB, looping all data transfer 365 + requests back to a USB "gadget driver" in the same host. The host 366 + side is the master; the gadget side is the slave. Gadget drivers 367 + can be high, full, or low speed; and they have access to endpoints 368 + like those from NET2280, PXA2xx, or SA1100 hardware. 369 + 370 + This may help in some stages of creating a driver to embed in a 371 + Linux device, since it lets you debug several parts of the gadget 372 + driver without its hardware or drivers being involved. 373 + 374 + Since such a gadget side driver needs to interoperate with a host 375 + side Linux-USB device driver, this may help to debug both sides 376 + of a USB protocol stack. 377 + 378 + Say "y" to link the driver statically, or "m" to build a 379 + dynamically linked module called "dummy_hcd" and force all 380 + gadget drivers to also be dynamically linked. 381 + 382 + # NOTE: Please keep dummy_hcd LAST so that "real hardware" appears 383 + # first and will be selected by default. 384 + 385 + endmenu
+31
drivers/usb/gadget/udc/Makefile
··· 1 + # 2 + # USB peripheral controller drivers 3 + # 4 + obj-$(CONFIG_USB_GADGET) += udc-core.o 5 + obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o 6 + obj-$(CONFIG_USB_NET2272) += net2272.o 7 + obj-$(CONFIG_USB_NET2280) += net2280.o 8 + obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o 9 + obj-$(CONFIG_USB_PXA25X) += pxa25x_udc.o 10 + obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o 11 + obj-$(CONFIG_USB_GOKU) += goku_udc.o 12 + obj-$(CONFIG_USB_OMAP) += omap_udc.o 13 + obj-$(CONFIG_USB_S3C2410) += s3c2410_udc.o 14 + obj-$(CONFIG_USB_AT91) += at91_udc.o 15 + obj-$(CONFIG_USB_ATMEL_USBA) += atmel_usba_udc.o 16 + obj-$(CONFIG_USB_BCM63XX_UDC) += bcm63xx_udc.o 17 + obj-$(CONFIG_USB_FSL_USB2) += fsl_usb2_udc.o 18 + fsl_usb2_udc-y := fsl_udc_core.o 19 + fsl_usb2_udc-$(CONFIG_ARCH_MXC) += fsl_mxc_udc.o 20 + obj-$(CONFIG_USB_M66592) += m66592-udc.o 21 + obj-$(CONFIG_USB_R8A66597) += r8a66597-udc.o 22 + obj-$(CONFIG_USB_FSL_QE) += fsl_qe_udc.o 23 + obj-$(CONFIG_USB_S3C_HSUDC) += s3c-hsudc.o 24 + obj-$(CONFIG_USB_LPC32XX) += lpc32xx_udc.o 25 + obj-$(CONFIG_USB_EG20T) += pch_udc.o 26 + obj-$(CONFIG_USB_MV_UDC) += mv_udc.o 27 + mv_udc-y := mv_udc_core.o 28 + obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o 29 + obj-$(CONFIG_USB_FOTG210_UDC) += fotg210-udc.o 30 + obj-$(CONFIG_USB_MV_U3D) += mv_u3d_core.o 31 + obj-$(CONFIG_USB_GR_UDC) += gr_udc.o