mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-28 19:34:59 +00:00
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
/*
|
|
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "soc/soc_caps.h"
|
|
#if (SOC_USB_UTMI_PHY_NUM > 0)
|
|
#include "soc/usb_utmi_struct.h"
|
|
#include "hal/usb_utmi_ll.h"
|
|
#endif // (SOC_USB_UTMI_PHY_NUM > 0)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if (SOC_USB_UTMI_PHY_NUM > 0)
|
|
|
|
/**
|
|
* @brief HAL context type of USB UTMI driver
|
|
*/
|
|
typedef struct {
|
|
usb_utmi_dev_t *dev;
|
|
} usb_utmi_hal_context_t;
|
|
|
|
/**
|
|
* @brief Sets UTMI defaults
|
|
*
|
|
* Enable clock, reset the peripheral, sets default options (LS support, disconnection detection)
|
|
*
|
|
* @param[in] hal USB UTMI HAL context
|
|
*/
|
|
void _usb_utmi_hal_init(usb_utmi_hal_context_t *hal);
|
|
|
|
#if SOC_RCC_IS_INDEPENDENT
|
|
#define usb_utmi_hal_init(...) _usb_utmi_hal_init(__VA_ARGS__)
|
|
#else
|
|
// Use a macro to wrap the function, force the caller to use it in a critical section
|
|
// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
|
|
#define usb_utmi_hal_init(...) do {(void)__DECLARE_RCC_ATOMIC_ENV; _usb_utmi_hal_init(__VA_ARGS__);} while(0)
|
|
#endif
|
|
|
|
/**
|
|
* @brief Disable UTMI
|
|
*
|
|
* Disable clock to the peripheral
|
|
*/
|
|
void _usb_utmi_hal_disable(void);
|
|
|
|
#if SOC_RCC_IS_INDEPENDENT
|
|
#define usb_utmi_hal_disable(...) _usb_utmi_hal_disable(__VA_ARGS__)
|
|
#else
|
|
// Use a macro to wrap the function, force the caller to use it in a critical section
|
|
// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
|
|
#define usb_utmi_hal_disable(...) do {(void)__DECLARE_RCC_ATOMIC_ENV; _usb_utmi_hal_disable(__VA_ARGS__);} while(0)
|
|
#endif
|
|
|
|
#endif // (SOC_USB_UTMI_PHY_NUM > 0)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|