109 lines
2.8 KiB
C
109 lines
2.8 KiB
C
/*
|
|
* Copyright 2018 - 2022 NXP
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#ifndef __USB_DEVICE_CONFIG_H__
|
|
#define __USB_DEVICE_CONFIG_H__
|
|
|
|
#include <zephyr/devicetree.h>
|
|
#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__ */
|