boards: nxp: enable mcux udc on lpc55s69, rt1060 and rt685
set DT node as Okay in board device tree; add board level's d-cal, txcal45dp and txcal45dm to usbphy node; enable usb clock; set USB_STACK_USE_DEDICATED_RAM for lpc55s69 and rt685; load usb.ld for lpc55s69 and rt685. Signed-off-by: Mark Wang <yichang.wang@nxp.com>
This commit is contained in:
parent
b6b43c3ed7
commit
0c70a72ac7
9 changed files with 45 additions and 8 deletions
|
@ -149,6 +149,14 @@
|
||||||
|
|
||||||
zephyr_udc0: &usbhs {
|
zephyr_udc0: &usbhs {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
phy_handle = <&usbphy1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbphy1 {
|
||||||
|
status = "okay";
|
||||||
|
tx-d-cal = <5>;
|
||||||
|
tx-cal-45-dp-ohms = <10>;
|
||||||
|
tx-cal-45-dm-ohms = <10>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&ctimer0 {
|
&ctimer0 {
|
||||||
|
|
|
@ -183,6 +183,14 @@ arduino_i2c: &lpi2c1 {
|
||||||
|
|
||||||
zephyr_udc0: &usb1 {
|
zephyr_udc0: &usb1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
phy_handle = <&usbphy1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbphy1 {
|
||||||
|
status = "okay";
|
||||||
|
tx-d-cal = <12>;
|
||||||
|
tx-cal-45-dp-ohms = <6>;
|
||||||
|
tx-cal-45-dm-ohms = <6>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&flexpwm2_pwm3 {
|
&flexpwm2_pwm3 {
|
||||||
|
|
|
@ -355,6 +355,14 @@ i2s1: &flexcomm3 {
|
||||||
|
|
||||||
zephyr_udc0: &usbhs {
|
zephyr_udc0: &usbhs {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
phy_handle = <&usbphy>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&usbphy {
|
||||||
|
status = "okay";
|
||||||
|
tx-d-cal = <12>;
|
||||||
|
tx-cal-45-dp-ohms = <6>;
|
||||||
|
tx-cal-45-dm-ohms = <6>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&ctimer0 {
|
&ctimer0 {
|
||||||
|
|
|
@ -39,6 +39,7 @@ endif()
|
||||||
|
|
||||||
if(CONFIG_SOC_SERIES_IMXRT6XX OR CONFIG_SOC_SERIES_IMXRT5XX)
|
if(CONFIG_SOC_SERIES_IMXRT6XX OR CONFIG_SOC_SERIES_IMXRT5XX)
|
||||||
zephyr_linker_sources_ifdef(CONFIG_USB_DEVICE_DRIVER SECTIONS usb.ld)
|
zephyr_linker_sources_ifdef(CONFIG_USB_DEVICE_DRIVER SECTIONS usb.ld)
|
||||||
|
zephyr_linker_sources_ifdef(CONFIG_UDC_DRIVER SECTIONS usb.ld)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CONFIG_MEMC)
|
if(CONFIG_MEMC)
|
||||||
|
|
|
@ -243,21 +243,27 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
kIOMUXC_GPR_ENET2RefClkMode, true);
|
kIOMUXC_GPR_ENET2RefClkMode, true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb1), okay) && CONFIG_USB_DC_NXP_EHCI
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb1), okay) && \
|
||||||
|
(CONFIG_USB_DC_NXP_EHCI || CONFIG_UDC_NXP_EHCI)
|
||||||
CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_Usb480M,
|
CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_Usb480M,
|
||||||
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb1), clocks, clock_frequency));
|
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb1), clocks, clock_frequency));
|
||||||
CLOCK_EnableUsbhs0Clock(kCLOCK_Usb480M,
|
CLOCK_EnableUsbhs0Clock(kCLOCK_Usb480M,
|
||||||
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb1), clocks, clock_frequency));
|
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb1), clocks, clock_frequency));
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb1), okay) && CONFIG_USB_DC_NXP_EHCI
|
||||||
USB_EhciPhyInit(kUSB_ControllerEhci0, CPU_XTAL_CLK_HZ, &usbPhyConfig);
|
USB_EhciPhyInit(kUSB_ControllerEhci0, CPU_XTAL_CLK_HZ, &usbPhyConfig);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb2), okay) && CONFIG_USB_DC_NXP_EHCI
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb2), okay) && \
|
||||||
|
(CONFIG_USB_DC_NXP_EHCI || CONFIG_UDC_NXP_EHCI)
|
||||||
CLOCK_EnableUsbhs1PhyPllClock(kCLOCK_Usb480M,
|
CLOCK_EnableUsbhs1PhyPllClock(kCLOCK_Usb480M,
|
||||||
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency));
|
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency));
|
||||||
CLOCK_EnableUsbhs1Clock(kCLOCK_Usb480M,
|
CLOCK_EnableUsbhs1Clock(kCLOCK_Usb480M,
|
||||||
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency));
|
DT_PROP_BY_PHANDLE(DT_NODELABEL(usb2), clocks, clock_frequency));
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usb1), okay) && CONFIG_USB_DC_NXP_EHCI
|
||||||
USB_EhciPhyInit(kUSB_ControllerEhci1, CPU_XTAL_CLK_HZ, &usbPhyConfig);
|
USB_EhciPhyInit(kUSB_ControllerEhci1, CPU_XTAL_CLK_HZ, &usbPhyConfig);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay) && CONFIG_IMX_USDHC
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay) && CONFIG_IMX_USDHC
|
||||||
/* Configure USDHC clock source and divider */
|
/* Configure USDHC clock source and divider */
|
||||||
|
|
|
@ -18,6 +18,7 @@ zephyr_library_include_directories(
|
||||||
)
|
)
|
||||||
|
|
||||||
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
||||||
|
zephyr_compile_definitions_ifdef(CONFIG_UDC_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
||||||
|
|
||||||
if(CONFIG_FLASH_MCUX_FLEXSPI_XIP)
|
if(CONFIG_FLASH_MCUX_FLEXSPI_XIP)
|
||||||
zephyr_code_relocate(FILES flash_clock_setup.c LOCATION RAM)
|
zephyr_code_relocate(FILES flash_clock_setup.c LOCATION RAM)
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include "flash_clock_setup.h"
|
#include "flash_clock_setup.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
#include "usb_phy.h"
|
#include "usb_phy.h"
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -68,7 +68,7 @@ const clock_audio_pll_config_t g_audioPllConfig = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
/* USB PHY condfiguration */
|
/* USB PHY condfiguration */
|
||||||
#define BOARD_USB_PHY_D_CAL (0x0CU)
|
#define BOARD_USB_PHY_D_CAL (0x0CU)
|
||||||
#define BOARD_USB_PHY_TXCAL45DP (0x06U)
|
#define BOARD_USB_PHY_TXCAL45DP (0x06U)
|
||||||
|
@ -124,7 +124,7 @@ __imx_boot_ivt_section void (* const image_vector_table[])(void) = {
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_NXP_IMXRT_BOOT_HEADER */
|
#endif /* CONFIG_NXP_IMXRT_BOOT_HEADER */
|
||||||
|
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
|
|
||||||
static void usb_device_clock_init(void)
|
static void usb_device_clock_init(void)
|
||||||
{
|
{
|
||||||
|
@ -244,7 +244,7 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
CLOCK_AttachClk(kSFRO_to_FLEXCOMM0);
|
CLOCK_AttachClk(kSFRO_to_FLEXCOMM0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
usb_device_clock_init();
|
usb_device_clock_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,11 @@ zephyr_library_include_directories(
|
||||||
if(DEFINED CONFIG_LPC55XXX_USB_RAM)
|
if(DEFINED CONFIG_LPC55XXX_USB_RAM)
|
||||||
zephyr_linker_sources_ifdef(CONFIG_USB_DEVICE_DRIVER
|
zephyr_linker_sources_ifdef(CONFIG_USB_DEVICE_DRIVER
|
||||||
SECTIONS usb.ld)
|
SECTIONS usb.ld)
|
||||||
|
zephyr_linker_sources_ifdef(CONFIG_UDC_DRIVER
|
||||||
|
SECTIONS usb.ld)
|
||||||
|
|
||||||
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
zephyr_compile_definitions_ifdef(CONFIG_USB_DEVICE_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
||||||
|
zephyr_compile_definitions_ifdef(CONFIG_UDC_DRIVER USB_STACK_USE_DEDICATED_RAM=1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# CMSIS SystemInit allows us to skip enabling clock to SRAM banks via
|
# CMSIS SystemInit allows us to skip enabling clock to SRAM banks via
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#ifdef CONFIG_GPIO_MCUX_LPC
|
#ifdef CONFIG_GPIO_MCUX_LPC
|
||||||
#include <fsl_pint.h>
|
#include <fsl_pint.h>
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
#include "usb_phy.h"
|
#include "usb_phy.h"
|
||||||
#include "usb.h"
|
#include "usb.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -207,7 +207,7 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
CLOCK_EnableClock(kCLOCK_Mailbox);
|
CLOCK_EnableClock(kCLOCK_Mailbox);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_USB_DC_NXP_LPCIP3511
|
#if CONFIG_USB_DC_NXP_LPCIP3511 || CONFIG_UDC_NXP_IP3511
|
||||||
|
|
||||||
#if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(usbfs), nxp_lpcip3511, okay)
|
#if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(usbfs), nxp_lpcip3511, okay)
|
||||||
/*< Turn on USB Phy */
|
/*< Turn on USB Phy */
|
||||||
|
@ -256,7 +256,9 @@ static ALWAYS_INLINE void clock_init(void)
|
||||||
/* enable USB IP clock */
|
/* enable USB IP clock */
|
||||||
CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_UsbPhySrcExt, CLK_CLK_IN);
|
CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_UsbPhySrcExt, CLK_CLK_IN);
|
||||||
CLOCK_EnableUsbhs0DeviceClock(kCLOCK_UsbSrcUnused, 0U);
|
CLOCK_EnableUsbhs0DeviceClock(kCLOCK_UsbSrcUnused, 0U);
|
||||||
|
#if CONFIG_USB_DC_NXP_LPCIP3511
|
||||||
USB_EhciPhyInit(kUSB_ControllerLpcIp3511Hs0, CLK_CLK_IN, NULL);
|
USB_EhciPhyInit(kUSB_ControllerLpcIp3511Hs0, CLK_CLK_IN, NULL);
|
||||||
|
#endif
|
||||||
#if defined(FSL_FEATURE_USBHSD_USB_RAM) && (FSL_FEATURE_USBHSD_USB_RAM)
|
#if defined(FSL_FEATURE_USBHSD_USB_RAM) && (FSL_FEATURE_USBHSD_USB_RAM)
|
||||||
memset((uint8_t *)FSL_FEATURE_USBHSD_USB_RAM_BASE_ADDRESS, 0, FSL_FEATURE_USBHSD_USB_RAM);
|
memset((uint8_t *)FSL_FEATURE_USBHSD_USB_RAM_BASE_ADDRESS, 0, FSL_FEATURE_USBHSD_USB_RAM);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue