You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -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: asix: Fix AX88772 device PHY selection USB: usblp.c - add Kyocera Mita FS 820 to list of "quirky" printers sisusb_con warning fixes USB: Fixed bug in endpoint release function. USB: small update to Documentation/usb/acm.txt USB storage: fix ipod ejecting issue USB Storage: unusual_devs: add supertop drives USB: omap_udc build fixes (sync with linux-omap) USB: funsoft is borken on sparc USB: fix interaction between different interfaces in an "Option" usb device UHCI: support device_may_wakeup UHCI: make test for ASUS motherboard more specific
This commit is contained in:
@@ -46,6 +46,10 @@ Abstract Control Model (USB CDC ACM) specification.
|
||||
|
||||
3Com USR ISDN Pro TA
|
||||
|
||||
Some cell phones also connect via USB. I know the following phones work:
|
||||
|
||||
SonyEricsson K800i
|
||||
|
||||
Unfortunately many modems and most ISDN TAs use proprietary interfaces and
|
||||
thus won't work with this drivers. Check for ACM compliance before buying.
|
||||
|
||||
|
||||
@@ -217,6 +217,7 @@ static const struct quirk_printer_struct quirk_printers[] = {
|
||||
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
|
||||
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
|
||||
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
|
||||
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820, by zut <kernel@zut.de> */
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
@@ -268,6 +268,7 @@ static void ep_device_release(struct device *dev)
|
||||
struct ep_device *ep_dev = to_ep_device(dev);
|
||||
|
||||
dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id);
|
||||
endpoint_free_minor(ep_dev);
|
||||
kfree(ep_dev);
|
||||
}
|
||||
|
||||
@@ -349,7 +350,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
|
||||
sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
|
||||
sysfs_remove_link(&ep_dev->dev.parent->kobj, name);
|
||||
sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
|
||||
endpoint_free_minor(ep_dev);
|
||||
device_unregister(&ep_dev->dev);
|
||||
endpoint->ep_dev = NULL;
|
||||
destroy_endpoint_class();
|
||||
|
||||
+192
-53
File diff suppressed because it is too large
Load Diff
@@ -175,6 +175,9 @@ struct omap_udc {
|
||||
unsigned ep0_reset_config:1;
|
||||
unsigned ep0_setup:1;
|
||||
struct completion *done;
|
||||
struct clk *dc_clk;
|
||||
struct clk *hhc_clk;
|
||||
unsigned clk_requested:1;
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
@@ -209,24 +209,16 @@ static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci)
|
||||
|
||||
static int remote_wakeup_is_broken(struct uhci_hcd *uhci)
|
||||
{
|
||||
static struct dmi_system_id broken_wakeup_table[] = {
|
||||
{
|
||||
.ident = "Asus A7V8X",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "A7V8X"),
|
||||
DMI_MATCH(DMI_BOARD_VERSION, "REV 1.xx"),
|
||||
}
|
||||
},
|
||||
{ }
|
||||
};
|
||||
int port;
|
||||
char *sys_info;
|
||||
static char bad_Asus_board[] = "A7V8X";
|
||||
|
||||
/* One of Asus's motherboards has a bug which causes it to
|
||||
* wake up immediately from suspend-to-RAM if any of the ports
|
||||
* are connected. In such cases we will not set EGSM.
|
||||
*/
|
||||
if (dmi_check_system(broken_wakeup_table)) {
|
||||
sys_info = dmi_get_system_info(DMI_BOARD_NAME);
|
||||
if (sys_info && !strcmp(sys_info, bad_Asus_board)) {
|
||||
for (port = 0; port < uhci->rh_numports; ++port) {
|
||||
if (inw(uhci->io_addr + USBPORTSC1 + port * 2) &
|
||||
USBPORTSC_CCS)
|
||||
@@ -265,7 +257,9 @@ __acquires(uhci->lock)
|
||||
int_enable = USBINTR_RESUME;
|
||||
if (remote_wakeup_is_broken(uhci))
|
||||
egsm_enable = 0;
|
||||
if (resume_detect_interrupts_are_broken(uhci) || !egsm_enable)
|
||||
if (resume_detect_interrupts_are_broken(uhci) || !egsm_enable ||
|
||||
!device_may_wakeup(
|
||||
&uhci_to_hcd(uhci)->self.root_hub->dev))
|
||||
uhci->working_RD = int_enable = 0;
|
||||
|
||||
outw(int_enable, uhci->io_addr + USBINTR);
|
||||
|
||||
@@ -403,7 +403,7 @@ sisusbcon_putc(struct vc_data *c, int ch, int y, int x)
|
||||
|
||||
|
||||
sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
|
||||
(u32)SISUSB_HADDR(x, y), 2, &written);
|
||||
(long)SISUSB_HADDR(x, y), 2, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
}
|
||||
@@ -438,7 +438,7 @@ sisusbcon_putcs(struct vc_data *c, const unsigned short *s,
|
||||
}
|
||||
|
||||
sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y),
|
||||
(u32)SISUSB_HADDR(x, y), count * 2, &written);
|
||||
(long)SISUSB_HADDR(x, y), count * 2, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
}
|
||||
@@ -492,7 +492,7 @@ sisusbcon_clear(struct vc_data *c, int y, int x, int height, int width)
|
||||
|
||||
|
||||
sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(x, y),
|
||||
(u32)SISUSB_HADDR(x, y), length, &written);
|
||||
(long)SISUSB_HADDR(x, y), length, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
}
|
||||
@@ -564,7 +564,7 @@ sisusbcon_bmove(struct vc_data *c, int sy, int sx,
|
||||
|
||||
|
||||
sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(dx, dy),
|
||||
(u32)SISUSB_HADDR(dx, dy), length, &written);
|
||||
(long)SISUSB_HADDR(dx, dy), length, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
}
|
||||
@@ -612,7 +612,7 @@ sisusbcon_switch(struct vc_data *c)
|
||||
length);
|
||||
|
||||
sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin,
|
||||
(u32)SISUSB_HADDR(0, 0),
|
||||
(long)SISUSB_HADDR(0, 0),
|
||||
length, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
@@ -939,7 +939,7 @@ sisusbcon_scroll_area(struct vc_data *c, struct sisusb_usb_data *sisusb,
|
||||
}
|
||||
|
||||
sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(0, t),
|
||||
(u32)SISUSB_HADDR(0, t), length, &written);
|
||||
(long)SISUSB_HADDR(0, t), length, &written);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
|
||||
|
||||
@@ -920,7 +920,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
|
||||
goto out2;
|
||||
|
||||
if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT,
|
||||
0x0000, 0, 0, buf)) < 0) {
|
||||
1, 0, 0, buf)) < 0) {
|
||||
dbg("Select PHY #1 failed: %d", ret);
|
||||
goto out2;
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ config USB_SERIAL_FTDI_SIO
|
||||
|
||||
config USB_SERIAL_FUNSOFT
|
||||
tristate "USB Fundamental Software Dongle Driver"
|
||||
depends on USB_SERIAL
|
||||
depends on USB_SERIAL && !(SPARC || SPARC64)
|
||||
---help---
|
||||
Say Y here if you want to use the Fundamental Software dongle.
|
||||
|
||||
|
||||
@@ -625,6 +625,9 @@ static int option_send_setup(struct usb_serial_port *port)
|
||||
|
||||
dbg("%s", __FUNCTION__);
|
||||
|
||||
if (port->number != 0)
|
||||
return 0;
|
||||
|
||||
portdata = usb_get_serial_port_data(port);
|
||||
|
||||
if (port->tty) {
|
||||
|
||||
@@ -728,7 +728,7 @@ UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999,
|
||||
"Apple",
|
||||
"iPod",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_FIX_CAPACITY ),
|
||||
US_FL_FIX_CAPACITY | US_FL_NOT_LOCKABLE ),
|
||||
|
||||
UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999,
|
||||
"Apple",
|
||||
@@ -1358,6 +1358,21 @@ UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110,
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_IGNORE_RESIDUE ),
|
||||
|
||||
/* Reported by Francesco Foresti <frafore@tiscali.it> */
|
||||
UNUSUAL_DEV( 0x14cd, 0x6600, 0x0201, 0x0201,
|
||||
"Super Top",
|
||||
"IDE DEVICE",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_IGNORE_RESIDUE ),
|
||||
|
||||
/* Reported by Robert Schedel <r.schedel@yahoo.de>
|
||||
* Note: this is a 'super top' device like the above 14cd/6600 device */
|
||||
UNUSUAL_DEV( 0x1652, 0x6600, 0x0201, 0x0201,
|
||||
"Teac",
|
||||
"HD-35PUK-B",
|
||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||
US_FL_IGNORE_RESIDUE ),
|
||||
|
||||
/* patch submitted by Davide Perini <perini.davide@dpsoftware.org>
|
||||
* and Renato Perini <rperini@email.it>
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user