Эх сурвалжийг харах

usb: chipidea: add TPL support for targeted hosts

For OTG and Embedded hosts, they may need TPL (Targeted Peripheral List)
for usb certification and other vender specific requirements, the
platform can tell chipidea core driver if it supports tpl through DT
or platform data.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Peter Chen 11 жил өмнө
parent
commit
f6a9ff0783

+ 4 - 0
drivers/usb/chipidea/core.c

@@ -473,6 +473,10 @@ static int ci_get_platdata(struct device *dev,
 				PTR_ERR(platdata->reg_vbus));
 				PTR_ERR(platdata->reg_vbus));
 			return PTR_ERR(platdata->reg_vbus);
 			return PTR_ERR(platdata->reg_vbus);
 		}
 		}
+		/* Get TPL support */
+		if (!platdata->tpl_support)
+			platdata->tpl_support =
+				of_usb_host_tpl_support(dev->of_node);
 	}
 	}
 
 
 	if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL)
 	if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL)

+ 1 - 0
drivers/usb/chipidea/host.c

@@ -60,6 +60,7 @@ static int host_start(struct ci_hdrc *ci)
 
 
 	hcd->power_budget = ci->platdata->power_budget;
 	hcd->power_budget = ci->platdata->power_budget;
 	hcd->phy = ci->transceiver;
 	hcd->phy = ci->transceiver;
+	hcd->tpl_support = ci->platdata->tpl_support;
 
 
 	ehci = hcd_to_ehci(hcd);
 	ehci = hcd_to_ehci(hcd);
 	ehci->caps = ci->hw_bank.cap;
 	ehci->caps = ci->hw_bank.cap;

+ 1 - 0
include/linux/usb/chipidea.h

@@ -31,6 +31,7 @@ struct ci_hdrc_platform_data {
 #define CI_HDRC_CONTROLLER_STOPPED_EVENT	1
 #define CI_HDRC_CONTROLLER_STOPPED_EVENT	1
 	void	(*notify_event) (struct ci_hdrc *ci, unsigned event);
 	void	(*notify_event) (struct ci_hdrc *ci, unsigned event);
 	struct regulator	*reg_vbus;
 	struct regulator	*reg_vbus;
+	bool			tpl_support;
 };
 };
 
 
 /* Default offset of capability registers */
 /* Default offset of capability registers */