diff options
author | Thomas Pugliese <thomas.pugliese@gmail.com> | 2013-10-23 15:44:28 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-29 19:44:49 -0400 |
commit | f07ddb9ef5c25c1044ab5b6509241320fb5e831a (patch) | |
tree | 6f7bb348ad03cc4e7e52634de48deaeecd468ae2 /drivers/usb/host/hwa-hc.c | |
parent | 2101242cef04991a580c3debb46972dbfaaaf138 (diff) |
usb: wusbcore: add a quirk for Alereon HWA device isoc behavior
Add a quirk for Alereon HWA devices to concatenate the frames of isoc
transfer requests.
Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/hwa-hc.c')
-rw-r--r-- | drivers/usb/host/hwa-hc.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/usb/host/hwa-hc.c b/drivers/usb/host/hwa-hc.c index e5fb3cfd57a9..ada0a52797b1 100644 --- a/drivers/usb/host/hwa-hc.c +++ b/drivers/usb/host/hwa-hc.c | |||
@@ -679,7 +679,8 @@ static void hwahc_security_release(struct hwahc *hwahc) | |||
679 | /* nothing to do here so far... */ | 679 | /* nothing to do here so far... */ |
680 | } | 680 | } |
681 | 681 | ||
682 | static int hwahc_create(struct hwahc *hwahc, struct usb_interface *iface) | 682 | static int hwahc_create(struct hwahc *hwahc, struct usb_interface *iface, |
683 | kernel_ulong_t quirks) | ||
683 | { | 684 | { |
684 | int result; | 685 | int result; |
685 | struct device *dev = &iface->dev; | 686 | struct device *dev = &iface->dev; |
@@ -724,7 +725,7 @@ static int hwahc_create(struct hwahc *hwahc, struct usb_interface *iface) | |||
724 | dev_err(dev, "Can't create WUSB HC structures: %d\n", result); | 725 | dev_err(dev, "Can't create WUSB HC structures: %d\n", result); |
725 | goto error_wusbhc_create; | 726 | goto error_wusbhc_create; |
726 | } | 727 | } |
727 | result = wa_create(&hwahc->wa, iface); | 728 | result = wa_create(&hwahc->wa, iface, quirks); |
728 | if (result < 0) | 729 | if (result < 0) |
729 | goto error_wa_create; | 730 | goto error_wa_create; |
730 | return 0; | 731 | return 0; |
@@ -780,7 +781,7 @@ static int hwahc_probe(struct usb_interface *usb_iface, | |||
780 | wusbhc = usb_hcd_to_wusbhc(usb_hcd); | 781 | wusbhc = usb_hcd_to_wusbhc(usb_hcd); |
781 | hwahc = container_of(wusbhc, struct hwahc, wusbhc); | 782 | hwahc = container_of(wusbhc, struct hwahc, wusbhc); |
782 | hwahc_init(hwahc); | 783 | hwahc_init(hwahc); |
783 | result = hwahc_create(hwahc, usb_iface); | 784 | result = hwahc_create(hwahc, usb_iface, id->driver_info); |
784 | if (result < 0) { | 785 | if (result < 0) { |
785 | dev_err(dev, "Cannot initialize internals: %d\n", result); | 786 | dev_err(dev, "Cannot initialize internals: %d\n", result); |
786 | goto error_hwahc_create; | 787 | goto error_hwahc_create; |
@@ -824,6 +825,12 @@ static void hwahc_disconnect(struct usb_interface *usb_iface) | |||
824 | } | 825 | } |
825 | 826 | ||
826 | static struct usb_device_id hwahc_id_table[] = { | 827 | static struct usb_device_id hwahc_id_table[] = { |
828 | /* Alereon 5310 */ | ||
829 | { USB_DEVICE_AND_INTERFACE_INFO(0x13dc, 0x5310, 0xe0, 0x02, 0x01), | ||
830 | .driver_info = WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC }, | ||
831 | /* Alereon 5611 */ | ||
832 | { USB_DEVICE_AND_INTERFACE_INFO(0x13dc, 0x5611, 0xe0, 0x02, 0x01), | ||
833 | .driver_info = WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC }, | ||
827 | /* FIXME: use class labels for this */ | 834 | /* FIXME: use class labels for this */ |
828 | { USB_INTERFACE_INFO(0xe0, 0x02, 0x01), }, | 835 | { USB_INTERFACE_INFO(0xe0, 0x02, 0x01), }, |
829 | {}, | 836 | {}, |