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

Commit fefb8275 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull USB fixes from Greg KH:
 "Here are a number of USB fixes for 3.15-rc3.  The majority are gadget
  fixes, as we didn't get any of those in for 3.15-rc2.  The others are
  all over the place, and there's a number of new device id addtions as
  well."

* tag 'usb-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (35 commits)
  usb: option: add and update a number of CMOTech devices
  usb: option: add Alcatel L800MA
  usb: option: add Olivetti Olicard 500
  usb: qcserial: add Sierra Wireless MC7305/MC7355
  usb: qcserial: add Sierra Wireless MC73xx
  usb: qcserial: add Sierra Wireless EM7355
  USB: io_ti: fix firmware download on big-endian machines
  usb/xhci: fix compilation warning when !CONFIG_PCI && !CONFIG_PM
  xhci: extend quirk for Renesas cards
  xhci: Switch Intel Lynx Point ports to EHCI on shutdown.
  usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb
  phy: core: make NULL a valid phy reference if !CONFIG_GENERIC_PHY
  phy: fix kernel oops in phy_lookup()
  phy: restore OMAP_CONTROL_PHY dependencies
  phy: exynos: fix building as a module
  USB: serial: fix sysfs-attribute removal deadlock
  usb: wusbcore: fix panic in wusbhc_chid_set
  usb: wusbcore: convert nested lock to use spin_lock instead of spin_lock_irq
  uwb: don't call spin_unlock_irq in a USB completion handler
  usb: chipidea: coordinate usb phy initialization for different phy type
  ...
parents e9dba837 34f972d6
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ config PHY_MVEBU_SATA


config OMAP_CONTROL_PHY
config OMAP_CONTROL_PHY
	tristate "OMAP CONTROL PHY Driver"
	tristate "OMAP CONTROL PHY Driver"
	depends on ARCH_OMAP2PLUS || COMPILE_TEST
	help
	help
	  Enable this to add support for the PHY part present in the control
	  Enable this to add support for the PHY part present in the control
	  module. This driver has API to power on the USB2 PHY and to write to
	  module. This driver has API to power on the USB2 PHY and to write to
+5 −4
Original line number Original line Diff line number Diff line
@@ -13,8 +13,9 @@ obj-$(CONFIG_TI_PIPE3) += phy-ti-pipe3.o
obj-$(CONFIG_TWL4030_USB)		+= phy-twl4030-usb.o
obj-$(CONFIG_TWL4030_USB)		+= phy-twl4030-usb.o
obj-$(CONFIG_PHY_EXYNOS5250_SATA)	+= phy-exynos5250-sata.o
obj-$(CONFIG_PHY_EXYNOS5250_SATA)	+= phy-exynos5250-sata.o
obj-$(CONFIG_PHY_SUN4I_USB)		+= phy-sun4i-usb.o
obj-$(CONFIG_PHY_SUN4I_USB)		+= phy-sun4i-usb.o
obj-$(CONFIG_PHY_SAMSUNG_USB2)		+= phy-samsung-usb2.o
obj-$(CONFIG_PHY_SAMSUNG_USB2)		+= phy-exynos-usb2.o
obj-$(CONFIG_PHY_EXYNOS4210_USB2)	+= phy-exynos4210-usb2.o
phy-exynos-usb2-y			+= phy-samsung-usb2.o
obj-$(CONFIG_PHY_EXYNOS4X12_USB2)	+= phy-exynos4x12-usb2.o
phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2)	+= phy-exynos4210-usb2.o
obj-$(CONFIG_PHY_EXYNOS5250_USB2)	+= phy-exynos5250-usb2.o
phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4X12_USB2)	+= phy-exynos4x12-usb2.o
phy-exynos-usb2-$(CONFIG_PHY_EXYNOS5250_USB2)	+= phy-exynos5250-usb2.o
obj-$(CONFIG_PHY_XGENE)			+= phy-xgene.o
obj-$(CONFIG_PHY_XGENE)			+= phy-xgene.o
+3 −0
Original line number Original line Diff line number Diff line
@@ -64,6 +64,9 @@ static struct phy *phy_lookup(struct device *device, const char *port)
	class_dev_iter_init(&iter, phy_class, NULL, NULL);
	class_dev_iter_init(&iter, phy_class, NULL, NULL);
	while ((dev = class_dev_iter_next(&iter))) {
	while ((dev = class_dev_iter_next(&iter))) {
		phy = to_phy(dev);
		phy = to_phy(dev);

		if (!phy->init_data)
			continue;
		count = phy->init_data->num_consumers;
		count = phy->init_data->num_consumers;
		consumers = phy->init_data->consumers;
		consumers = phy->init_data->consumers;
		while (count--) {
		while (count--) {
+34 −3
Original line number Original line Diff line number Diff line
@@ -276,6 +276,39 @@ static void hw_phymode_configure(struct ci_hdrc *ci)
	}
	}
}
}


