|
@@ -425,6 +425,9 @@ void ci_platform_configure(struct ci_hdrc *ci)
|
|
|
|
|
|
if (ci->platdata->flags & CI_HDRC_SET_NON_ZERO_TTHA)
|
|
|
hw_write(ci, OP_TTCTRL, TTCTRL_TTHA_MASK, TTCTRL_TTHA);
|
|
|
+
|
|
|
+ hw_write(ci, OP_USBCMD, 0xff0000, ci->platdata->itc_setting << 16);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -576,6 +579,8 @@ static irqreturn_t ci_irq(int irq, void *data)
|
|
|
static int ci_get_platdata(struct device *dev,
|
|
|
struct ci_hdrc_platform_data *platdata)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
if (!platdata->phy_mode)
|
|
|
platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
|
|
|
|
|
@@ -607,6 +612,17 @@ static int ci_get_platdata(struct device *dev,
|
|
|
if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL)
|
|
|
platdata->flags |= CI_HDRC_FORCE_FULLSPEED;
|
|
|
|
|
|
+ platdata->itc_setting = 1;
|
|
|
+ if (of_find_property(dev->of_node, "itc-setting", NULL)) {
|
|
|
+ ret = of_property_read_u32(dev->of_node, "itc-setting",
|
|
|
+ &platdata->itc_setting);
|
|
|
+ if (ret) {
|
|
|
+ dev_err(dev,
|
|
|
+ "failed to get itc-setting\n");
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|