update nrf errata
This commit is contained in:
@@ -145,7 +145,6 @@ void tusb_hal_nrf_power_event (uint32_t event)
|
|||||||
/* Enable the peripheral */
|
/* Enable the peripheral */
|
||||||
// ERRATA 171, 187, 166
|
// ERRATA 171, 187, 166
|
||||||
|
|
||||||
// Somehow Errata 187 check failed for pca10056 1.0.0 (2018.19)
|
|
||||||
if ( nrf_drv_usbd_errata_187() )
|
if ( nrf_drv_usbd_errata_187() )
|
||||||
{
|
{
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
@@ -209,7 +208,6 @@ void tusb_hal_nrf_power_event (uint32_t event)
|
|||||||
// CRITICAL_REGION_EXIT();
|
// CRITICAL_REGION_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Somehow Errata 187 check failed for pca10056 1.0.0 (2018.19)
|
|
||||||
if ( nrf_drv_usbd_errata_187() )
|
if ( nrf_drv_usbd_errata_187() )
|
||||||
{
|
{
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
@@ -247,9 +245,7 @@ void tusb_hal_nrf_power_event (uint32_t event)
|
|||||||
NVIC_EnableIRQ(USBD_IRQn);
|
NVIC_EnableIRQ(USBD_IRQn);
|
||||||
|
|
||||||
// Wait for HFCLK
|
// Wait for HFCLK
|
||||||
while ( !hfclk_running() )
|
while ( !hfclk_running() ) { }
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable pull up
|
// Enable pull up
|
||||||
nrf_usbd_pullup_enable();
|
nrf_usbd_pullup_enable();
|
||||||
|
@@ -1,30 +1,30 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
|
* Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
|
||||||
*
|
*
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
* are permitted provided that the following conditions are met:
|
* are permitted provided that the following conditions are met:
|
||||||
*
|
*
|
||||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
* list of conditions and the following disclaimer.
|
* list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* 2. Redistributions in binary form, except as embedded into a Nordic
|
* 2. Redistributions in binary form, except as embedded into a Nordic
|
||||||
* Semiconductor ASA integrated circuit in a product or a software update for
|
* Semiconductor ASA integrated circuit in a product or a software update for
|
||||||
* such product, must reproduce the above copyright notice, this list of
|
* such product, must reproduce the above copyright notice, this list of
|
||||||
* conditions and the following disclaimer in the documentation and/or other
|
* conditions and the following disclaimer in the documentation and/or other
|
||||||
* materials provided with the distribution.
|
* materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* 3. Neither the name of Nordic Semiconductor ASA nor the names of its
|
* 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
|
* contributors may be used to endorse or promote products derived from this
|
||||||
* software without specific prior written permission.
|
* software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* 4. This software, with or without modification, must only be used with a
|
* 4. This software, with or without modification, must only be used with a
|
||||||
* Nordic Semiconductor ASA integrated circuit.
|
* Nordic Semiconductor ASA integrated circuit.
|
||||||
*
|
*
|
||||||
* 5. Any software provided in binary form under this license must not be reverse
|
* 5. Any software provided in binary form under this license must not be reverse
|
||||||
* engineered, decompiled, modified and/or disassembled.
|
* engineered, decompiled, modified and/or disassembled.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
* THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
|
||||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
* 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.
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef NRF_DRV_USBD_ERRATA_H__
|
#ifndef NRF_DRV_USBD_ERRATA_H__
|
||||||
@@ -68,34 +68,47 @@
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_type_52840(void)
|
static inline bool nrf_drv_usbd_errata_type_52840(void)
|
||||||
{
|
{
|
||||||
return ((((*(uint32_t *)0xF0000FE0) & 0xFF) == 0x08) &&
|
return (*(uint32_t *)0x10000130UL == 0x8UL);
|
||||||
(((*(uint32_t *)0xF0000FE4) & 0x0F) == 0x0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Internal auxiliary function to check if the program is running on first sample of
|
* @brief Internal auxiliary function to check if the program is running on Engineering A revision
|
||||||
* NRF52840 chip
|
* @retval true It is NRF52480 chip and it is Engineering A revision
|
||||||
* @retval true It is NRF52480 chip and it is first sample version
|
|
||||||
* @retval false It is other chip
|
* @retval false It is other chip
|
||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_type_52840_proto1(void)
|
static inline bool nrf_drv_usbd_errata_type_52840_eng_a(void)
|
||||||
{
|
{
|
||||||
return ( nrf_drv_usbd_errata_type_52840() &&
|
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x0UL));
|
||||||
( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x00 ) &&
|
|
||||||
( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Internal auxiliary function to check if the program is running on first final product of
|
* @brief Internal auxiliary function to check if the program is running on Engineering B revision
|
||||||
* NRF52840 chip
|
* @retval true It is NRF52480 chip and it is Engineering B revision
|
||||||
* @retval true It is NRF52480 chip and it is first final product
|
|
||||||
* @retval false It is other chip
|
* @retval false It is other chip
|
||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
|
static inline bool nrf_drv_usbd_errata_type_52840_eng_b(void)
|
||||||
{
|
{
|
||||||
return ( nrf_drv_usbd_errata_type_52840() &&
|
return (nrf_drv_usbd_errata_type_52840() && (*(uint32_t *)0x10000134UL == 0x1UL));
|
||||||
( ((*(uint32_t *)0xF0000FE8) & 0xF0) == 0x20 ) &&
|
}
|
||||||
( ((*(uint32_t *)0xF0000FEC) & 0xF0) == 0x00 ) );
|
|
||||||
|
/**
|
||||||
|
* @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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -108,7 +121,7 @@ static inline bool nrf_drv_usbd_errata_type_52840_fp1(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_104(void)
|
static inline bool nrf_drv_usbd_errata_104(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_proto1();
|
return (NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_eng_a());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,7 +134,7 @@ static inline bool nrf_drv_usbd_errata_104(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_154(void)
|
static inline bool nrf_drv_usbd_errata_154(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_proto1();
|
return (NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_eng_a());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,7 +147,7 @@ static inline bool nrf_drv_usbd_errata_154(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_166(void)
|
static inline bool nrf_drv_usbd_errata_166(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && true;
|
return (NRF_DRV_USBD_ERRATA_ENABLE && true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -147,7 +160,7 @@ static inline bool nrf_drv_usbd_errata_166(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_171(void)
|
static inline bool nrf_drv_usbd_errata_171(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && true;
|
return (NRF_DRV_USBD_ERRATA_ENABLE && true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -160,20 +173,11 @@ static inline bool nrf_drv_usbd_errata_171(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usbd_errata_187(void)
|
static inline bool nrf_drv_usbd_errata_187(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_fp1();
|
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 ???
|
);
|
||||||
*
|
|
||||||
* 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_sizeepout_rw(void)
|
|
||||||
{
|
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && nrf_drv_usbd_errata_type_52840_proto1();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -186,7 +190,20 @@ static inline bool nrf_drv_usbd_errata_sizeepout_rw(void)
|
|||||||
*/
|
*/
|
||||||
static inline bool nrf_drv_usb_errata_199(void)
|
static inline bool nrf_drv_usb_errata_199(void)
|
||||||
{
|
{
|
||||||
return NRF_DRV_USBD_ERRATA_ENABLE && true;
|
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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
Reference in New Issue
Block a user