mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-07 09:05:13 +07:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: USB: auerswald possible memleak fix USB: ipaq: Add HTC Modem Support USB: Fixed outdated usb_get_device_descriptor() documentation usb-storage: Remove duplicated unusual_devs.h entries for Sony Ericsson P990i USB: hid-core: Add quirk for new Apple keyboard/trackpad USB Storage: unusual_devs.h entry for Sony Ericsson P990i USB: correct keymapping on Powerbook built-in USB ISO keyboards USB: OHCI: fix root-hub resume bug USB: Fix UCR-61S2B unusual_dev entry USB: ftdi driver pid for dmx-interfaces USB: ftdi_sio: adds vendor/product id for a RFID construction kit OHCI: disallow autostop when wakeup is not available
This commit is contained in:
commit
0e12c5e85e
@ -828,10 +828,7 @@ char *usb_cache_string(struct usb_device *udev, int index)
|
|||||||
* Context: !in_interrupt ()
|
* Context: !in_interrupt ()
|
||||||
*
|
*
|
||||||
* Updates the copy of the device descriptor stored in the device structure,
|
* Updates the copy of the device descriptor stored in the device structure,
|
||||||
* which dedicates space for this purpose. Note that several fields are
|
* which dedicates space for this purpose.
|
||||||
* converted to the host CPU's byte order: the USB version (bcdUSB), and
|
|
||||||
* vendors product and version fields (idVendor, idProduct, and bcdDevice).
|
|
||||||
* That lets device drivers compare against non-byteswapped constants.
|
|
||||||
*
|
*
|
||||||
* Not exported, only for use by the core. If drivers really want to read
|
* Not exported, only for use by the core. If drivers really want to read
|
||||||
* the device descriptor directly, they can call usb_get_descriptor() with
|
* the device descriptor directly, they can call usb_get_descriptor() with
|
||||||
|
@ -715,13 +715,6 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd)
|
|||||||
return IRQ_NOTMINE;
|
return IRQ_NOTMINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ints & OHCI_INTR_RHSC) {
|
|
||||||
ohci_vdbg (ohci, "rhsc\n");
|
|
||||||
ohci->next_statechange = jiffies + STATECHANGE_DELAY;
|
|
||||||
ohci_writel (ohci, OHCI_INTR_RHSC, ®s->intrstatus);
|
|
||||||
usb_hcd_poll_rh_status(hcd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ints & OHCI_INTR_UE) {
|
if (ints & OHCI_INTR_UE) {
|
||||||
disable (ohci);
|
disable (ohci);
|
||||||
ohci_err (ohci, "OHCI Unrecoverable Error, disabled\n");
|
ohci_err (ohci, "OHCI Unrecoverable Error, disabled\n");
|
||||||
@ -731,9 +724,21 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd)
|
|||||||
ohci_usb_reset (ohci);
|
ohci_usb_reset (ohci);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ints & OHCI_INTR_RD) {
|
if (ints & OHCI_INTR_RHSC) {
|
||||||
ohci_vdbg (ohci, "resume detect\n");
|
ohci_vdbg(ohci, "rhsc\n");
|
||||||
ohci_writel (ohci, OHCI_INTR_RD, ®s->intrstatus);
|
ohci->next_statechange = jiffies + STATECHANGE_DELAY;
|
||||||
|
ohci_writel(ohci, OHCI_INTR_RD | OHCI_INTR_RHSC,
|
||||||
|
®s->intrstatus);
|
||||||
|
usb_hcd_poll_rh_status(hcd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* For connect and disconnect events, we expect the controller
|
||||||
|
* to turn on RHSC along with RD. But for remote wakeup events
|
||||||
|
* this might not happen.
|
||||||
|
*/
|
||||||
|
else if (ints & OHCI_INTR_RD) {
|
||||||
|
ohci_vdbg(ohci, "resume detect\n");
|
||||||
|
ohci_writel(ohci, OHCI_INTR_RD, ®s->intrstatus);
|
||||||
hcd->poll_rh = 1;
|
hcd->poll_rh = 1;
|
||||||
if (ohci->autostop) {
|
if (ohci->autostop) {
|
||||||
spin_lock (&ohci->lock);
|
spin_lock (&ohci->lock);
|
||||||
|
@ -169,7 +169,8 @@ __acquires(ohci->lock)
|
|||||||
break;
|
break;
|
||||||
case OHCI_USB_RESUME:
|
case OHCI_USB_RESUME:
|
||||||
/* HCFS changes sometime after INTR_RD */
|
/* HCFS changes sometime after INTR_RD */
|
||||||
ohci_info (ohci, "wakeup\n");
|
ohci_info(ohci, "%swakeup\n",
|
||||||
|
autostopped ? "auto-" : "");
|
||||||
break;
|
break;
|
||||||
case OHCI_USB_OPER:
|
case OHCI_USB_OPER:
|
||||||
/* this can happen after resuming a swsusp snapshot */
|
/* this can happen after resuming a swsusp snapshot */
|
||||||
@ -422,7 +423,8 @@ ohci_hub_status_data (struct usb_hcd *hcd, char *buf)
|
|||||||
ohci->autostop = 0;
|
ohci->autostop = 0;
|
||||||
ohci->next_statechange = jiffies +
|
ohci->next_statechange = jiffies +
|
||||||
STATECHANGE_DELAY;
|
STATECHANGE_DELAY;
|
||||||
} else if (time_after_eq (jiffies,
|
} else if (device_may_wakeup(&hcd->self.root_hub->dev)
|
||||||
|
&& time_after_eq(jiffies,
|
||||||
ohci->next_statechange)
|
ohci->next_statechange)
|
||||||
&& !ohci->ed_rm_list
|
&& !ohci->ed_rm_list
|
||||||
&& !(ohci->hc_control &
|
&& !(ohci->hc_control &
|
||||||
|
@ -1797,11 +1797,12 @@ static const struct hid_blacklist {
|
|||||||
{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x020E, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x020F, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN | HID_QUIRK_POWERBOOK_ISO_KEYBOARD},
|
||||||
{ USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
|
{ USB_VENDOR_ID_APPLE, 0x021B, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
|
{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
|
||||||
|
|
||||||
|
@ -121,6 +121,12 @@ static struct hidinput_key_translation powerbook_numlock_keys[] = {
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct hidinput_key_translation powerbook_iso_keyboard[] = {
|
||||||
|
{ KEY_GRAVE, KEY_102ND },
|
||||||
|
{ KEY_102ND, KEY_GRAVE },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
static int usbhid_pb_fnmode = 1;
|
static int usbhid_pb_fnmode = 1;
|
||||||
module_param_named(pb_fnmode, usbhid_pb_fnmode, int, 0644);
|
module_param_named(pb_fnmode, usbhid_pb_fnmode, int, 0644);
|
||||||
MODULE_PARM_DESC(pb_fnmode,
|
MODULE_PARM_DESC(pb_fnmode,
|
||||||
@ -195,6 +201,14 @@ static int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hid->quirks & HID_QUIRK_POWERBOOK_ISO_KEYBOARD) {
|
||||||
|
trans = find_translation(powerbook_iso_keyboard, usage->code);
|
||||||
|
if (trans) {
|
||||||
|
input_event(input, usage->type, trans->to, value);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +224,9 @@ static void hidinput_pb_setup(struct input_dev *input)
|
|||||||
|
|
||||||
for (trans = powerbook_numlock_keys; trans->from; trans++)
|
for (trans = powerbook_numlock_keys; trans->from; trans++)
|
||||||
set_bit(trans->to, input->keybit);
|
set_bit(trans->to, input->keybit);
|
||||||
|
|
||||||
|
for (trans = powerbook_iso_keyboard; trans->from; trans++)
|
||||||
|
set_bit(trans->to, input->keybit);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
|
static inline int hidinput_pb_event(struct hid_device *hid, struct input_dev *input,
|
||||||
|
@ -260,6 +260,7 @@ struct hid_item {
|
|||||||
#define HID_QUIRK_POWERBOOK_HAS_FN 0x00001000
|
#define HID_QUIRK_POWERBOOK_HAS_FN 0x00001000
|
||||||
#define HID_QUIRK_POWERBOOK_FN_ON 0x00002000
|
#define HID_QUIRK_POWERBOOK_FN_ON 0x00002000
|
||||||
#define HID_QUIRK_INVERT_HWHEEL 0x00004000
|
#define HID_QUIRK_INVERT_HWHEEL 0x00004000
|
||||||
|
#define HID_QUIRK_POWERBOOK_ISO_KEYBOARD 0x00008000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the global environment of the parser. This information is
|
* This is the global environment of the parser. This information is
|
||||||
|
@ -780,7 +780,7 @@ static int auerbuf_setup (pauerbufctl_t bcp, unsigned int numElements, unsigned
|
|||||||
|
|
||||||
bl_fail:/* not enough memory. Free allocated elements */
|
bl_fail:/* not enough memory. Free allocated elements */
|
||||||
dbg ("auerbuf_setup: no more memory");
|
dbg ("auerbuf_setup: no more memory");
|
||||||
kfree(bep);
|
auerbuf_free(bep);
|
||||||
auerbuf_free_buffers (bcp);
|
auerbuf_free_buffers (bcp);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
@ -311,6 +311,7 @@ static struct usb_device_id id_table_combined [] = {
|
|||||||
{ USB_DEVICE(FTDI_VID, FTDI_ACTZWAVE_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_ACTZWAVE_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) },
|
||||||
|
{ USB_DEVICE(FTDI_VID, FTDI_DMX4ALL) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
|
||||||
@ -511,6 +512,7 @@ static struct usb_device_id id_table_combined [] = {
|
|||||||
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13M_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13M_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13S_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13S_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13U_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_TACTRIX_OPENPORT_13U_PID) },
|
||||||
|
{ USB_DEVICE(ELEKTOR_VID, ELEKTOR_FT323R_PID) },
|
||||||
{ }, /* Optional parameter entry */
|
{ }, /* Optional parameter entry */
|
||||||
{ } /* Terminating entry */
|
{ } /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
@ -55,6 +55,9 @@
|
|||||||
/* iPlus device */
|
/* iPlus device */
|
||||||
#define FTDI_IPLUS_PID 0xD070 /* Product Id */
|
#define FTDI_IPLUS_PID 0xD070 /* Product Id */
|
||||||
|
|
||||||
|
/* DMX4ALL DMX Interfaces */
|
||||||
|
#define FTDI_DMX4ALL 0xC850
|
||||||
|
|
||||||
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
|
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
|
||||||
/* they use the ftdi chipset for the USB interface and the vendor id is the same */
|
/* they use the ftdi chipset for the USB interface and the vendor id is the same */
|
||||||
#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
|
#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
|
||||||
@ -174,10 +177,16 @@
|
|||||||
*/
|
*/
|
||||||
#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
|
#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FTDI USB UART chips used in construction projects from the
|
||||||
|
* Elektor Electronics magazine (http://elektor-electronics.co.uk)
|
||||||
|
*/
|
||||||
|
#define ELEKTOR_VID 0x0C7D
|
||||||
|
#define ELEKTOR_FT323R_PID 0x0005 /* RFID-Reader, issue 09-2006 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DSS-20 Sync Station for Sony Ericsson P800
|
* DSS-20 Sync Station for Sony Ericsson P800
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FTDI_DSS20_PID 0xFC82
|
#define FTDI_DSS20_PID 0xFC82
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -320,6 +320,7 @@ static struct usb_device_id ipaq_id_table [] = {
|
|||||||
{ USB_DEVICE(0x0B05, 0x9200) }, /* ASUS USB Sync */
|
{ USB_DEVICE(0x0B05, 0x9200) }, /* ASUS USB Sync */
|
||||||
{ USB_DEVICE(0x0B05, 0x9202) }, /* ASUS USB Sync */
|
{ USB_DEVICE(0x0B05, 0x9202) }, /* ASUS USB Sync */
|
||||||
{ USB_DEVICE(0x0BB4, 0x00CE) }, /* HTC USB Sync */
|
{ USB_DEVICE(0x0BB4, 0x00CE) }, /* HTC USB Sync */
|
||||||
|
{ USB_DEVICE(0x0BB4, 0x00CF) }, /* HTC USB Modem */
|
||||||
{ USB_DEVICE(0x0BB4, 0x0A01) }, /* PocketPC USB Sync */
|
{ USB_DEVICE(0x0BB4, 0x0A01) }, /* PocketPC USB Sync */
|
||||||
{ USB_DEVICE(0x0BB4, 0x0A02) }, /* PocketPC USB Sync */
|
{ USB_DEVICE(0x0BB4, 0x0A02) }, /* PocketPC USB Sync */
|
||||||
{ USB_DEVICE(0x0BB4, 0x0A03) }, /* PocketPC USB Sync */
|
{ USB_DEVICE(0x0BB4, 0x0A03) }, /* PocketPC USB Sync */
|
||||||
|
@ -1306,25 +1306,13 @@ UNUSUAL_DEV( 0x0fce, 0xe030, 0x0000, 0x0000,
|
|||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
US_FL_FIX_CAPACITY ),
|
US_FL_FIX_CAPACITY ),
|
||||||
|
|
||||||
/* Reported by Jan Mate <mate@fiit.stuba.sk> */
|
|
||||||
UNUSUAL_DEV( 0x0fce, 0xe030, 0x0000, 0x0000,
|
|
||||||
"Sony Ericsson",
|
|
||||||
"P990i",
|
|
||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
|
||||||
US_FL_FIX_CAPACITY ),
|
|
||||||
|
|
||||||
/* Reported by Jan Mate <mate@fiit.stuba.sk> */
|
|
||||||
UNUSUAL_DEV( 0x0fce, 0xe030, 0x0000, 0x0000,
|
|
||||||
"Sony Ericsson",
|
|
||||||
"P990i",
|
|
||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
|
||||||
US_FL_FIX_CAPACITY ),
|
|
||||||
|
|
||||||
/* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu>
|
/* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu>
|
||||||
* Tested on hardware version 1.10.
|
* Tested on hardware version 1.10.
|
||||||
* Entry is needed only for the initializer function override.
|
* Entry is needed only for the initializer function override.
|
||||||
|
* Devices with bcd > 110 seem to not need it while those
|
||||||
|
* with bcd < 110 appear to need it.
|
||||||
*/
|
*/
|
||||||
UNUSUAL_DEV( 0x1019, 0x0c55, 0x0110, 0x0110,
|
UNUSUAL_DEV( 0x1019, 0x0c55, 0x0000, 0x0110,
|
||||||
"Desknote",
|
"Desknote",
|
||||||
"UCR-61S2B",
|
"UCR-61S2B",
|
||||||
US_SC_DEVICE, US_PR_DEVICE, usb_stor_ucr61s2b_init,
|
US_SC_DEVICE, US_PR_DEVICE, usb_stor_ucr61s2b_init,
|
||||||
|
Loading…
Reference in New Issue
Block a user