Commit f87c8e80 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 91f7b5c4 14e51f28
...@@ -46,6 +46,10 @@ Abstract Control Model (USB CDC ACM) specification. ...@@ -46,6 +46,10 @@ Abstract Control Model (USB CDC ACM) specification.
3Com USR ISDN Pro TA 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 Unfortunately many modems and most ISDN TAs use proprietary interfaces and
thus won't work with this drivers. Check for ACM compliance before buying. 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[] = { ...@@ -217,6 +217,7 @@ static const struct quirk_printer_struct quirk_printers[] = {
{ 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */ { 0x0409, 0xbef4, USBLP_QUIRK_BIDIR }, /* NEC Picty760 (HP OEM) */
{ 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */ { 0x0409, 0xf0be, USBLP_QUIRK_BIDIR }, /* NEC Picty920 (HP OEM) */
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (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 } { 0, 0 }
}; };
......
...@@ -268,6 +268,7 @@ static void ep_device_release(struct device *dev) ...@@ -268,6 +268,7 @@ static void ep_device_release(struct device *dev)
struct ep_device *ep_dev = to_ep_device(dev); struct ep_device *ep_dev = to_ep_device(dev);
dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id); dev_dbg(dev, "%s called for %s\n", __FUNCTION__, dev->bus_id);
endpoint_free_minor(ep_dev);
kfree(ep_dev); kfree(ep_dev);
} }
...@@ -349,7 +350,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint) ...@@ -349,7 +350,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress); sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
sysfs_remove_link(&ep_dev->dev.parent->kobj, name); sysfs_remove_link(&ep_dev->dev.parent->kobj, name);
sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp); sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
endpoint_free_minor(ep_dev);
device_unregister(&ep_dev->dev); device_unregister(&ep_dev->dev);
endpoint->ep_dev = NULL; endpoint->ep_dev = NULL;
destroy_endpoint_class(); destroy_endpoint_class();
......
This diff is collapsed.
...@@ -175,6 +175,9 @@ struct omap_udc { ...@@ -175,6 +175,9 @@ struct omap_udc {
unsigned ep0_reset_config:1; unsigned ep0_reset_config:1;
unsigned ep0_setup:1; unsigned ep0_setup:1;
struct completion *done; 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) ...@@ -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 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; int port;
char *sys_info;
static char bad_Asus_board[] = "A7V8X";
/* One of Asus's motherboards has a bug which causes it to /* One of Asus's motherboards has a bug which causes it to
* wake up immediately from suspend-to-RAM if any of the ports * wake up immediately from suspend-to-RAM if any of the ports
* are connected. In such cases we will not set EGSM. * 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) { for (port = 0; port < uhci->rh_numports; ++port) {
if (inw(uhci->io_addr + USBPORTSC1 + port * 2) & if (inw(uhci->io_addr + USBPORTSC1 + port * 2) &
USBPORTSC_CCS) USBPORTSC_CCS)
...@@ -265,7 +257,9 @@ __acquires(uhci->lock) ...@@ -265,7 +257,9 @@ __acquires(uhci->lock)
int_enable = USBINTR_RESUME; int_enable = USBINTR_RESUME;
if (remote_wakeup_is_broken(uhci)) if (remote_wakeup_is_broken(uhci))
egsm_enable = 0; 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; uhci->working_RD = int_enable = 0;
outw(int_enable, uhci->io_addr + USBINTR); outw(int_enable, uhci->io_addr + USBINTR);
......
...@@ -403,7 +403,7 @@ sisusbcon_putc(struct vc_data *c, int ch, int y, int x) ...@@ -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), 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); mutex_unlock(&sisusb->lock);
} }
...@@ -438,7 +438,7 @@ sisusbcon_putcs(struct vc_data *c, const unsigned short *s, ...@@ -438,7 +438,7 @@ sisusbcon_putcs(struct vc_data *c, const unsigned short *s,
} }
sisusb_copy_memory(sisusb, (char *)SISUSB_VADDR(x, y), 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); mutex_unlock(&sisusb->lock);
} }
...@@ -492,7 +492,7 @@ sisusbcon_clear(struct vc_data *c, int y, int x, int height, int width) ...@@ -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), 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); mutex_unlock(&sisusb->lock);
} }
...@@ -564,7 +564,7 @@ sisusbcon_bmove(struct vc_data *c, int sy, int sx, ...@@ -564,7 +564,7 @@ sisusbcon_bmove(struct vc_data *c, int sy, int sx,
sisusb_copy_memory(sisusb, (unsigned char *)SISUSB_VADDR(dx, dy), 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); mutex_unlock(&sisusb->lock);
} }
...@@ -612,7 +612,7 @@ sisusbcon_switch(struct vc_data *c) ...@@ -612,7 +612,7 @@ sisusbcon_switch(struct vc_data *c)
length); length);
sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin, sisusb_copy_memory(sisusb, (unsigned char *)c->vc_origin,
(u32)SISUSB_HADDR(0, 0), (long)SISUSB_HADDR(0, 0),
length, &written); length, &written);
mutex_unlock(&sisusb->lock); mutex_unlock(&sisusb->lock);
...@@ -939,7 +939,7 @@ sisusbcon_scroll_area(struct vc_data *c, struct sisusb_usb_data *sisusb, ...@@ -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), 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); mutex_unlock(&sisusb->lock);
......
...@@ -920,7 +920,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) ...@@ -920,7 +920,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
goto out2; goto out2;
if ((ret = asix_write_cmd(dev, AX_CMD_SW_PHY_SELECT, 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); dbg("Select PHY #1 failed: %d", ret);
goto out2; goto out2;
} }
......
...@@ -170,7 +170,7 @@ config USB_SERIAL_FTDI_SIO ...@@ -170,7 +170,7 @@ config USB_SERIAL_FTDI_SIO
config USB_SERIAL_FUNSOFT config USB_SERIAL_FUNSOFT
tristate "USB Fundamental Software Dongle Driver" tristate "USB Fundamental Software Dongle Driver"
depends on USB_SERIAL depends on USB_SERIAL && !(SPARC || SPARC64)
---help--- ---help---
Say Y here if you want to use the Fundamental Software dongle. 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) ...@@ -625,6 +625,9 @@ static int option_send_setup(struct usb_serial_port *port)
dbg("%s", __FUNCTION__); dbg("%s", __FUNCTION__);
if (port->number != 0)
return 0;
portdata = usb_get_serial_port_data(port); portdata = usb_get_serial_port_data(port);
if (port->tty) { if (port->tty) {
......
...@@ -728,7 +728,7 @@ UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999, ...@@ -728,7 +728,7 @@ UNUSUAL_DEV( 0x05ac, 0x1204, 0x0000, 0x9999,
"Apple", "Apple",
"iPod", "iPod",
US_SC_DEVICE, US_PR_DEVICE, NULL, 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, UNUSUAL_DEV( 0x05ac, 0x1205, 0x0000, 0x9999,
"Apple", "Apple",
...@@ -1358,6 +1358,21 @@ UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110, ...@@ -1358,6 +1358,21 @@ UNUSUAL_DEV( 0x1370, 0x6828, 0x0110, 0x0110,
US_SC_DEVICE, US_PR_DEVICE, NULL, US_SC_DEVICE, US_PR_DEVICE, NULL,
US_FL_IGNORE_RESIDUE ), 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> /* patch submitted by Davide Perini <perini.davide@dpsoftware.org>
* and Renato Perini <rperini@email.it> * and Renato Perini <rperini@email.it>
*/ */
......
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