summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Eichenberger <stefan.eichenberger@toradex.com>2026-08-07 16:38:29 +0200
committerStefan Eichenberger <stefan.eichenberger@toradex.com>2026-08-21 15:33:19 +0200
commitaf9a36578ce60697e843352bc40c2ce8242f3606 (patch)
treeb860f0a63ac56dad179e48d80d76d73c0a153555
parentee5a1564a0e9cc7b6f248f4b8101a52cdcdc8aa7 (diff)
board: toradex: {aquila, smarc, verdin}-imx95: add support for downstream usbtoradex_imx_lf_v2026.04
Add support for the downstream U-Boot USB stack. Upstream U-Boot does not support USB for the i.MX95 yet or only partially. Implement USB support in a similar way as it is done for the reference boards from NXP. For Aquila the drivers are already enabled in the configuration. Aquila does not use the CI-UDC driver which belongs to another USB controller and is exposed on Verdin and SMARC as OTG port. Upstream-Status: Pending Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
-rw-r--r--arch/arm/dts/imx95-aquila-dev-u-boot.dtsi6
-rw-r--r--arch/arm/dts/imx95-toradex-smarc-dev-u-boot.dtsi16
-rw-r--r--arch/arm/dts/imx95-verdin-wifi-dev-u-boot.dtsi16
-rw-r--r--configs/toradex-smarc-imx95_defconfig5
-rw-r--r--configs/verdin-imx95_defconfig8
5 files changed, 38 insertions, 13 deletions
diff --git a/arch/arm/dts/imx95-aquila-dev-u-boot.dtsi b/arch/arm/dts/imx95-aquila-dev-u-boot.dtsi
index 92ec0d3efa3..a65a79693a9 100644
--- a/arch/arm/dts/imx95-aquila-dev-u-boot.dtsi
+++ b/arch/arm/dts/imx95-aquila-dev-u-boot.dtsi
@@ -26,12 +26,16 @@
};
&usb3 {
+ clocks = <&scmi_clk IMX95_CLK_HSIO>,
+ <&scmi_clk IMX95_CLK_24M>,
+ <&scmi_clk IMX95_CLK_32K>;
+ clock-names = "hsio", "ref", "suspend";
+
bootph-pre-ram;
};
&usb3_dwc3 {
bootph-pre-ram;
- compatible = "fsl,imx95a-dwc3", "fsl,imx8mq-dwc3", "snps,dwc3";
};
&usdhc1 {
diff --git a/arch/arm/dts/imx95-toradex-smarc-dev-u-boot.dtsi b/arch/arm/dts/imx95-toradex-smarc-dev-u-boot.dtsi
index e4eda61e5c4..21a4b0ed99b 100644
--- a/arch/arm/dts/imx95-toradex-smarc-dev-u-boot.dtsi
+++ b/arch/arm/dts/imx95-toradex-smarc-dev-u-boot.dtsi
@@ -7,6 +7,13 @@
sysinfo {
compatible = "toradex,sysinfo";
};
+
+ usbg2 {
+ compatible = "fsl,imx27-usb-gadget";
+ dr_mode = "peripheral";
+ chipidea,usb = <&usb2>;
+ bootph-pre-ram;
+ };
};
&gpio1 {
@@ -89,11 +96,10 @@
};
&usb3 {
- status = "disabled";
-};
-
-&usb3_dwc3 {
- status = "disabled";
+ clocks = <&scmi_clk IMX95_CLK_HSIO>,
+ <&scmi_clk IMX95_CLK_24M>,
+ <&scmi_clk IMX95_CLK_32K>;
+ clock-names = "hsio", "ref", "suspend";
};
&usdhc1 {
diff --git a/arch/arm/dts/imx95-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/imx95-verdin-wifi-dev-u-boot.dtsi
index 8ab70cf7399..a630475dd51 100644
--- a/arch/arm/dts/imx95-verdin-wifi-dev-u-boot.dtsi
+++ b/arch/arm/dts/imx95-verdin-wifi-dev-u-boot.dtsi
@@ -7,6 +7,13 @@
sysinfo {
compatible = "toradex,sysinfo";
};
+
+ usbg2 {
+ compatible = "fsl,imx27-usb-gadget";
+ dr_mode = "peripheral";
+ chipidea,usb = <&usb2>;
+ bootph-pre-ram;
+ };
};
&{/binman/m33-oei-ddrfw/imx-lpddr/imx-lpddr-imem} {
@@ -91,11 +98,10 @@
};
&usb3 {
- status = "disabled";
-};
-
-&usb3_dwc3 {
- status = "disabled";
+ clocks = <&scmi_clk IMX95_CLK_HSIO>,
+ <&scmi_clk IMX95_CLK_24M>,
+ <&scmi_clk IMX95_CLK_32K>;
+ clock-names = "hsio", "ref", "suspend";
};
&usb_recov_ctrl {
diff --git a/configs/toradex-smarc-imx95_defconfig b/configs/toradex-smarc-imx95_defconfig
index dc2376c7ad8..cb773d3ea52 100644
--- a/configs/toradex-smarc-imx95_defconfig
+++ b/configs/toradex-smarc-imx95_defconfig
@@ -172,18 +172,23 @@ CONFIG_FSL_LPUART=y
CONFIG_DM_THERMAL=y
CONFIG_SCMI_THERMAL=y
CONFIG_USB=y
+CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_DWC3=y
CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_SPL_USB_DWC3_GENERIC=y
CONFIG_USB_HOST_ETHER=y
CONFIG_USB_GADGET=y
+CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Toradex"
CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
CONFIG_USB_GADGET_OS_DESCRIPTORS=y
CONFIG_CI_UDC=y
CONFIG_SDP_LOADADDR=0x90400000
+CONFIG_SPL_USB_SDP_SUPPORT=y
CONFIG_ULP_WATCHDOG=y
CONFIG_WDT=y
# CONFIG_SPL_SHA1 is not set
diff --git a/configs/verdin-imx95_defconfig b/configs/verdin-imx95_defconfig
index eb0ecf8129c..4f95c237206 100644
--- a/configs/verdin-imx95_defconfig
+++ b/configs/verdin-imx95_defconfig
@@ -173,19 +173,23 @@ CONFIG_FSL_LPUART=y
CONFIG_DM_THERMAL=y
CONFIG_SCMI_THERMAL=y
CONFIG_USB=y
-CONFIG_DM_USB_GADGET=y
+CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_DWC3=y
-# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_SPL_USB_DWC3_GENERIC=y
CONFIG_USB_HOST_ETHER=y
CONFIG_USB_GADGET=y
+CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Toradex"
CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
CONFIG_USB_GADGET_OS_DESCRIPTORS=y
+CONFIG_CI_UDC=y
CONFIG_SDP_LOADADDR=0x90400000
+CONFIG_SPL_USB_SDP_SUPPORT=y
CONFIG_ULP_WATCHDOG=y
CONFIG_WDT=y
# CONFIG_SPL_SHA1 is not set