[nrf528xx] update usbd (#3618)

This commit is contained in:
Kamil Sroka
2019-02-22 09:00:57 -08:00
committed by Jonathan Hui
parent 3eb5a106ff
commit 203bce7ae7
6 changed files with 387 additions and 3576 deletions
+4 -1
View File
@@ -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
View File
@@ -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
File diff suppressed because it is too large Load Diff
@@ -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__ */