bsp/lpc32xx: Add lpc32xx_select_nand_controller()

This commit is contained in:
Sebastian Huber
2012-07-25 15:51:21 +02:00
parent 833ac6076a
commit 6cfe52fcbc
3 changed files with 53 additions and 0 deletions

View File

@@ -136,6 +136,7 @@ libbsp_a_SOURCES += misc/nand-mlc-write-blocks.c
libbsp_a_SOURCES += misc/restart.c
libbsp_a_SOURCES += misc/system-clocks.c
libbsp_a_SOURCES += misc/timer.c
libbsp_a_SOURCES += misc/nand-select.c
# SSP

View File

@@ -138,6 +138,14 @@ uint32_t lpc32xx_arm_clk(void);
uint32_t lpc32xx_dram_clk(void);
typedef enum {
LPC32XX_NAND_CONTROLLER_NONE,
LPC32XX_NAND_CONTROLLER_MLC,
LPC32XX_NAND_CONTROLLER_SLC
} lpc32xx_nand_controller;
void lpc32xx_select_nand_controller(lpc32xx_nand_controller nand_controller);
void bsp_restart(void *addr);
#define BSP_CONSOLE_UART_BASE LPC32XX_BASE_UART_5

View File

@@ -0,0 +1,44 @@
/**
* @file
*
* @ingroup lpc32xx
*
* @brief NAND controller selection.
*/
/*
* Copyright (c) 2012 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Obere Lagerstr. 30
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*/
#include <bsp.h>
#include <bsp/lpc32xx.h>
#include <bsp/nand-mlc.h>
void lpc32xx_select_nand_controller(lpc32xx_nand_controller nand_controller)
{
uint32_t flashclk_ctrl = LPC32XX_FLASHCLK_CTRL & ~(FLASHCLK_IRQ_MLC
| FLASHCLK_SELECT_SLC | FLASHCLK_MLC_CLK_ENABLE | FLASHCLK_SLC_CLK_ENABLE);
switch (nand_controller) {
case LPC32XX_NAND_CONTROLLER_MLC:
flashclk_ctrl |= FLASHCLK_IRQ_MLC | FLASHCLK_MLC_CLK_ENABLE;
break;
case LPC32XX_NAND_CONTROLLER_SLC:
flashclk_ctrl |= FLASHCLK_SELECT_SLC | FLASHCLK_SLC_CLK_ENABLE;
break;
default:
break;
}
LPC32XX_FLASHCLK_CTRL = flashclk_ctrl;
}