Exemplo n.º 1
0
/*----------------------------------------------------------------------------*/
static enum result eepromInit(void *object, const void *configBase)
{
  const struct EepromConfig * const config = configBase;
  struct Eeprom * const interface = object;

  if (!setDescriptor(0, interface))
    return E_BUSY;

  interface->position = 0;
  interface->size = (uintptr_t)&_eeeprom - (uintptr_t)&_seeprom;
  interface->blocking = true;

  /* Enable clock to register interface and peripheral */
  sysClockEnable(CLK_M4_EEPROM);
  /* Reset registers to default values */
  sysResetEnable(RST_EEPROM);

  const uint32_t frequency = clockFrequency(MainClock);

  LPC_EEPROM->CLKDIV = (frequency + (EEPROM_CLOCK - 1)) / EEPROM_CLOCK - 1;
  LPC_EEPROM->INTENSET = INT_PROG_DONE;

  if (config)
    irqSetPriority(EEPROM_IRQ, config->priority);
  irqEnable(EEPROM_IRQ);

  return E_OK;
}
Exemplo n.º 2
0
/*----------------------------------------------------------------------------*/
void platformStartup(void)
{
  static const enum sysClockBranch blocksToDisable[] = {
      CLK_APB3_I2C1,
      CLK_APB3_DAC,
      CLK_APB3_ADC0,
      CLK_APB3_ADC1,
      CLK_APB3_CAN0,
      CLK_APB1_MCPWM,
      CLK_APB1_I2C0,
      CLK_APB1_I2S,
      CLK_APB1_CAN1,
      CLK_M4_SPIFI,
      CLK_M4_LCD,
      CLK_M4_ENET,
      CLK_M4_USB0,
      CLK_M4_EMC,
      CLK_M4_SDIO,
      CLK_M4_GPDMA,
      CLK_M4_SCT,
      CLK_M4_USB1,
      CLK_M4_EMCDIV,
      CLK_M4_M0APP,
      CLK_M4_ADCHS,
      CLK_M4_EEPROM,
      CLK_M4_WWDT,
      CLK_M4_USART0,
      CLK_M4_UART1,
      CLK_M4_SSP0,
      CLK_M4_TIMER0,
      CLK_M4_TIMER1,
      CLK_M4_RIT,
      CLK_M4_USART2,
      CLK_M4_USART3,
      CLK_M4_TIMER2,
      CLK_M4_TIMER3,
      CLK_M4_SSP1,
      CLK_M4_QEI,
      CLK_APB2_USART3,
      CLK_APB2_USART2,
      CLK_APB0_UART1,
      CLK_APB0_USART0,
      CLK_APB2_SSP1,
      CLK_APB0_SSP0,
      CLK_SPIFI,
      CLK_SPI,
      CLK_ADCHS,
      CLK_AUDIO,
      CLK_SDIO,
      CLK_PERIPH_SGPIO
  };

  /*
   * CLK_M4_BUS, CLK_M4_GPIO, CLK_M4_M4CORE, CLK_M4_FLASHA, CLK_M4_FLASHB,
   * CLK_M4_SCU, CLK_M4_CREG are enabled by default.
   * CLK_USB0, CLK_USB1, CLK_PERIPH_BUS, CLK_PERIPH_CORE are left untouched.
   */

  for (unsigned int index = 0; index < ARRAY_SIZE(blocksToDisable); ++index)
    sysClockDisable(blocksToDisable[index]);

#ifdef CONFIG_FPU
  fpuEnable();
#endif

  /* Reset SCU and GPIO blocks */
  sysResetEnable(RST_SCU);
  sysResetEnable(RST_GPIO);
}