Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e17f8af3 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge branch 'usb-linus' into usb-next



This is to pick up the changes to the option driver, which are needed
for follow-on patches from Johan.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parents a276400d 0b84704a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1744,6 +1744,11 @@ int pci_prepare_to_sleep(struct pci_dev *dev)
	if (target_state == PCI_POWER_ERROR)
		return -EIO;

	/* Some devices mustn't be in D3 during system sleep */
	if (target_state == PCI_D3hot &&
			(dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP))
		return 0;

	pci_enable_wake(dev, target_state, device_may_wakeup(&dev->dev));

	error = pci_set_power_state(dev, target_state);
+26 −0
Original line number Diff line number Diff line
@@ -2929,6 +2929,32 @@ static void __devinit disable_igfx_irq(struct pci_dev *dev)
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);

/*
 * The Intel 6 Series/C200 Series chipset's EHCI controllers on many
 * ASUS motherboards will cause memory corruption or a system crash
 * if they are in D3 while the system is put into S3 sleep.
 */
static void __devinit asus_ehci_no_d3(struct pci_dev *dev)
{
	const char *sys_info;
	static const char good_Asus_board[] = "P8Z68-V";

	if (dev->dev_flags & PCI_DEV_FLAGS_NO_D3_DURING_SLEEP)
		return;
	if (dev->subsystem_vendor != PCI_VENDOR_ID_ASUSTEK)
		return;
	sys_info = dmi_get_system_info(DMI_BOARD_NAME);
	if (sys_info && memcmp(sys_info, good_Asus_board,
			sizeof(good_Asus_board) - 1) == 0)
		return;

	dev_info(&dev->dev, "broken D3 during system sleep on ASUS\n");
	dev->dev_flags |= PCI_DEV_FLAGS_NO_D3_DURING_SLEEP;
	device_set_wakeup_capable(&dev->dev, false);
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c26, asus_ehci_no_d3);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1c2d, asus_ehci_no_d3);

static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
			  struct pci_fixup *end)
{
+9 −0
Original line number Diff line number Diff line
@@ -55,6 +55,15 @@ static const struct usb_device_id wdm_ids[] = {
		.bInterfaceSubClass = 1,
		.bInterfaceProtocol = 9, /* NOTE: CDC ECM control interface! */
	},
	{
		 /* Vodafone/Huawei K5005 (12d1:14c8) and similar modems */
		.match_flags        = USB_DEVICE_ID_MATCH_VENDOR |
				      USB_DEVICE_ID_MATCH_INT_INFO,
		.idVendor           = HUAWEI_VENDOR_ID,
		.bInterfaceClass    = USB_CLASS_VENDOR_SPEC,
		.bInterfaceSubClass = 1,
		.bInterfaceProtocol = 57, /* NOTE: CDC ECM control interface! */
	},
	{ }
};

+0 −9
Original line number Diff line number Diff line
@@ -493,15 +493,6 @@ static int hcd_pci_suspend_noirq(struct device *dev)

	pci_save_state(pci_dev);

	/*
	 * Some systems crash if an EHCI controller is in D3 during
	 * a sleep transition.  We have to leave such controllers in D0.
	 */
	if (hcd->broken_pci_sleep) {
		dev_dbg(dev, "Staying in PCI D0\n");
		return retval;
	}

	/* If the root hub is dead rather than suspended, disallow remote
	 * wakeup.  usb_hc_died() should ensure that both hosts are marked as
	 * dying, so we only need to check the primary roothub.
+0 −6
Original line number Diff line number Diff line
@@ -599,12 +599,6 @@ usba_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)

	spin_lock_irqsave(&ep->udc->lock, flags);

	if (ep->ep.desc) {
		spin_unlock_irqrestore(&ep->udc->lock, flags);
		DBG(DBG_ERR, "ep%d already enabled\n", ep->index);
		return -EBUSY;
	}

	ep->ep.desc = desc;
	ep->ep.maxpacket = maxpacket;

Loading