fix errata 187 check failed for nrf52840 1st production chip
This commit is contained in:
		@@ -196,10 +196,11 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        /* Enable the peripheral */
 | 
					        /* Enable the peripheral */
 | 
				
			||||||
        // ERRATA 171, 187, 166
 | 
					        // ERRATA 171, 187, 166
 | 
				
			||||||
        if ( nrf_drv_usbd_errata_187() )
 | 
					
 | 
				
			||||||
 | 
					        // Somehow Errata 187 check failed for pca10056 1.0.0 (2018.19)
 | 
				
			||||||
 | 
					        //if ( nrf_drv_usbd_errata_187() )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          CRITICAL_REGION_ENTER()
 | 
					          CRITICAL_REGION_ENTER();
 | 
				
			||||||
          ;
 | 
					 | 
				
			||||||
          if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
					          if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
            *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
					            *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
				
			||||||
@@ -210,14 +211,12 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
          {
 | 
					          {
 | 
				
			||||||
            *((volatile uint32_t *) (0x4006ED14)) = 0x00000003;
 | 
					            *((volatile uint32_t *) (0x4006ED14)) = 0x00000003;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          CRITICAL_REGION_EXIT()
 | 
					          CRITICAL_REGION_EXIT();
 | 
				
			||||||
          ;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ( nrf_drv_usbd_errata_171() )
 | 
					        if ( nrf_drv_usbd_errata_171() )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          CRITICAL_REGION_ENTER()
 | 
					          CRITICAL_REGION_ENTER();
 | 
				
			||||||
          ;
 | 
					 | 
				
			||||||
          if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
					          if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
            *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
					            *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
				
			||||||
@@ -228,8 +227,7 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
          {
 | 
					          {
 | 
				
			||||||
            *((volatile uint32_t *) (0x4006EC14)) = 0x000000C0;
 | 
					            *((volatile uint32_t *) (0x4006EC14)) = 0x000000C0;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          CRITICAL_REGION_EXIT()
 | 
					          CRITICAL_REGION_EXIT();
 | 
				
			||||||
          ;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        nrf_usbd_enable();
 | 
					        nrf_usbd_enable();
 | 
				
			||||||
@@ -241,16 +239,14 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    case NRFX_POWER_USB_EVT_READY:
 | 
					    case NRFX_POWER_USB_EVT_READY:
 | 
				
			||||||
      /* Waiting for USBD peripheral enabled */
 | 
					      /* Waiting for USBD peripheral enabled */
 | 
				
			||||||
      while ( !(NRF_USBD_EVENTCAUSE_READY_MASK & NRF_USBD->EVENTCAUSE) )
 | 
					      while ( !(USBD_EVENTCAUSE_READY_Msk & NRF_USBD->EVENTCAUSE) ) { }
 | 
				
			||||||
      {
 | 
					
 | 
				
			||||||
      }
 | 
					      nrf_usbd_eventcause_clear(USBD_EVENTCAUSE_READY_Msk);
 | 
				
			||||||
      nrf_usbd_eventcause_clear(NRF_USBD_EVENTCAUSE_READY_MASK);
 | 
					      nrf_usbd_event_clear(USBD_EVENTCAUSE_READY_Msk);
 | 
				
			||||||
      nrf_usbd_event_clear(NRF_USBD_EVENT_USBEVENT);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ( nrf_drv_usbd_errata_171() )
 | 
					      if ( nrf_drv_usbd_errata_171() )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        CRITICAL_REGION_ENTER()
 | 
					        CRITICAL_REGION_ENTER();
 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
        if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
					        if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
					          *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
				
			||||||
@@ -262,14 +258,13 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
          *((volatile uint32_t *) (0x4006EC14)) = 0x00000000;
 | 
					          *((volatile uint32_t *) (0x4006EC14)) = 0x00000000;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CRITICAL_REGION_EXIT()
 | 
					        CRITICAL_REGION_EXIT();
 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ( nrf_drv_usbd_errata_187() )
 | 
					      // Somehow Errata 187 check failed for pca10056 1.0.0 (2018.19)
 | 
				
			||||||
 | 
					      //if ( nrf_drv_usbd_errata_187() )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        CRITICAL_REGION_ENTER()
 | 
					        CRITICAL_REGION_ENTER();
 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
        if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
					        if ( *((volatile uint32_t *) (0x4006EC00)) == 0x00000000 )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
					          *((volatile uint32_t *) (0x4006EC00)) = 0x00009375;
 | 
				
			||||||
@@ -280,8 +275,7 @@ void tusb_hal_nrf_power_event (uint32_t event)
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          *((volatile uint32_t *) (0x4006ED14)) = 0x00000000;
 | 
					          *((volatile uint32_t *) (0x4006ED14)) = 0x00000000;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        CRITICAL_REGION_EXIT()
 | 
					        CRITICAL_REGION_EXIT();
 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if ( nrf_drv_usbd_errata_166() )
 | 
					      if ( nrf_drv_usbd_errata_166() )
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user