From 25fcfff1540010e1f54d836fdd52400bfefa1dda Mon Sep 17 00:00:00 2001 From: Tim Wang Date: Wed, 12 Mar 2025 15:10:10 +0800 Subject: [PATCH] soc: mimxrt1180: Add USB Device support This was tested on the MIMXRT1180 EVK board Signed-off-by: Tim Wang --- .../mimxrt1180_evk_mimxrt1189_cm33.dts | 12 ++++++++++++ .../mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm7.dts | 12 ++++++++++++ soc/nxp/imxrt/imxrt118x/soc.c | 7 +++++++ 3 files changed, 31 insertions(+) diff --git a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm33.dts b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm33.dts index 8143c055258..528c2f4357b 100644 --- a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm33.dts +++ b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm33.dts @@ -85,3 +85,15 @@ zephyr_udc0: &usb1 { tx-cal-45-dp-ohms = <6>; tx-cal-45-dm-ohms = <6>; }; + +zephyr_udc1: &usb2{ + status = "okay"; + phy-handle = <&usbphy2>; +}; + +&usbphy2 { + status = "okay"; + tx-d-cal = <7>; + tx-cal-45-dp-ohms = <6>; + tx-cal-45-dm-ohms = <6>; +}; diff --git a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm7.dts b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm7.dts index 81bd3a21247..c6a3499c778 100644 --- a/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm7.dts +++ b/boards/nxp/mimxrt1180_evk/mimxrt1180_evk_mimxrt1189_cm7.dts @@ -84,3 +84,15 @@ zephyr_udc0: &usb1 { tx-cal-45-dp-ohms = <6>; tx-cal-45-dm-ohms = <6>; }; + +zephyr_udc1: &usb2{ + status = "okay"; + phy-handle = <&usbphy2>; +}; + +&usbphy2 { + status = "okay"; + tx-d-cal = <7>; + tx-cal-45-dp-ohms = <6>; + tx-cal-45-dm-ohms = <6>; +}; diff --git a/soc/nxp/imxrt/imxrt118x/soc.c b/soc/nxp/imxrt/imxrt118x/soc.c index be509054f5d..5106e647749 100644 --- a/soc/nxp/imxrt/imxrt118x/soc.c +++ b/soc/nxp/imxrt/imxrt118x/soc.c @@ -571,6 +571,13 @@ __weak void clock_init(void) DT_PROP_BY_PHANDLE(DT_NODELABEL(usb1), clocks, clock_frequency)); #endif +#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(usb2)) && CONFIG_UDC_NXP_EHCI + CLOCK_EnableUsbhs1PhyPllClock(kCLOCK_Usb480M, + DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency)); + CLOCK_EnableUsbhs1Clock(kCLOCK_Usb480M, + DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency)); +#endif + #ifdef CONFIG_IMX_USDHC #if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay)