mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-06-20 15:08:37 +03:00
Initial commit
This commit is contained in:
279
external/CMSIS_5/CMSIS/Driver/Include/Driver_USBD.h
vendored
Normal file
279
external/CMSIS_5/CMSIS/Driver/Include/Driver_USBD.h
vendored
Normal file
@ -0,0 +1,279 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2020 ARM Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* $Date: 31. March 2020
|
||||
* $Revision: V2.3
|
||||
*
|
||||
* Project: USB Device Driver definitions
|
||||
*/
|
||||
|
||||
/* History:
|
||||
* Version 2.3
|
||||
* Removed volatile from ARM_USBD_STATE
|
||||
* Version 2.2
|
||||
* ARM_USBD_STATE made volatile
|
||||
* Version 2.1
|
||||
* Added ARM_USBD_ReadSetupPacket function
|
||||
* Version 2.0
|
||||
* Removed ARM_USBD_DeviceConfigure function
|
||||
* Removed ARM_USBD_SET_ADDRESS_STAGE parameter from ARM_USBD_DeviceSetAddress function
|
||||
* Removed ARM_USBD_EndpointReadStart function
|
||||
* Replaced ARM_USBD_EndpointRead and ARM_USBD_EndpointWrite functions with ARM_USBD_EndpointTransfer
|
||||
* Added ARM_USBD_EndpointTransferGetResult function
|
||||
* Renamed ARM_USBD_EndpointAbort function to ARM_USBD_EndpointTransferAbort
|
||||
* Changed prefix ARM_DRV -> ARM_DRIVER
|
||||
* Changed return values of some functions to int32_t
|
||||
* Version 1.10
|
||||
* Namespace prefix ARM_ added
|
||||
* Version 1.00
|
||||
* Initial release
|
||||
*/
|
||||
|
||||
#ifndef DRIVER_USBD_H_
|
||||
#define DRIVER_USBD_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include "Driver_USB.h"
|
||||
|
||||
#define ARM_USBD_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,3) /* API version */
|
||||
|
||||
|
||||
#define _ARM_Driver_USBD_(n) Driver_USBD##n
|
||||
#define ARM_Driver_USBD_(n) _ARM_Driver_USBD_(n)
|
||||
|
||||
|
||||
/**
|
||||
\brief USB Device State
|
||||
*/
|
||||
typedef struct _ARM_USBD_STATE {
|
||||
uint32_t vbus : 1; ///< USB Device VBUS flag
|
||||
uint32_t speed : 2; ///< USB Device speed setting (ARM_USB_SPEED_xxx)
|
||||
uint32_t active : 1; ///< USB Device active flag
|
||||
uint32_t reserved : 28;
|
||||
} ARM_USBD_STATE;
|
||||
|
||||
|
||||
/****** USB Device Event *****/
|
||||
#define ARM_USBD_EVENT_VBUS_ON (1UL << 0) ///< USB Device VBUS On
|
||||
#define ARM_USBD_EVENT_VBUS_OFF (1UL << 1) ///< USB Device VBUS Off
|
||||
#define ARM_USBD_EVENT_RESET (1UL << 2) ///< USB Reset occurred
|
||||
#define ARM_USBD_EVENT_HIGH_SPEED (1UL << 3) ///< USB switch to High Speed occurred
|
||||
#define ARM_USBD_EVENT_SUSPEND (1UL << 4) ///< USB Suspend occurred
|
||||
#define ARM_USBD_EVENT_RESUME (1UL << 5) ///< USB Resume occurred
|
||||
|
||||
/****** USB Endpoint Event *****/
|
||||
#define ARM_USBD_EVENT_SETUP (1UL << 0) ///< SETUP Packet
|
||||
#define ARM_USBD_EVENT_OUT (1UL << 1) ///< OUT Packet(s)
|
||||
#define ARM_USBD_EVENT_IN (1UL << 2) ///< IN Packet(s)
|
||||
|
||||
|
||||
#ifndef __DOXYGEN_MW__ // exclude from middleware documentation
|
||||
|
||||
// Function documentation
|
||||
/**
|
||||
\fn ARM_DRIVER_VERSION ARM_USBD_GetVersion (void)
|
||||
\brief Get driver version.
|
||||
\return \ref ARM_DRIVER_VERSION
|
||||
*/
|
||||
/**
|
||||
\fn ARM_USBD_CAPABILITIES ARM_USBD_GetCapabilities (void)
|
||||
\brief Get driver capabilities.
|
||||
\return \ref ARM_USBD_CAPABILITIES
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_Initialize (ARM_USBD_SignalDeviceEvent_t cb_device_event,
|
||||
ARM_USBD_SignalEndpointEvent_t cb_endpoint_event)
|
||||
\brief Initialize USB Device Interface.
|
||||
\param[in] cb_device_event Pointer to \ref ARM_USBD_SignalDeviceEvent
|
||||
\param[in] cb_endpoint_event Pointer to \ref ARM_USBD_SignalEndpointEvent
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_Uninitialize (void)
|
||||
\brief De-initialize USB Device Interface.
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_PowerControl (ARM_POWER_STATE state)
|
||||
\brief Control USB Device Interface Power.
|
||||
\param[in] state Power state
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_DeviceConnect (void)
|
||||
\brief Connect USB Device.
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_DeviceDisconnect (void)
|
||||
\brief Disconnect USB Device.
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn ARM_USBD_STATE ARM_USBD_DeviceGetState (void)
|
||||
\brief Get current USB Device State.
|
||||
\return Device State \ref ARM_USBD_STATE
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_DeviceRemoteWakeup (void)
|
||||
\brief Trigger USB Remote Wakeup.
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_DeviceSetAddress (uint8_t dev_addr)
|
||||
\brief Set USB Device Address.
|
||||
\param[in] dev_addr Device Address
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_ReadSetupPacket (uint8_t *setup)
|
||||
\brief Read setup packet received over Control Endpoint.
|
||||
\param[out] setup Pointer to buffer for setup packet
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_EndpointConfigure (uint8_t ep_addr,
|
||||
uint8_t ep_type,
|
||||
uint16_t ep_max_packet_size)
|
||||
\brief Configure USB Endpoint.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\param[in] ep_type Endpoint Type (ARM_USB_ENDPOINT_xxx)
|
||||
\param[in] ep_max_packet_size Endpoint Maximum Packet Size
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_EndpointUnconfigure (uint8_t ep_addr)
|
||||
\brief Unconfigure USB Endpoint.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_EndpointStall (uint8_t ep_addr, bool stall)
|
||||
\brief Set/Clear Stall for USB Endpoint.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\param[in] stall Operation
|
||||
- \b false Clear
|
||||
- \b true Set
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_EndpointTransfer (uint8_t ep_addr, uint8_t *data, uint32_t num)
|
||||
\brief Read data from or Write data to USB Endpoint.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\param[out] data Pointer to buffer for data to read or with data to write
|
||||
\param[in] num Number of data bytes to transfer
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn uint32_t ARM_USBD_EndpointTransferGetResult (uint8_t ep_addr)
|
||||
\brief Get result of USB Endpoint transfer.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\return number of successfully transferred data bytes
|
||||
*/
|
||||
/**
|
||||
\fn int32_t ARM_USBD_EndpointTransferAbort (uint8_t ep_addr)
|
||||
\brief Abort current USB Endpoint transfer.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\return \ref execution_status
|
||||
*/
|
||||
/**
|
||||
\fn uint16_t ARM_USBD_GetFrameNumber (void)
|
||||
\brief Get current USB Frame Number.
|
||||
\return Frame Number
|
||||
*/
|
||||
|
||||
/**
|
||||
\fn void ARM_USBD_SignalDeviceEvent (uint32_t event)
|
||||
\brief Signal USB Device Event.
|
||||
\param[in] event \ref USBD_dev_events
|
||||
\return none
|
||||
*/
|
||||
/**
|
||||
\fn void ARM_USBD_SignalEndpointEvent (uint8_t ep_addr, uint32_t event)
|
||||
\brief Signal USB Endpoint Event.
|
||||
\param[in] ep_addr Endpoint Address
|
||||
- ep_addr.0..3: Address
|
||||
- ep_addr.7: Direction
|
||||
\param[in] event \ref USBD_ep_events
|
||||
\return none
|
||||
*/
|
||||
|
||||
typedef void (*ARM_USBD_SignalDeviceEvent_t) (uint32_t event); ///< Pointer to \ref ARM_USBD_SignalDeviceEvent : Signal USB Device Event.
|
||||
typedef void (*ARM_USBD_SignalEndpointEvent_t) (uint8_t ep_addr, uint32_t event); ///< Pointer to \ref ARM_USBD_SignalEndpointEvent : Signal USB Endpoint Event.
|
||||
|
||||
|
||||
/**
|
||||
\brief USB Device Driver Capabilities.
|
||||
*/
|
||||
typedef struct _ARM_USBD_CAPABILITIES {
|
||||
uint32_t vbus_detection : 1; ///< VBUS detection
|
||||
uint32_t event_vbus_on : 1; ///< Signal VBUS On event
|
||||
uint32_t event_vbus_off : 1; ///< Signal VBUS Off event
|
||||
uint32_t reserved : 29; ///< Reserved (must be zero)
|
||||
} ARM_USBD_CAPABILITIES;
|
||||
|
||||
|
||||
/**
|
||||
\brief Access structure of the USB Device Driver.
|
||||
*/
|
||||
typedef struct _ARM_DRIVER_USBD {
|
||||
ARM_DRIVER_VERSION (*GetVersion) (void); ///< Pointer to \ref ARM_USBD_GetVersion : Get driver version.
|
||||
ARM_USBD_CAPABILITIES (*GetCapabilities) (void); ///< Pointer to \ref ARM_USBD_GetCapabilities : Get driver capabilities.
|
||||
int32_t (*Initialize) (ARM_USBD_SignalDeviceEvent_t cb_device_event,
|
||||
ARM_USBD_SignalEndpointEvent_t cb_endpoint_event); ///< Pointer to \ref ARM_USBD_Initialize : Initialize USB Device Interface.
|
||||
int32_t (*Uninitialize) (void); ///< Pointer to \ref ARM_USBD_Uninitialize : De-initialize USB Device Interface.
|
||||
int32_t (*PowerControl) (ARM_POWER_STATE state); ///< Pointer to \ref ARM_USBD_PowerControl : Control USB Device Interface Power.
|
||||
int32_t (*DeviceConnect) (void); ///< Pointer to \ref ARM_USBD_DeviceConnect : Connect USB Device.
|
||||
int32_t (*DeviceDisconnect) (void); ///< Pointer to \ref ARM_USBD_DeviceDisconnect : Disconnect USB Device.
|
||||
ARM_USBD_STATE (*DeviceGetState) (void); ///< Pointer to \ref ARM_USBD_DeviceGetState : Get current USB Device State.
|
||||
int32_t (*DeviceRemoteWakeup) (void); ///< Pointer to \ref ARM_USBD_DeviceRemoteWakeup : Trigger USB Remote Wakeup.
|
||||
int32_t (*DeviceSetAddress) (uint8_t dev_addr); ///< Pointer to \ref ARM_USBD_DeviceSetAddress : Set USB Device Address.
|
||||
int32_t (*ReadSetupPacket) (uint8_t *setup); ///< Pointer to \ref ARM_USBD_ReadSetupPacket : Read setup packet received over Control Endpoint.
|
||||
int32_t (*EndpointConfigure) (uint8_t ep_addr,
|
||||
uint8_t ep_type,
|
||||
uint16_t ep_max_packet_size); ///< Pointer to \ref ARM_USBD_EndpointConfigure : Configure USB Endpoint.
|
||||
int32_t (*EndpointUnconfigure) (uint8_t ep_addr); ///< Pointer to \ref ARM_USBD_EndpointUnconfigure : Unconfigure USB Endpoint.
|
||||
int32_t (*EndpointStall) (uint8_t ep_addr, bool stall); ///< Pointer to \ref ARM_USBD_EndpointStall : Set/Clear Stall for USB Endpoint.
|
||||
int32_t (*EndpointTransfer) (uint8_t ep_addr, uint8_t *data, uint32_t num); ///< Pointer to \ref ARM_USBD_EndpointTransfer : Read data from or Write data to USB Endpoint.
|
||||
uint32_t (*EndpointTransferGetResult) (uint8_t ep_addr); ///< Pointer to \ref ARM_USBD_EndpointTransferGetResult : Get result of USB Endpoint transfer.
|
||||
int32_t (*EndpointTransferAbort) (uint8_t ep_addr); ///< Pointer to \ref ARM_USBD_EndpointTransferAbort : Abort current USB Endpoint transfer.
|
||||
uint16_t (*GetFrameNumber) (void); ///< Pointer to \ref ARM_USBD_GetFrameNumber : Get current USB Frame Number.
|
||||
} const ARM_DRIVER_USBD;
|
||||
|
||||
#endif /* __DOXYGEN_MW__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DRIVER_USBD_H_ */
|
Reference in New Issue
Block a user