aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabien Lahoudere <fabien.lahoudere@collabora.co.uk>2016-09-26 07:14:20 -0400
committerPeter Chen <peter.chen@nxp.com>2016-11-13 21:03:40 -0500
commit3be3251db0887f721f9c110e1966900922fc4ff4 (patch)
tree4f2bf05eaa036d9a5003b143c140857021abc473
parentd13631bb15cebe8eba50777cb96e2223e5485c23 (diff)
usb: chipidea: imx: Disable internal 60Mhz clock with ULPI PHY
The internal 60Mhz clock for host2 and host3 are useless in ULPI phy mode, so we disable it when configuring ULPI PHY node for those host. Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.co.uk> Signed-off-by: Peter Chen <peter.chen@nxp.com>
-rw-r--r--drivers/usb/chipidea/usbmisc_imx.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c
index 11f51bde44e5..e77a4ed4f021 100644
--- a/drivers/usb/chipidea/usbmisc_imx.c
+++ b/drivers/usb/chipidea/usbmisc_imx.c
@@ -53,6 +53,9 @@
53#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI BIT(6) 53#define MX53_USB_CTRL_1_H3_XCVR_CLK_SEL_ULPI BIT(6)
54#define MX53_USB_UH2_CTRL_OFFSET 0x14 54#define MX53_USB_UH2_CTRL_OFFSET 0x14
55#define MX53_USB_UH3_CTRL_OFFSET 0x18 55#define MX53_USB_UH3_CTRL_OFFSET 0x18
56#define MX53_USB_CLKONOFF_CTRL_OFFSET 0x24
57#define MX53_USB_CLKONOFF_CTRL_H2_INT60CKOFF BIT(21)
58#define MX53_USB_CLKONOFF_CTRL_H3_INT60CKOFF BIT(22)
56#define MX53_BM_OVER_CUR_DIS_H1 BIT(5) 59#define MX53_BM_OVER_CUR_DIS_H1 BIT(5)
57#define MX53_BM_OVER_CUR_DIS_OTG BIT(8) 60#define MX53_BM_OVER_CUR_DIS_OTG BIT(8)
58#define MX53_BM_OVER_CUR_DIS_UHx BIT(30) 61#define MX53_BM_OVER_CUR_DIS_UHx BIT(30)
@@ -239,6 +242,10 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
239 val = readl(reg) | MX53_USB_UHx_CTRL_WAKE_UP_EN 242 val = readl(reg) | MX53_USB_UHx_CTRL_WAKE_UP_EN
240 | MX53_USB_UHx_CTRL_ULPI_INT_EN; 243 | MX53_USB_UHx_CTRL_ULPI_INT_EN;
241 writel(val, reg); 244 writel(val, reg);
245 /* Disable internal 60Mhz clock */
246 reg = usbmisc->base + MX53_USB_CLKONOFF_CTRL_OFFSET;
247 val = readl(reg) | MX53_USB_CLKONOFF_CTRL_H2_INT60CKOFF;
248 writel(val, reg);
242 } 249 }
243 if (data->disable_oc) { 250 if (data->disable_oc) {
244 reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET; 251 reg = usbmisc->base + MX53_USB_UH2_CTRL_OFFSET;
@@ -260,6 +267,10 @@ static int usbmisc_imx53_init(struct imx_usbmisc_data *data)
260 val = readl(reg) | MX53_USB_UHx_CTRL_WAKE_UP_EN 267 val = readl(reg) | MX53_USB_UHx_CTRL_WAKE_UP_EN
261 | MX53_USB_UHx_CTRL_ULPI_INT_EN; 268 | MX53_USB_UHx_CTRL_ULPI_INT_EN;
262 writel(val, reg); 269 writel(val, reg);
270 /* Disable internal 60Mhz clock */
271 reg = usbmisc->base + MX53_USB_CLKONOFF_CTRL_OFFSET;
272 val = readl(reg) | MX53_USB_CLKONOFF_CTRL_H3_INT60CKOFF;
273 writel(val, reg);
263 } 274 }
264 if (data->disable_oc) { 275 if (data->disable_oc) {
265 reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET; 276 reg = usbmisc->base + MX53_USB_UH3_CTRL_OFFSET;