|
@@ -293,6 +293,32 @@ static const unsigned *get_pll_timing(void)
|
|
|
return timing;
|
|
|
}
|
|
|
|
|
|
+/* select the PHY to use with a USB controller */
|
|
|
+static void init_phy_mux(struct fdt_usb *config, uint pts)
|
|
|
+{
|
|
|
+ struct usb_ctlr *usbctlr = config->reg;
|
|
|
+
|
|
|
+#if defined(CONFIG_TEGRA20)
|
|
|
+ if (config->periph_id == PERIPH_ID_USBD) {
|
|
|
+ clrsetbits_le32(&usbctlr->port_sc1, PTS1_MASK,
|
|
|
+ PTS_UTMI << PTS1_SHIFT);
|
|
|
+ clrbits_le32(&usbctlr->port_sc1, STS1);
|
|
|
+ } else {
|
|
|
+ clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
|
|
|
+ PTS_UTMI << PTS_SHIFT);
|
|
|
+ clrbits_le32(&usbctlr->port_sc1, STS);
|
|
|
+ }
|
|
|
+#else
|
|
|
+ /* Set to Host mode after Controller Reset was done */
|
|
|
+ clrsetbits_le32(&usbctlr->usb_mode, USBMODE_CM_HC,
|
|
|
+ USBMODE_CM_HC);
|
|
|
+ /* Select PHY interface after setting host mode */
|
|
|
+ clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
|
|
|
+ pts << PTS_SHIFT);
|
|
|
+ clrbits_le32(&usbctlr->hostpc1_devlc, STS);
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
/* set up the UTMI USB controller with the parameters provided */
|
|
|
static int init_utmi_usb_controller(struct fdt_usb *config)
|
|
|
{
|
|
@@ -485,25 +511,7 @@ static int init_utmi_usb_controller(struct fdt_usb *config)
|
|
|
clrbits_le32(&usbctlr->icusb_ctrl, IC_ENB1);
|
|
|
|
|
|
/* Select UTMI parallel interface */
|
|
|
-#if defined(CONFIG_TEGRA20)
|
|
|
- if (config->periph_id == PERIPH_ID_USBD) {
|
|
|
- clrsetbits_le32(&usbctlr->port_sc1, PTS1_MASK,
|
|
|
- PTS_UTMI << PTS1_SHIFT);
|
|
|
- clrbits_le32(&usbctlr->port_sc1, STS1);
|
|
|
- } else {
|
|
|
- clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
|
|
|
- PTS_UTMI << PTS_SHIFT);
|
|
|
- clrbits_le32(&usbctlr->port_sc1, STS);
|
|
|
- }
|
|
|
-#else
|
|
|
- /* Set to Host mode after Controller Reset was done */
|
|
|
- clrsetbits_le32(&usbctlr->usb_mode, USBMODE_CM_HC,
|
|
|
- USBMODE_CM_HC);
|
|
|
- /* Select PHY interface after setting host mode */
|
|
|
- clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
|
|
|
- PTS_UTMI << PTS_SHIFT);
|
|
|
- clrbits_le32(&usbctlr->hostpc1_devlc, STS);
|
|
|
-#endif
|
|
|
+ init_phy_mux(config, PTS_UTMI);
|
|
|
|
|
|
/* Deassert power down state */
|
|
|
clrbits_le32(&usbctlr->utmip_xcvr_cfg0, UTMIP_FORCE_PD_POWERDOWN |
|
|
@@ -561,17 +569,7 @@ static int init_ulpi_usb_controller(struct fdt_usb *config)
|
|
|
ULPI_CLKOUT_PINMUX_BYP | ULPI_OUTPUT_PINMUX_BYP);
|
|
|
|
|
|
/* Select ULPI parallel interface */
|
|
|
-#if defined(CONFIG_TEGRA20)
|
|
|
- clrsetbits_le32(&usbctlr->port_sc1, PTS_MASK,
|
|
|
- PTS_ULPI << PTS_SHIFT);
|
|
|
-#else
|
|
|
- /* Set to Host mode after Controller Reset was done */
|
|
|
- clrsetbits_le32(&usbctlr->usb_mode, USBMODE_CM_HC,
|
|
|
- USBMODE_CM_HC);
|
|
|
- /* Select PHY interface after setting host mode */
|
|
|
- clrsetbits_le32(&usbctlr->hostpc1_devlc, PTS_MASK,
|
|
|
- PTS_ULPI << PTS_SHIFT);
|
|
|
-#endif
|
|
|
+ init_phy_mux(config, PTS_ULPI);
|
|
|
|
|
|
/* enable ULPI transceiver */
|
|
|
setbits_le32(&usbctlr->susp_ctrl, ULPI_PHY_ENB);
|