/* * Copyright 2018 - 2022 NXP * * SPDX-License-Identifier: Apache-2.0 */ #ifndef __USB_DEVICE_CONFIG_H__ #define __USB_DEVICE_CONFIG_H__ #include #include "usb.h" /****************************************************************************** * Definitions *****************************************************************************/ #ifdef CONFIG_USB_DEVICE_DRIVER /* EHCI instance count */ #ifdef CONFIG_USB_DC_NXP_EHCI #define USB_DEVICE_CONFIG_EHCI (1U) /* How many the DTD are supported. */ #define USB_DEVICE_CONFIG_EHCI_MAX_DTD (16U) #endif /* CONFIG_USB_DC_NXP_EHCI */ #ifdef CONFIG_USB_DC_NXP_LPCIP3511 #ifdef USBHSD_BASE_ADDRS #define USB_DEVICE_CONFIG_LPCIP3511HS (1U) #else #define USB_DEVICE_CONFIG_LPCIP3511HS (0U) #endif #ifdef USB_BASE_ADDRS #define USB_DEVICE_CONFIG_LPCIP3511FS (1U) #else #define USB_DEVICE_CONFIG_LPCIP3511FS (0U) #endif #endif /* CONFIG_USB_DC_NXP_LPCIP3511 */ /* Whether device is self power. 1U supported, 0U not supported */ #define USB_DEVICE_CONFIG_SELF_POWER (1U) #define NUM_INSTS DT_NUM_INST_STATUS_OKAY(nxp_ehci) + DT_NUM_INST_STATUS_OKAY(nxp_lpcip3511) BUILD_ASSERT(NUM_INSTS <= 1, "Only one USB device supported"); #if DT_HAS_COMPAT_STATUS_OKAY(nxp_lpcip3511) #undef DT_DRV_COMPAT #define DT_DRV_COMPAT nxp_lpcip3511 #elif DT_HAS_COMPAT_STATUS_OKAY(nxp_ehci) #undef DT_DRV_COMPAT #define DT_DRV_COMPAT nxp_ehci #endif /* Number of endpoints supported */ #define USB_DEVICE_CONFIG_ENDPOINTS (DT_INST_PROP(0, num_bidir_endpoints)) #else #ifdef CONFIG_UDC_NXP_EHCI #define USB_DEVICE_CONFIG_EHCI (DT_NUM_INST_STATUS_OKAY(nxp_ehci)) #endif #ifdef CONFIG_UDC_NXP_IP3511 #if defined(USBHSD_BASE_ADDRS) && defined(USB_BASE_ADDRS) #define USB_DEVICE_CONFIG_LPCIP3511HS (1U) #define USB_DEVICE_CONFIG_LPCIP3511FS (1U) #else #ifdef USBHSD_BASE_ADDRS #define USB_DEVICE_CONFIG_LPCIP3511HS (DT_NUM_INST_STATUS_OKAY(nxp_lpcip3511)) #else #define USB_DEVICE_CONFIG_LPCIP3511HS (0U) #endif #ifdef USB_BASE_ADDRS #define USB_DEVICE_CONFIG_LPCIP3511FS (DT_NUM_INST_STATUS_OKAY(nxp_lpcip3511)) #else #define USB_DEVICE_CONFIG_LPCIP3511FS (0U) #endif #endif #endif /* calculte the num of endponts. * mcux ip3511 driver doesn't use USB_DEVICE_CONFIG_ENDPOINTS, * so use ehci endpoint number if ehci is enabled. */ #if DT_HAS_COMPAT_STATUS_OKAY(nxp_ehci) #undef DT_DRV_COMPAT #define DT_DRV_COMPAT nxp_ehci #elif DT_HAS_COMPAT_STATUS_OKAY(nxp_lpcip3511) #undef DT_DRV_COMPAT #define DT_DRV_COMPAT nxp_lpcip3511 #endif /* Number of endpoints supported */ #define USB_DEVICE_CONFIG_ENDPOINTS (DT_INST_PROP(0, num_bidir_endpoints)) #define USB_DEVICE_CONFIG_SELF_POWER (1U) #if ((defined(USB_DEVICE_CONFIG_EHCI)) && (USB_DEVICE_CONFIG_EHCI > 0U)) /*! @brief How many the DTD are supported. */ #define USB_DEVICE_CONFIG_EHCI_MAX_DTD (16U) #endif #endif #endif /* __USB_DEVICE_CONFIG_H__ */