summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lpc24xx/ssp
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-11-08 10:39:46 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-11-08 10:39:46 +0000
commit4a6cc2a4b35e2cb069cb273b7e098366c7bae059 (patch)
treeb08f1c8e32e76029b8442e1ab27e173a3565009b /c/src/lib/libbsp/arm/lpc24xx/ssp
parent2011-11-08 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-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.c17
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);