summaryrefslogtreecommitdiff
path: root/board/freescale/imx8qxp_mek/imx8qxp_mek.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/freescale/imx8qxp_mek/imx8qxp_mek.c')
-rw-r--r--board/freescale/imx8qxp_mek/imx8qxp_mek.c41
1 files changed, 35 insertions, 6 deletions
diff --git a/board/freescale/imx8qxp_mek/imx8qxp_mek.c b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
index 71e882b899..8a654b6c3f 100644
--- a/board/freescale/imx8qxp_mek/imx8qxp_mek.c
+++ b/board/freescale/imx8qxp_mek/imx8qxp_mek.c
@@ -482,9 +482,9 @@ static struct cdns3_device cdns3_device_data = {
.index = 1,
};
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
{
- cdns3_uboot_handle_interrupt(1);
+ cdns3_uboot_handle_interrupt(index);
return 0;
}
#endif
@@ -500,6 +500,19 @@ int board_usb_init(int index, enum usb_init_type init)
#endif
#ifdef CONFIG_USB_CDNS3_GADGET
} else {
+#ifdef CONFIG_SPL_BUILD
+ sc_ipc_t ipcHndl = 0;
+
+ ipcHndl = gd->arch.ipc_channel_handle;
+
+ ret = sc_pm_set_resource_power_mode(ipcHndl, SC_R_USB_2, SC_PM_PW_MODE_ON);
+ if (ret != SC_ERR_NONE)
+ printf("conn_usb2 Power up failed! (error = %d)\n", ret);
+
+ ret = sc_pm_set_resource_power_mode(ipcHndl, SC_R_USB_2_PHY, SC_PM_PW_MODE_ON);
+ if (ret != SC_ERR_NONE)
+ printf("conn_usb2_phy Power up failed! (error = %d)\n", ret);
+#else
struct power_domain pd;
int ret;
@@ -515,6 +528,8 @@ int board_usb_init(int index, enum usb_init_type init)
if (ret)
printf("conn_usb2_phy Power up failed! (error = %d)\n", ret);
}
+#endif
+
#ifdef CONFIG_USB_TCPC
ret = tcpc_setup_ufp_mode(&port);
printf("%d setufp mode %d\n", index, ret);
@@ -541,24 +556,38 @@ int board_usb_cleanup(int index, enum usb_init_type init)
#endif
#ifdef CONFIG_USB_CDNS3_GADGET
} else {
+ cdns3_uboot_exit(1);
+
+#ifdef CONFIG_SPL_BUILD
+ sc_ipc_t ipcHndl = 0;
+
+ ipcHndl = gd->arch.ipc_channel_handle;
+
+ ret = sc_pm_set_resource_power_mode(ipcHndl, SC_R_USB_2, SC_PM_PW_MODE_OFF);
+ if (ret != SC_ERR_NONE)
+ printf("conn_usb2 Power down failed! (error = %d)\n", ret);
+
+ ret = sc_pm_set_resource_power_mode(ipcHndl, SC_R_USB_2_PHY, SC_PM_PW_MODE_OFF);
+ if (ret != SC_ERR_NONE)
+ printf("conn_usb2_phy Power down failed! (error = %d)\n", ret);
+#else
struct power_domain pd;
int ret;
- cdns3_uboot_exit(1);
-
/* Power off usb */
if (!power_domain_lookup_name("conn_usb2", &pd)) {
ret = power_domain_off(&pd);
if (ret)
- printf("conn_usb2 Power up failed! (error = %d)\n", ret);
+ printf("conn_usb2 Power down failed! (error = %d)\n", ret);
}
if (!power_domain_lookup_name("conn_usb2_phy", &pd)) {
ret = power_domain_off(&pd);
if (ret)
- printf("conn_usb2_phy Power up failed! (error = %d)\n", ret);
+ printf("conn_usb2_phy Power down failed! (error = %d)\n", ret);
}
#endif
+#endif
}
}