/**
 * ci_usb_phy_init: initialize phy according to different phy type
 * @ci: the controller
  *
 * This function returns an error code if usb_phy_init has failed
 */
static int ci_usb_phy_init(struct ci_hdrc *ci)
{
	int ret;

	switch (ci->platdata->phy_mode) {
	case USBPHY_INTERFACE_MODE_UTMI:
	case USBPHY_INTERFACE_MODE_UTMIW:
	case USBPHY_INTERFACE_MODE_HSIC:
		ret = usb_phy_init(ci->transceiver);
		if (ret)
			return ret;
		hw_phymode_configure(ci);
		break;
	case USBPHY_INTERFACE_MODE_ULPI:
	case USBPHY_INTERFACE_MODE_SERIAL:
		hw_phymode_configure(ci);
		ret = usb_phy_init(ci->transceiver);
		if (ret)
			return ret;
		break;
	default:
		ret = usb_phy_init(ci->transceiver);
	}

	return ret;
}

/**
/**
 * hw_device_reset: resets chip (execute without interruption)
 * hw_device_reset: resets chip (execute without interruption)
 * @ci: the controller
 * @ci: the controller
@@ -543,8 +576,6 @@ static int ci_hdrc_probe(struct platform_device *pdev)
		return -ENODEV;
		return -ENODEV;
	}
	}


	hw_phymode_configure(ci);

	if (ci->platdata->phy)
	if (ci->platdata->phy)
		ci->transceiver = ci->platdata->phy;
		ci->transceiver = ci->platdata->phy;
	else
	else
@@ -564,7 +595,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
		return -EPROBE_DEFER;
		return -EPROBE_DEFER;
	}
	}


	ret = usb_phy_init(ci->transceiver);
	ret = ci_usb_phy_init(ci);
	if (ret) {
	if (ret) {
		dev_err(dev, "unable to init phy: %d\n", ret);
		dev_err(dev, "unable to init phy: %d\n", ret);
		return ret;
		return ret;
+1 −1
Original line number Original line Diff line number Diff line
@@ -821,6 +821,7 @@ static void dwc3_complete(struct device *dev)


	spin_lock_irqsave(&dwc->lock, flags);
	spin_lock_irqsave(&dwc->lock, flags);


	dwc3_event_buffers_setup(dwc);
	switch (dwc->dr_mode) {
	switch (dwc->dr_mode) {
	case USB_DR_MODE_PERIPHERAL:
	case USB_DR_MODE_PERIPHERAL:
	case USB_DR_MODE_OTG:
	case USB_DR_MODE_OTG:
@@ -828,7 +829,6 @@ static void dwc3_complete(struct device *dev)
		/* FALLTHROUGH */
		/* FALLTHROUGH */
	case USB_DR_MODE_HOST:
	case USB_DR_MODE_HOST:
	default:
	default:
		dwc3_event_buffers_setup(dwc);
		break;
		break;
	}
	}


Loading