Ejemplo n.º 1
0
unsigned lpc176x_cclk( void )
{
  const unsigned cclksel = LPC176X_SCB.cclksel;
  unsigned       cclk_in = 0u;
  unsigned       cclk = 0u;

  if ( ( cclksel & LPC176X_SCB_CCLKSEL_CCLKSEL ) != 0u ) {
    cclk_in = lpc176x_pllclk();
  } else {
    cclk_in = lpc176x_sysclk();
  }

  cclk = cclk_in / LPC176X_SCB_CCLKSEL_CCLKDIV_GET( cclksel );

  return cclk;
}
Ejemplo n.º 2
0
Archivo: io.c Proyecto: RTEMS/rtems
/**
 * @brief Checks the usb module.
 *
 * @return RTEMS_SUCCESFUL if the usb module is correct.
 */
static rtems_status_code check_usb_module( void )
{
  rtems_status_code status_code = RTEMS_INCORRECT_STATE;
  const uint32_t    pllclk = lpc176x_pllclk();
  const uint32_t    usbclk = LPC176X_USB_CLOCK;

  if ( pllclk % usbclk == 0u ) {
    const uint32_t usbdiv = pllclk / usbclk;

    LPC176X_SCB.usbclksel = LPC176X_SCB_USBCLKSEL_USBDIV( usbdiv ) |
                            LPC176X_SCB_USBCLKSEL_USBSEL( 1 );
    status_code = RTEMS_SUCCESSFUL;
  }

  /* else implies that the module has an incorrect pllclk or usbclk value.
      Also, there is nothing to do. */

  return status_code;
}