diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-11-08 10:39:46 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-11-08 10:39:46 +0000 |
commit | 4a6cc2a4b35e2cb069cb273b7e098366c7bae059 (patch) | |
tree | b08f1c8e32e76029b8442e1ab27e173a3565009b /c/src/lib/libbsp/arm/lpc24xx/ssp | |
parent | 2011-11-08 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-4a6cc2a4b35e2cb069cb273b7e098366c7bae059.tar.bz2 |
2011-11-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
* include/lpc17xx.h: New file.
* Makefile.am, preinstall.am: Reflect change above. Update due to API
changes.
* configure.ac, console/console-config.c, include/bsp.h, include/io.h,
include/irq.h, include/lcd.h, include/lpc-clock-config.h,
include/lpc24xx.h, include/start-config.h, irq/irq-dispatch.c,
irq/irq.c, misc/bspidle.c, misc/io.c, misc/lcd.c, misc/restart.c,
misc/system-clocks.c, ssp/ssp.c, startup/bspreset.c,
startup/bspstart.c, startup/bspstarthooks.c,
startup/start-config-emc-dynamic.c, startup/start-config-emc-static.c,
startup/start-config-pinsel.c: Basic support for LPC17XX. New memory
configurations for W9825G2JB75I, IS42S32800B, and SST39VF3201.
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc24xx/ssp')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/ssp/ssp.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/ssp/ssp.c b/c/src/lib/libbsp/arm/lpc24xx/ssp/ssp.c index 6882163731..ce50f6384b 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/ssp/ssp.c +++ b/c/src/lib/libbsp/arm/lpc24xx/ssp/ssp.c @@ -25,6 +25,7 @@ #include <bsp/irq.h> #include <bsp/system-clocks.h> #include <bsp/dma.h> +#include <bsp/io.h> #define RTEMS_STATUS_CHECKS_USE_PRINTK @@ -181,6 +182,7 @@ static rtems_status_code lpc24xx_ssp_init(rtems_libi2c_bus_t *bus) unsigned pclk = lpc24xx_cclk(); unsigned pre = ((pclk + LPC24XX_SSP_BAUD_RATE - 1) / LPC24XX_SSP_BAUD_RATE + 1) & ~1U; + lpc24xx_module module = LPC24XX_MODULE_SSP_0; rtems_vector_number vector = UINT32_MAX; if (lpc24xx_ssp_dma_data.status == LPC24XX_SSP_DMA_NOT_INITIALIZED) { @@ -213,26 +215,23 @@ static rtems_status_code lpc24xx_ssp_init(rtems_libi2c_bus_t *bus) /* Disable module */ regs->cr1 = 0; - /* Set clock select and get vector number */ switch ((uintptr_t) regs) { case SSP0_BASE_ADDR: - rtems_interrupt_disable(level); - PCLKSEL1 = SET_PCLKSEL1_PCLK_SSP0(PCLKSEL1, 1); - rtems_interrupt_enable(level); - + module = LPC24XX_MODULE_SSP_0; vector = LPC24XX_IRQ_SPI_SSP_0; break; case SSP1_BASE_ADDR: - rtems_interrupt_disable(level); - PCLKSEL0 = SET_PCLKSEL0_PCLK_SSP1(PCLKSEL0, 1); - rtems_interrupt_enable(level); - + module = LPC24XX_MODULE_SSP_1; vector = LPC24XX_IRQ_SSP_1; break; default: return RTEMS_IO_ERROR; } + /* Set clock select */ + sc = lpc24xx_module_enable(module, LPC24XX_MODULE_PCLK_DEFAULT); + RTEMS_CHECK_SC(sc, "enable module clock"); + /* Set serial clock rate to save value */ regs->cr0 = SET_SSP_CR0_SCR(0, 255); |