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();
|
||||||
|
@@ -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