Commit 85b8614d authored by Michal Nazarewicz's avatar Michal Nazarewicz Committed by Felipe Balbi

usb: gadget: get rid of USB_GADGET_{DUAL,SUPER}SPEED

This commit removes USB_GADGET_DUALSPEED and USB_GADGET_SUPERSPEED
Kconfig options.  Since now kernel allows many UDC drivers to be
compiled, those options may turn to no longer be valid.  For
instance, if someone decides to build UDC that supports super
speed and UDC that supports high speed only, the latter will be
"assumed" to support super speed since USB_GADGET_SUPERSPEED will
be selected by the former.

The test of whether CONFIG_USB_GADGET_*SPEED was defined was just
an optimisation which removed otherwise dead code (ie. if UDC is
not dual speed, there is no need to handle cases that can happen
if speed is high).  This commit removes those checks.
Signed-off-by: default avatarMichal Nazarewicz <mina86@mina86.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 86bab366
...@@ -13,7 +13,6 @@ if USB_CHIPIDEA ...@@ -13,7 +13,6 @@ if USB_CHIPIDEA
config USB_CHIPIDEA_UDC config USB_CHIPIDEA_UDC
bool "ChipIdea device controller" bool "ChipIdea device controller"
depends on USB_GADGET depends on USB_GADGET
select USB_GADGET_DUALSPEED
help help
Say Y here to enable device controller functionality of the Say Y here to enable device controller functionality of the
ChipIdea driver. ChipIdea driver.
......
...@@ -2,8 +2,6 @@ config USB_DWC3 ...@@ -2,8 +2,6 @@ config USB_DWC3
tristate "DesignWare USB3 DRD Core Support" tristate "DesignWare USB3 DRD Core Support"
depends on (USB && USB_GADGET) depends on (USB && USB_GADGET)
select USB_OTG_UTILS select USB_OTG_UTILS
select USB_GADGET_DUALSPEED
select USB_GADGET_SUPERSPEED
select USB_XHCI_PLATFORM if USB_SUPPORT && USB_XHCI_HCD select USB_XHCI_PLATFORM if USB_SUPPORT && USB_XHCI_HCD
help help
Say Y or M here if your system has a Dual Role SuperSpeed Say Y or M here if your system has a Dual Role SuperSpeed
......
...@@ -154,7 +154,6 @@ config USB_LPC32XX ...@@ -154,7 +154,6 @@ config USB_LPC32XX
config USB_ATMEL_USBA config USB_ATMEL_USBA
tristate "Atmel USBA" tristate "Atmel USBA"
select USB_GADGET_DUALSPEED
depends on AVR32 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 depends on AVR32 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
help help
USBA is the integrated high-speed USB Device controller on USBA is the integrated high-speed USB Device controller on
...@@ -163,7 +162,6 @@ config USB_ATMEL_USBA ...@@ -163,7 +162,6 @@ config USB_ATMEL_USBA
config USB_FSL_USB2 config USB_FSL_USB2
tristate "Freescale Highspeed USB DR Peripheral Controller" tristate "Freescale Highspeed USB DR Peripheral Controller"
depends on FSL_SOC || ARCH_MXC depends on FSL_SOC || ARCH_MXC
select USB_GADGET_DUALSPEED
select USB_FSL_MPH_DR_OF if OF select USB_FSL_MPH_DR_OF if OF
help help
Some of Freescale PowerPC and i.MX processors have a High Speed Some of Freescale PowerPC and i.MX processors have a High Speed
...@@ -179,7 +177,6 @@ config USB_FSL_USB2 ...@@ -179,7 +177,6 @@ config USB_FSL_USB2
config USB_FUSB300 config USB_FUSB300
tristate "Faraday FUSB300 USB Peripheral Controller" tristate "Faraday FUSB300 USB Peripheral Controller"
depends on !PHYS_ADDR_T_64BIT depends on !PHYS_ADDR_T_64BIT
select USB_GADGET_DUALSPEED
help help
Faraday usb device controller FUSB300 driver Faraday usb device controller FUSB300 driver
...@@ -227,7 +224,6 @@ config USB_PXA25X_SMALL ...@@ -227,7 +224,6 @@ config USB_PXA25X_SMALL
config USB_R8A66597 config USB_R8A66597
tristate "Renesas R8A66597 USB Peripheral Controller" tristate "Renesas R8A66597 USB Peripheral Controller"
select USB_GADGET_DUALSPEED
help help
R8A66597 is a discrete USB host and peripheral controller chip that R8A66597 is a discrete USB host and peripheral controller chip that
supports both full and high speed USB 2.0 data transfers. supports both full and high speed USB 2.0 data transfers.
...@@ -240,7 +236,6 @@ config USB_R8A66597 ...@@ -240,7 +236,6 @@ config USB_R8A66597
config USB_RENESAS_USBHS_UDC config USB_RENESAS_USBHS_UDC
tristate 'Renesas USBHS controller' tristate 'Renesas USBHS controller'
depends on USB_RENESAS_USBHS depends on USB_RENESAS_USBHS
select USB_GADGET_DUALSPEED
help help
Renesas USBHS is a discrete USB host and peripheral controller chip Renesas USBHS is a discrete USB host and peripheral controller chip
that supports both full and high speed USB 2.0 data transfers. that supports both full and high speed USB 2.0 data transfers.
...@@ -268,7 +263,6 @@ config USB_PXA27X ...@@ -268,7 +263,6 @@ config USB_PXA27X
config USB_S3C_HSOTG config USB_S3C_HSOTG
tristate "S3C HS/OtG USB Device controller" tristate "S3C HS/OtG USB Device controller"
depends on S3C_DEV_USB_HSOTG depends on S3C_DEV_USB_HSOTG
select USB_GADGET_DUALSPEED
help help
The Samsung S3C64XX USB2.0 high-speed gadget controller The Samsung S3C64XX USB2.0 high-speed gadget controller
integrated into the S3C64XX series SoC. integrated into the S3C64XX series SoC.
...@@ -305,7 +299,6 @@ config USB_S3C2410_DEBUG ...@@ -305,7 +299,6 @@ config USB_S3C2410_DEBUG
config USB_S3C_HSUDC config USB_S3C_HSUDC
tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller" tristate "S3C2416, S3C2443 and S3C2450 USB Device Controller"
depends on ARCH_S3C24XX depends on ARCH_S3C24XX
select USB_GADGET_DUALSPEED
help help
Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC Samsung's S3C2416, S3C2443 and S3C2450 is an ARM9 based SoC
integrated with dual speed USB 2.0 device controller. It has integrated with dual speed USB 2.0 device controller. It has
...@@ -315,7 +308,6 @@ config USB_S3C_HSUDC ...@@ -315,7 +308,6 @@ config USB_S3C_HSUDC
config USB_MV_UDC config USB_MV_UDC
tristate "Marvell USB2.0 Device Controller" tristate "Marvell USB2.0 Device Controller"
select USB_GADGET_DUALSPEED
help help
Marvell Socs (including PXA and MMP series) include a high speed Marvell Socs (including PXA and MMP series) include a high speed
USB2.0 OTG controller, which can be configured as high speed or USB2.0 OTG controller, which can be configured as high speed or
...@@ -338,14 +330,12 @@ config USB_MV_U3D ...@@ -338,14 +330,12 @@ config USB_MV_U3D
config USB_GADGET_MUSB_HDRC config USB_GADGET_MUSB_HDRC
tristate "Inventra HDRC USB Peripheral (TI, ADI, ...)" tristate "Inventra HDRC USB Peripheral (TI, ADI, ...)"
depends on USB_MUSB_HDRC depends on USB_MUSB_HDRC
select USB_GADGET_DUALSPEED
help help
This OTG-capable silicon IP is used in dual designs including This OTG-capable silicon IP is used in dual designs including
the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin the TI DaVinci, OMAP 243x, OMAP 343x, TUSB 6010, and ADI Blackfin
config USB_M66592 config USB_M66592
tristate "Renesas M66592 USB Peripheral Controller" tristate "Renesas M66592 USB Peripheral Controller"
select USB_GADGET_DUALSPEED
help help
M66592 is a discrete USB peripheral controller chip that M66592 is a discrete USB peripheral controller chip that
supports both full and high speed USB 2.0 data transfers. supports both full and high speed USB 2.0 data transfers.
...@@ -362,7 +352,6 @@ config USB_M66592 ...@@ -362,7 +352,6 @@ config USB_M66592
config USB_AMD5536UDC config USB_AMD5536UDC
tristate "AMD5536 UDC" tristate "AMD5536 UDC"
depends on PCI depends on PCI
select USB_GADGET_DUALSPEED
help help
The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge. The AMD5536 UDC is part of the AMD Geode CS5536, an x86 southbridge.
It is a USB Highspeed DMA capable USB device controller. Beside ep0 It is a USB Highspeed DMA capable USB device controller. Beside ep0
...@@ -389,7 +378,6 @@ config USB_FSL_QE ...@@ -389,7 +378,6 @@ config USB_FSL_QE
config USB_NET2272 config USB_NET2272
tristate "PLX NET2272" tristate "PLX NET2272"
select USB_GADGET_DUALSPEED
help help
PLX NET2272 is a USB peripheral controller which supports PLX NET2272 is a USB peripheral controller which supports
both full and high speed USB 2.0 data transfers. both full and high speed USB 2.0 data transfers.
...@@ -413,7 +401,6 @@ config USB_NET2272_DMA ...@@ -413,7 +401,6 @@ config USB_NET2272_DMA
config USB_NET2280 config USB_NET2280
tristate "NetChip 228x" tristate "NetChip 228x"
depends on PCI depends on PCI
select USB_GADGET_DUALSPEED
help help
NetChip 2280 / 2282 is a PCI based USB peripheral controller which NetChip 2280 / 2282 is a PCI based USB peripheral controller which
supports both full and high speed USB 2.0 data transfers. supports both full and high speed USB 2.0 data transfers.
...@@ -443,7 +430,6 @@ config USB_GOKU ...@@ -443,7 +430,6 @@ config USB_GOKU
config USB_EG20T config USB_EG20T
tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC"
depends on PCI depends on PCI
select USB_GADGET_DUALSPEED
help help
This is a USB device driver for EG20T PCH. This is a USB device driver for EG20T PCH.
EG20T PCH is the platform controller hub that is used in Intel's EG20T PCH is the platform controller hub that is used in Intel's
...@@ -470,8 +456,6 @@ config USB_EG20T ...@@ -470,8 +456,6 @@ config USB_EG20T
config USB_DUMMY_HCD config USB_DUMMY_HCD
tristate "Dummy HCD (DEVELOPMENT)" tristate "Dummy HCD (DEVELOPMENT)"
depends on USB=y || (USB=m && USB_GADGET=m) depends on USB=y || (USB=m && USB_GADGET=m)
select USB_GADGET_DUALSPEED
select USB_GADGET_SUPERSPEED
help help
This host controller driver emulates USB, looping all data transfer This host controller driver emulates USB, looping all data transfer
requests back to a USB "gadget driver" in the same host. The host requests back to a USB "gadget driver" in the same host. The host
...@@ -496,15 +480,6 @@ config USB_DUMMY_HCD ...@@ -496,15 +480,6 @@ config USB_DUMMY_HCD
endmenu endmenu
# Selected by UDC drivers that support high-speed operation.
config USB_GADGET_DUALSPEED
bool
# Selected by UDC drivers that support super-speed opperation
config USB_GADGET_SUPERSPEED
bool
depends on USB_GADGET_DUALSPEED
# #
# USB Gadget Drivers # USB Gadget Drivers
# #
......
...@@ -1586,12 +1586,6 @@ composite_resume(struct usb_gadget *gadget) ...@@ -1586,12 +1586,6 @@ composite_resume(struct usb_gadget *gadget)
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
static struct usb_gadget_driver composite_driver = { static struct usb_gadget_driver composite_driver = {
#ifdef CONFIG_USB_GADGET_SUPERSPEED
.max_speed = USB_SPEED_SUPER,
#else
.max_speed = USB_SPEED_HIGH,
#endif
.unbind = composite_unbind, .unbind = composite_unbind,
.setup = composite_setup, .setup = composite_setup,
...@@ -1636,8 +1630,7 @@ int usb_composite_probe(struct usb_composite_driver *driver, ...@@ -1636,8 +1630,7 @@ int usb_composite_probe(struct usb_composite_driver *driver,
driver->iProduct = driver->name; driver->iProduct = driver->name;
composite_driver.function = (char *) driver->name; composite_driver.function = (char *) driver->name;
composite_driver.driver.name = driver->name; composite_driver.driver.name = driver->name;
composite_driver.max_speed = composite_driver.max_speed = driver->max_speed;
min_t(u8, composite_driver.max_speed, driver->max_speed);
composite = driver; composite = driver;
composite_gadget_bind = bind; composite_gadget_bind = bind;
......
...@@ -828,7 +828,6 @@ ep_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) ...@@ -828,7 +828,6 @@ ep_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
if (value == 0) if (value == 0)
data->state = STATE_EP_ENABLED; data->state = STATE_EP_ENABLED;
break; break;
#ifdef CONFIG_USB_GADGET_DUALSPEED
case USB_SPEED_HIGH: case USB_SPEED_HIGH:
/* fails if caller didn't provide that descriptor... */ /* fails if caller didn't provide that descriptor... */
ep->desc = &data->hs_desc; ep->desc = &data->hs_desc;
...@@ -836,7 +835,6 @@ ep_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) ...@@ -836,7 +835,6 @@ ep_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
if (value == 0) if (value == 0)
data->state = STATE_EP_ENABLED; data->state = STATE_EP_ENABLED;
break; break;
#endif
default: default:
DBG(data->dev, "unconnected, %s init abandoned\n", DBG(data->dev, "unconnected, %s init abandoned\n",
data->name); data->name);
...@@ -1324,7 +1322,6 @@ static const struct file_operations ep0_io_operations = { ...@@ -1324,7 +1322,6 @@ static const struct file_operations ep0_io_operations = {
* Unrecognized ep0 requests may be handled in user space. * Unrecognized ep0 requests may be handled in user space.
*/ */
#ifdef CONFIG_USB_GADGET_DUALSPEED
static void make_qualifier (struct dev_data *dev) static void make_qualifier (struct dev_data *dev)
{ {
struct usb_qualifier_descriptor qual; struct usb_qualifier_descriptor qual;
...@@ -1347,7 +1344,6 @@ static void make_qualifier (struct dev_data *dev) ...@@ -1347,7 +1344,6 @@ static void make_qualifier (struct dev_data *dev)
memcpy (dev->rbuf, &qual, sizeof qual); memcpy (dev->rbuf, &qual, sizeof qual);
} }
#endif
static int static int
config_buf (struct dev_data *dev, u8 type, unsigned index) config_buf (struct dev_data *dev, u8 type, unsigned index)
...@@ -1427,7 +1423,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) ...@@ -1427,7 +1423,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
dev->dev->bMaxPacketSize0 = dev->gadget->ep0->maxpacket; dev->dev->bMaxPacketSize0 = dev->gadget->ep0->maxpacket;
req->buf = dev->dev; req->buf = dev->dev;
break; break;
#ifdef CONFIG_USB_GADGET_DUALSPEED
case USB_DT_DEVICE_QUALIFIER: case USB_DT_DEVICE_QUALIFIER:
if (!dev->hs_config) if (!dev->hs_config)
break; break;
...@@ -1437,7 +1432,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) ...@@ -1437,7 +1432,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
break; break;
case USB_DT_OTHER_SPEED_CONFIG: case USB_DT_OTHER_SPEED_CONFIG:
// FALLTHROUGH // FALLTHROUGH
#endif
case USB_DT_CONFIG: case USB_DT_CONFIG:
value = config_buf (dev, value = config_buf (dev,
w_value >> 8, w_value >> 8,
...@@ -1763,11 +1757,6 @@ gadgetfs_suspend (struct usb_gadget *gadget) ...@@ -1763,11 +1757,6 @@ gadgetfs_suspend (struct usb_gadget *gadget)
} }
static struct usb_gadget_driver gadgetfs_driver = { static struct usb_gadget_driver gadgetfs_driver = {
#ifdef CONFIG_USB_GADGET_DUALSPEED
.max_speed = USB_SPEED_HIGH,
#else
.max_speed = USB_SPEED_FULL,
#endif
.function = (char *) driver_desc, .function = (char *) driver_desc,
.unbind = gadgetfs_unbind, .unbind = gadgetfs_unbind,
.setup = gadgetfs_setup, .setup = gadgetfs_setup,
...@@ -1900,6 +1889,10 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) ...@@ -1900,6 +1889,10 @@ dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
/* triggers gadgetfs_bind(); then we can enumerate. */ /* triggers gadgetfs_bind(); then we can enumerate. */
spin_unlock_irq (&dev->lock); spin_unlock_irq (&dev->lock);
if (dev->hs_config)
gadgetfs_driver.max_speed = USB_SPEED_HIGH;
else
gadgetfs_driver.max_speed = USB_SPEED_FULL;
value = usb_gadget_probe_driver(&gadgetfs_driver, gadgetfs_bind); value = usb_gadget_probe_driver(&gadgetfs_driver, gadgetfs_bind);
if (value != 0) { if (value != 0) {
kfree (dev->buf); kfree (dev->buf);
......
...@@ -83,17 +83,10 @@ struct eth_dev { ...@@ -83,17 +83,10 @@ struct eth_dev {
#define DEFAULT_QLEN 2 /* double buffering by default */ #define DEFAULT_QLEN 2 /* double buffering by default */
#ifdef CONFIG_USB_GADGET_DUALSPEED
static unsigned qmult = 5; static unsigned qmult = 5;
module_param(qmult, uint, S_IRUGO|S_IWUSR); module_param(qmult, uint, S_IRUGO|S_IWUSR);
MODULE_PARM_DESC(qmult, "queue length multiplier at high/super speed"); MODULE_PARM_DESC(qmult, "queue length multiplier at high/super speed");
#else /* full speed (low speed doesn't do bulk) */
#define qmult 1
#endif
/* for dual-speed hardware, use deeper queues at high/super speed */ /* for dual-speed hardware, use deeper queues at high/super speed */
static inline int qlen(struct usb_gadget *gadget) static inline int qlen(struct usb_gadget *gadget)
{ {
......
...@@ -12,7 +12,6 @@ config USB_MUSB_HDRC ...@@ -12,7 +12,6 @@ config USB_MUSB_HDRC
select TWL4030_USB if MACH_OMAP_3430SDP select TWL4030_USB if MACH_OMAP_3430SDP
select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA
select USB_OTG_UTILS select USB_OTG_UTILS
select USB_GADGET_DUALSPEED
help help
Say Y here if your system has a dual role high speed USB Say Y here if your system has a dual role high speed USB
controller based on the Mentor Graphics silicon IP. Then controller based on the Mentor Graphics silicon IP. Then
......
...@@ -558,14 +558,7 @@ static inline struct usb_gadget *dev_to_usb_gadget(struct device *dev) ...@@ -558,14 +558,7 @@ static inline struct usb_gadget *dev_to_usb_gadget(struct device *dev)
*/ */
static inline int gadget_is_dualspeed(struct usb_gadget *g) static inline int gadget_is_dualspeed(struct usb_gadget *g)
{ {
#ifdef CONFIG_USB_GADGET_DUALSPEED return g->max_speed >= USB_SPEED_HIGH;
/* runtime test would check "g->max_speed" ... that might be
* useful to work around hardware bugs, but is mostly pointless
*/
return 1;
#else
return 0;
#endif
} }
/** /**
...@@ -575,15 +568,7 @@ static inline int gadget_is_dualspeed(struct usb_gadget *g) ...@@ -575,15 +568,7 @@ static inline int gadget_is_dualspeed(struct usb_gadget *g)
*/ */
static inline int gadget_is_superspeed(struct usb_gadget *g) static inline int gadget_is_superspeed(struct usb_gadget *g)
{ {
#ifdef CONFIG_USB_GADGET_SUPERSPEED return g->max_speed >= USB_SPEED_SUPER;
/*
* runtime test would check "g->max_speed" ... that might be
* useful to work around hardware bugs, but is mostly pointless
*/
return 1;
#else
return 0;
#endif
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment