mirror of
https://github.com/espressif/openthread.git
synced 2026-08-10 12:47:47 +00:00
[nrf528xx] update usbd (#3618)
This commit is contained in:
committed by
Jonathan Hui
parent
3eb5a106ff
commit
203bce7ae7
+4
-1
@@ -112,10 +112,11 @@ NORDICSEMI_COMMON_SOURCES
|
||||
nrfx/drivers/src/nrfx_power.c \
|
||||
nrfx/drivers/src/nrfx_systick.c \
|
||||
nrfx/hal/nrf_nvmc.c \
|
||||
nrfx/soc/nrfx_atomic.c \
|
||||
$(NULL)
|
||||
|
||||
NORDICSEMI_USB_SOURCES = \
|
||||
drivers/usbd/nrf_drv_usbd.c \
|
||||
nrfx/drivers/src/nrfx_usbd.c \
|
||||
libraries/atfifo/nrf_atfifo.c \
|
||||
libraries/atomic/nrf_atomic.c \
|
||||
libraries/usb/app_usbd.c \
|
||||
@@ -361,6 +362,8 @@ noinst_HEADERS
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/drivers/include/nrfx_power_clock.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/drivers/include/nrfx_power.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/drivers/include/nrfx_systick.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/drivers/include/nrfx_usbd.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/drivers/src/nrfx_usbd_errata.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/hal/nrf_clock.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/hal/nrf_gpio.h \
|
||||
$(top_srcdir)/third_party/NordicSemiconductor/nrfx/hal/nrf_gpiote.h \
|
||||
|
||||
+72
-2
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
|
||||
* Copyright (c) 2017 - 2019, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
@@ -116,7 +116,6 @@ static inline void _NRFX_IRQ_PRIORITY_SET(IRQn_Type irq_number,
|
||||
#define NRFX_IRQ_ENABLE(irq_number) _NRFX_IRQ_ENABLE(irq_number)
|
||||
static inline void _NRFX_IRQ_ENABLE(IRQn_Type irq_number)
|
||||
{
|
||||
NVIC_ClearPendingIRQ(irq_number);
|
||||
NVIC_EnableIRQ(irq_number);
|
||||
}
|
||||
|
||||
@@ -207,6 +206,76 @@ static inline bool _NRFX_IRQ_IS_PENDING(IRQn_Type irq_number)
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#include <soc/nrfx_atomic.h>
|
||||
|
||||
/**
|
||||
* @brief Atomic 32 bit unsigned type.
|
||||
*/
|
||||
#define nrfx_atomic_t nrfx_atomic_u32_t
|
||||
|
||||
/**
|
||||
* @brief Stores value to an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value to store.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_STORE(p_data, value) nrfx_atomic_u32_fetch_store(p_data, value)
|
||||
|
||||
/**
|
||||
* @brief Performs logical OR operation on an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value of second operand of OR operation.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_OR(p_data, value) nrfx_atomic_u32_fetch_or(p_data, value)
|
||||
|
||||
/**
|
||||
* @brief Performs logical AND operation on an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value of second operand of AND operation.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_AND(p_data, value) nrfx_atomic_u32_fetch_and(p_data, value)
|
||||
|
||||
/**
|
||||
* @brief Performs logical XOR operation on an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value of second operand of XOR operation.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_XOR(p_data, value) nrfx_atomic_u32_fetch_xor(p_data, value)
|
||||
|
||||
/**
|
||||
* @brief Performs logical ADD operation on an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value of second operand of ADD operation.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_ADD(p_data, value) nrfx_atomic_u32_fetch_add(p_data, value)
|
||||
|
||||
/**
|
||||
* @brief Performs logical SUB operation on an atomic object and returns previously stored value.
|
||||
*
|
||||
* @param[in] p_data Atomic memory pointer.
|
||||
* @param[in] value Value of second operand of SUB operation.
|
||||
*
|
||||
* @return Old value stored into atomic object.
|
||||
*/
|
||||
#define NRFX_ATOMIC_FETCH_SUB(p_data, value) nrfx_atomic_u32_fetch_sub(p_data, value)
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef NRFX_CUSTOM_ERROR_CODES
|
||||
|
||||
#include <sdk_errors.h>
|
||||
/**
|
||||
* @brief When set to a non-zero value, this macro specifies that the
|
||||
@@ -236,6 +305,7 @@ typedef ret_code_t nrfx_err_t;
|
||||
#define NRFX_ERROR_DRV_TWI_ERR_ANACK NRF_ERROR_DRV_TWI_ERR_ANACK
|
||||
#define NRFX_ERROR_DRV_TWI_ERR_DNACK NRF_ERROR_DRV_TWI_ERR_DNACK
|
||||
|
||||
#endif // NRFX_CUSTOM_ERROR_CODES
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#include <sdk_resources.h>
|
||||
|
||||
@@ -354,6 +354,13 @@
|
||||
#define USBD_CONFIG_ISO_IN_ZLP 0
|
||||
#endif
|
||||
|
||||
#define NRFX_USBD_ENABLED USBD_ENABLED
|
||||
#define NRFX_USBD_POWER_DETECTION USBD_POWER_DETECTION
|
||||
#define NRFX_USBD_CONFIG_IRQ_PRIORITY USBD_CONFIG_IRQ_PRIORITY
|
||||
#define NRFX_USBD_CONFIG_DMASCHEDULER_MODE USBD_CONFIG_DMASCHEDULER_MODE
|
||||
#define NRFX_USBD_CONFIG_DMASCHEDULER_ISO_BOOST USBD_CONFIG_DMASCHEDULER_ISO_BOOST
|
||||
#define NRFX_USBD_CONFIG_ISO_IN_ZLP USBD_CONFIG_ISO_IN_ZLP
|
||||
|
||||
// </e>
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+234
-948
File diff suppressed because it is too large
Load Diff
+70
-210
@@ -1,210 +1,70 @@
|
||||
/**
|
||||
* Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NRF_DRV_USBD_ERRATA_H__
|
||||
#define NRF_DRV_USBD_ERRATA_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
/**
|
||||
* @defgroup nrf_drv_usbd_errata Functions to check if selected PAN is present in current chip
|
||||
* @{
|
||||
* @ingroup nrf_drv_usbd
|
||||
*
|
||||
* Functions here are checking the presence of an error in current chip.
|
||||
* The checking is done at runtime based on the microcontroller version.
|
||||
* This file is subject to removal when nRF51840 prototype support is removed.
|
||||
*/
|
||||
|
||||
#ifndef NRF_DRV_USBD_ERRATA_ENABLE
|
||||
/**
|
||||
* @brief The constant that informs if errata should be enabled at all
|
||||
*
|
||||
* If this constant is set to 0, all the Errata bug fixes will be automatically disabled.
|
||||
*/
|
||||
#define NRF_DRV_USBD_ERRATA_ENABLE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Internal auxiliary function to check if the program is running on NRF52840 chip
|
||||
* @retval true It is NRF52480 chip
|
||||
* @retval false It is other chip
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_type_52840(void)
|
||||
{
|
||||
return (*(uint32_t *)0x10000130UL == 0x8UL);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Internal auxiliary function to check if the program is running on Engineering A revision
|
||||
* @retval true It is NRF52480 chip and it is Engineering A revision
|
||||
* @retval false It is other chip
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_type_52840_eng_a(void)
|
||||
{
|
||||
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x0UL));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Internal auxiliary function to check if the program is running on Engineering B revision
|
||||
* @retval true It is NRF52480 chip and it is Engineering B revision
|
||||
* @retval false It is other chip
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_type_52840_eng_b(void)
|
||||
{
|
||||
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x1UL));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Internal auxiliary function to check if the program is running on Engineering C revision
|
||||
* @retval true It is NRF52480 chip and it is Engineering C revision
|
||||
* @retval false It is other chip
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_type_52840_eng_c(void)
|
||||
{
|
||||
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x2UL));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Internal auxiliary function to check if the program is running on Engineering D revision
|
||||
* @retval true It is NRF52480 chip and it is Engineering D revision
|
||||
* @retval false It is other chip
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_type_52840_eng_d(void)
|
||||
{
|
||||
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x3UL));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 104
|
||||
*
|
||||
* Errata: USBD: EPDATA event is not always generated.
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_104(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_eng_a());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 154
|
||||
*
|
||||
* Errata: During setup read/write transfer USBD acknowledges setup stage without SETUP task.
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_154(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_eng_a());
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 166
|
||||
*
|
||||
* Errata: ISO double buffering not functional
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_166(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 171
|
||||
*
|
||||
* Errata: USBD might not reach its active state.
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_171(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 187
|
||||
*
|
||||
* Errata: USB cannot be enabled
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_187(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE &&
|
||||
(nrf_drv_usbd_errata_type_52840_eng_b() ||
|
||||
nrf_drv_usbd_errata_type_52840_eng_c() ||
|
||||
nrf_drv_usbd_errata_type_52840_eng_d())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 199
|
||||
*
|
||||
* Errata: USBD cannot receive tasks during DMA
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usb_errata_199(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function to check if chip requires errata 200
|
||||
*
|
||||
* Errata: SIZE.EPOUT not writable
|
||||
*
|
||||
* @retval true Errata should be implemented
|
||||
* @retval false Errata should not be implemented
|
||||
*/
|
||||
static inline bool nrf_drv_usbd_errata_200(void)
|
||||
{
|
||||
return (NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_eng_a());
|
||||
}
|
||||
|
||||
/** @} */
|
||||
#endif /* NRF_DRV_USBD_ERRATA_H__ */
|
||||
/**
|
||||
* Copyright (c) 2017 - 2019, Nordic Semiconductor ASA
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||
* such product, must reproduce the above copyright notice, this list of
|
||||
* conditions and the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* 4. This software, with or without modification, must only be used with a
|
||||
* Nordic Semiconductor ASA integrated circuit.
|
||||
*
|
||||
* 5. Any software provided in binary form under this license must not be reverse
|
||||
* engineered, decompiled, modified and/or disassembled.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef NRF_DRV_USBD_ERRATA_H__
|
||||
#define NRF_DRV_USBD_ERRATA_H__
|
||||
|
||||
#include "nrfx.h"
|
||||
|
||||
#ifndef NRFX_USBD_ERRATA_ENABLE
|
||||
#ifdef NRF_DRV_USBD_ERRATA_ENABLE
|
||||
#define NRFX_USBD_ERRATA_ENABLE NRF_DRV_USBD_ERRATA_ENABLE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../src/nrfx_usbd_errata.h"
|
||||
|
||||
#ifndef NRF_DRV_USBD_ERRATA_ENABLE
|
||||
#define NRF_DRV_USBD_ERRATA_ENABLE NRFX_USBD_ERRATA_ENABLE
|
||||
#endif
|
||||
|
||||
#define nrf_drv_usbd_errata_type_52840 nrfx_usbd_errata_type_52840
|
||||
#define nrf_drv_usbd_errata_type_52840_proto1 nrfx_usbd_errata_type_52840_proto1
|
||||
#define nrf_drv_usbd_errata_type_52840_fp1 nrfx_usbd_errata_type_52840_fp1
|
||||
#define nrf_drv_usbd_errata_type_52840_fp2 nrfx_usbd_errata_type_52840_fp2
|
||||
#define nrf_drv_usbd_errata_104 nrfx_usbd_errata_104
|
||||
#define nrf_drv_usbd_errata_154 nrfx_usbd_errata_154
|
||||
#define nrf_drv_usbd_errata_166 nrfx_usbd_errata_166
|
||||
#define nrf_drv_usbd_errata_171 nrfx_usbd_errata_171
|
||||
#define nrf_drv_usbd_errata_187 nrfx_usbd_errata_187
|
||||
#define nrf_drv_usbd_errata_sizeepout_rw nrfx_usbd_errata_sizeepout_rw
|
||||
#define nrf_drv_usb_errata_199 nrfx_usb_errata_199
|
||||
|
||||
#endif /* NRF_DRV_USBD_ERRATA_H__ */
|
||||
|
||||
Reference in New Issue
Block a user