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

Merge tag 'usb-ci-v5.8-rc1' of...

Merge tag 'usb-ci-v5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb into usb-next

Peter writes:

- Some improvments for ci_hdrc_usb2.c
- Support imx7d USB charger
- Add software sg support for UDC
- Enable user trigger role switch

* tag 'usb-ci-v5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb:
  usb: chipidea: Enable user-space triggered role-switching
  usb: chipidea: udc: add software sg list support
  usb: chipidea: usbmisc_imx: using different ops for imx7d and imx7ulp
  usb: chipidea: pull down dp for possible charger detection operation
  usb: chipidea: introduce imx7d USB charger detection
  usb: chipidea: introduce CI_HDRC_CONTROLLER_VBUS_EVENT glue layer use
  usb: chipidea: usb2: remove unneeded semicolon
  usb: chipidea: allow disabling glue drivers if EMBEDDED
  usb: chipidea: usb2: absorb zevio glue driver
  usb: chipidea: usb2: make clock optional
  usb: chipidea: usb2: fix formatting
  usb: chipidea: usb2: constify zynq_pdata
  usb: chipidea: core: show the real pointer value for register
  usb: chipidea: core: refine the description for this driver
  usb: chipidea: udc: fix the kernel doc for udc.h
parents e4befc12 6dbbbccd
Loading
Loading
Loading
Loading
+26 −11
Original line number Diff line number Diff line
@@ -18,17 +18,6 @@ config USB_CHIPIDEA

if USB_CHIPIDEA

config USB_CHIPIDEA_OF
	tristate
	depends on OF
	default USB_CHIPIDEA

config USB_CHIPIDEA_PCI
	tristate
	depends on USB_PCI
	depends on NOP_USB_XCEIV
	default USB_CHIPIDEA

config USB_CHIPIDEA_UDC
	bool "ChipIdea device controller"
	depends on USB_GADGET
@@ -43,4 +32,30 @@ config USB_CHIPIDEA_HOST
	help
	  Say Y here to enable host controller functionality of the
	  ChipIdea driver.

config USB_CHIPIDEA_PCI
	tristate "Enable PCI glue driver" if EMBEDDED
	depends on USB_PCI
	depends on NOP_USB_XCEIV
	default USB_CHIPIDEA

config USB_CHIPIDEA_MSM
	tristate "Enable MSM hsusb glue driver" if EMBEDDED
	default USB_CHIPIDEA

config USB_CHIPIDEA_IMX
	tristate "Enable i.MX USB glue driver" if EMBEDDED
	depends on OF
	default USB_CHIPIDEA

config USB_CHIPIDEA_GENERIC
	tristate "Enable generic USB2 glue driver" if EMBEDDED
	default USB_CHIPIDEA

config USB_CHIPIDEA_TEGRA
	tristate "Enable Tegra UDC glue driver" if EMBEDDED
	depends on OF
	depends on USB_CHIPIDEA_UDC
	default USB_CHIPIDEA

endif
+5 −8
Original line number Diff line number Diff line
@@ -8,11 +8,8 @@ ci_hdrc-$(CONFIG_USB_OTG_FSM) += otg_fsm.o

# Glue/Bridge layers go here

obj-$(CONFIG_USB_CHIPIDEA)	+= ci_hdrc_usb2.o
obj-$(CONFIG_USB_CHIPIDEA)	+= ci_hdrc_msm.o
obj-$(CONFIG_USB_CHIPIDEA)	+= ci_hdrc_zevio.o

obj-$(CONFIG_USB_CHIPIDEA_GENERIC)	+= ci_hdrc_usb2.o
obj-$(CONFIG_USB_CHIPIDEA_MSM)		+= ci_hdrc_msm.o
obj-$(CONFIG_USB_CHIPIDEA_PCI)		+= ci_hdrc_pci.o

obj-$(CONFIG_USB_CHIPIDEA_OF)	+= usbmisc_imx.o ci_hdrc_imx.o
obj-$(CONFIG_USB_CHIPIDEA_OF)	+= ci_hdrc_tegra.o
obj-$(CONFIG_USB_CHIPIDEA_IMX)		+= ci_hdrc_imx.o usbmisc_imx.o
obj-$(CONFIG_USB_CHIPIDEA_TEGRA)	+= ci_hdrc_tegra.o
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#define TD_PAGE_COUNT      5
#define CI_HDRC_PAGE_SIZE  4096ul /* page size for TD's */
#define ENDPT_MAX          32
#define CI_MAX_BUF_SIZE	(TD_PAGE_COUNT * CI_HDRC_PAGE_SIZE)

/******************************************************************************
 * REGISTERS
+12 −1
Original line number Diff line number Diff line
@@ -271,6 +271,7 @@ static int ci_hdrc_imx_notify_event(struct ci_hdrc *ci, unsigned int event)
	struct device *dev = ci->dev->parent;
	struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
	int ret = 0;
	struct imx_usbmisc_data *mdata = data->usbmisc_data;

	switch (event) {
	case CI_HDRC_IMX_HSIC_ACTIVE_EVENT:
@@ -284,11 +285,19 @@ static int ci_hdrc_imx_notify_event(struct ci_hdrc *ci, unsigned int event)
		}
		break;
	case CI_HDRC_IMX_HSIC_SUSPEND_EVENT:
		ret = imx_usbmisc_hsic_set_connect(data->usbmisc_data);
		ret = imx_usbmisc_hsic_set_connect(mdata);
		if (ret)
			dev_err(dev,
				"hsic_set_connect failed, err=%d\n", ret);
		break;
	case CI_HDRC_CONTROLLER_VBUS_EVENT:
		if (ci->vbus_active)
			ret = imx_usbmisc_charger_detection(mdata, true);
		else
			ret = imx_usbmisc_charger_detection(mdata, false);
		if (ci->usb_phy)
			schedule_work(&ci->usb_phy->chg_work);
		break;
	default:
		break;
	}
@@ -414,6 +423,8 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev)
	}

	pdata.usb_phy = data->phy;
	if (data->usbmisc_data)
		data->usbmisc_data->usb_phy = data->phy;

	if ((of_device_is_compatible(np, "fsl,imx53-usb") ||
	     of_device_is_compatible(np, "fsl,imx51-usb")) && pdata.usb_phy &&
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ struct imx_usbmisc_data {
	unsigned int hsic:1; /* HSIC controlller */
	unsigned int ext_id:1; /* ID from exteranl event */
	unsigned int ext_vbus:1; /* Vbus from exteranl event */
	struct usb_phy *usb_phy;
};

int imx_usbmisc_init(struct imx_usbmisc_data *data);
@@ -31,5 +32,6 @@ int imx_usbmisc_init_post(struct imx_usbmisc_data *data);
int imx_usbmisc_set_wakeup(struct imx_usbmisc_data *data, bool enabled);
int imx_usbmisc_hsic_set_connect(struct imx_usbmisc_data *data);
int imx_usbmisc_hsic_set_clk(struct imx_usbmisc_data *data, bool on);
int imx_usbmisc_charger_detection(struct imx_usbmisc_data *data, bool connect);

#endif /* __DRIVER_USB_CHIPIDEA_CI_HDRC_IMX_H */
Loading