forked from Imagelibrary/rtems
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
* configure.ac: Fixed BSP option. * include/lpc32xx.h, startup/bspstarthooks.c: Added PLL setup.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* configure.ac: Fixed BSP option.
|
||||||
|
* include/lpc32xx.h, startup/bspstarthooks.c: Added PLL setup.
|
||||||
|
|
||||||
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* startup/bspstarthooks.c: Removed start section attribute defines.
|
* startup/bspstarthooks.c: Removed start section attribute defines.
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_U6CLK],[clock configuration for UART 6])
|
|||||||
RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_UART_CLKMODE],[*],[0x00000200U])
|
RTEMS_BSPOPTS_SET([LPC32XX_CONFIG_UART_CLKMODE],[*],[0x00000200U])
|
||||||
RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_UART_CLKMODE],[clock mode configuration for UARTs])
|
RTEMS_BSPOPTS_HELP([LPC32XX_CONFIG_UART_CLKMODE],[clock mode configuration for UARTs])
|
||||||
|
|
||||||
RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[lpc32xx_boot],[1])
|
RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[lpc32xx_mzx_boot_int],[1])
|
||||||
RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[*],[])
|
RTEMS_BSPOPTS_SET([LPC32XX_DISABLE_MMU],[*],[])
|
||||||
RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_MMU],[disable MMU])
|
RTEMS_BSPOPTS_HELP([LPC32XX_DISABLE_MMU],[disable MMU])
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include <bsp/utility.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup lpc32xx_reg Register Definitions
|
* @defgroup lpc32xx_reg Register Definitions
|
||||||
*
|
*
|
||||||
@@ -200,6 +202,54 @@
|
|||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Power Control Register (PWR_CTRL)
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define PWR_STOP BIT32(0)
|
||||||
|
#define PWR_HIGHCORE_ALWAYS BIT32(1)
|
||||||
|
#define PWR_NORMAL_RUN_MODE BIT32(2)
|
||||||
|
#define PWR_SYSCLKEN_ALWAYS BIT32(3)
|
||||||
|
#define PWR_SYSCLKEN_HIGH BIT32(4)
|
||||||
|
#define PWR_HIGHCORE_HIGH BIT32(5)
|
||||||
|
#define PWR_SDRAM_AUTO_REFRESH BIT32(7)
|
||||||
|
#define PWR_UPDATE_EMCSREFREQ BIT32(8)
|
||||||
|
#define PWR_EMCSREFREQ BIT32(9)
|
||||||
|
#define PWR_HCLK_USES_PERIPH_CLK BIT32(10)
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name HCLK PLL Control Register (HCLKPLL_CTRL)
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define HCLK_PLL_LOCK BIT32(0)
|
||||||
|
#define HCLK_PLL_M(val) FIELD32(val, 1, 8)
|
||||||
|
#define HCLK_PLL_N(val) FIELD32(val, 9, 2)
|
||||||
|
#define HCLK_PLL_P(val) FIELD32(val, 11, 2)
|
||||||
|
#define HCLK_PLL_FBD_FCLKOUT BIT32(13)
|
||||||
|
#define HCLK_PLL_DIRECT BIT32(14)
|
||||||
|
#define HCLK_PLL_BYPASS BIT32(15)
|
||||||
|
#define HCLK_PLL_POWER BIT32(16)
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name HCLK Divider Control Register (HCLKDIV_CTRL)
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define HCLK_DIV_HCLK(val) FIELD32(val, 0, 2)
|
||||||
|
#define HCLK_DIV_PERIPH_CLK(val) FIELD32(val, 2, 5)
|
||||||
|
#define HCLK_DIV_DDRAM_CLK(val) FIELD32(val, 7, 2)
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
#endif /* LIBBSP_ARM_LPC32XX_LPC32XX_H */
|
#endif /* LIBBSP_ARM_LPC32XX_LPC32XX_H */
|
||||||
|
|||||||
@@ -182,8 +182,32 @@ static void BSP_START_SECTION lpc32xx_mmu_and_cache_setup(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LPC32XX_OSCILLATOR_MAIN != 13000000U
|
||||||
|
#error "unexpected main oscillator frequency"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void BSP_START_SECTION lpc32xx_pll_setup(void)
|
||||||
|
{
|
||||||
|
uint32_t pwr_ctrl = LPC32XX_PWR_CTRL;
|
||||||
|
|
||||||
|
if ((pwr_ctrl & PWR_NORMAL_RUN_MODE) == 0) {
|
||||||
|
/* Enable HCLK PLL */
|
||||||
|
LPC32XX_HCLKPLL_CTRL = HCLK_PLL_POWER | HCLK_PLL_DIRECT | HCLK_PLL_M(16 - 1);
|
||||||
|
while ((LPC32XX_HCLKPLL_CTRL & HCLK_PLL_LOCK) == 0) {
|
||||||
|
/* Wait */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Setup HCLK divider */
|
||||||
|
LPC32XX_HCLKDIV_CTRL = HCLK_DIV_HCLK(2 - 1) | HCLK_DIV_PERIPH_CLK(16 - 1);
|
||||||
|
|
||||||
|
/* Enable HCLK PLL output */
|
||||||
|
LPC32XX_PWR_CTRL = pwr_ctrl | PWR_NORMAL_RUN_MODE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BSP_START_SECTION bsp_start_hook_0(void)
|
void BSP_START_SECTION bsp_start_hook_0(void)
|
||||||
{
|
{
|
||||||
|
lpc32xx_pll_setup();
|
||||||
lpc32xx_mmu_and_cache_setup();
|
lpc32xx_mmu_and_cache_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user