summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc32xx/misc/emc.c')
-rw-r--r--c/src/lib/libbsp/arm/lpc32xx/misc/emc.c111
1 files changed, 0 insertions, 111 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c b/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
deleted file mode 100644
index d8b82e7051..0000000000
--- a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * @file
- *
- * @ingroup lpc32xx_emc
- *
- * @brief EMC support implementation.
- */
-
-/*
- * Copyright (c) 2010
- * embedded brains GmbH
- * Obere Lagerstr. 30
- * D-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.org/license/LICENSE.
- */
-
-#include <bsp/emc.h>
-
-#include <bsp.h>
-#include <bsp/mmu.h>
-
-static volatile lpc_emc *const emc = &lpc32xx.emc;
-
-static volatile lpc32xx_emc_ahb *const emc_ahb = &lpc32xx.emc_ahb [0];
-
-static void dynamic_init(const lpc32xx_emc_dynamic_config *cfg)
-{
- uint32_t chip_begin = LPC32XX_BASE_EMC_DYCS_0;
- uint32_t dynamiccontrol = (cfg->control | EMC_DYN_CTRL_CE | EMC_DYN_CTRL_CS)
- & ~EMC_DYN_CTRL_I_MASK;
- size_t i = 0;
-
- LPC32XX_SDRAMCLK_CTRL = cfg->sdramclk_ctrl;
-
- emc->dynamicreadconfig = cfg->readconfig;
-
- /* Timings */
- emc->dynamictrp = cfg->trp;
- emc->dynamictras = cfg->tras;
- emc->dynamictsrex = cfg->tsrex;
- emc->dynamictwr = cfg->twr;
- emc->dynamictrc = cfg->trc;
- emc->dynamictrfc = cfg->trfc;
- emc->dynamictxsr = cfg->txsr;
- emc->dynamictrrd = cfg->trrd;
- emc->dynamictmrd = cfg->tmrd;
- emc->dynamictcdlr = cfg->tcdlr;
- for (i = 0; i < EMC_DYN_CHIP_COUNT; ++i) {
- if (cfg->chip [i].size != 0) {
- emc->dynamic [i].config = cfg->chip [i].config;
- emc->dynamic [i].rascas = cfg->chip [i].rascas;
- }
- }
-
- /* NOP period */
- emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_NOP;
- lpc32xx_micro_seconds_delay(cfg->nop_time_in_us);
-
- /* Precharge */
- emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_PALL;
- emc->dynamicrefresh = 1;
- /* FIXME: Why a delay, why this value? */
- lpc32xx_micro_seconds_delay(10);
-
- /* Refresh timing */
- emc->dynamicrefresh = cfg->refresh;
- /* FIXME: Why a delay, why this value? */
- lpc32xx_micro_seconds_delay(16);
-
- /* Set modes */
- for (i = 0; i < EMC_DYN_CHIP_COUNT; ++i) {
- if (cfg->chip [i].size != 0) {
- lpc32xx_set_translation_table_entries(
- (void *) chip_begin,
- (void *) (chip_begin + cfg->chip [i].size),
- LPC32XX_MMU_READ_WRITE
- );
- emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE;
- *(volatile uint32_t *)(chip_begin + cfg->chip [i].mode);
- emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE;
- *(volatile uint32_t *)(chip_begin + cfg->chip [i].extmode);
- }
- chip_begin += 0x20000000;
- }
-
- emc->dynamiccontrol = cfg->control;
-}
-
-void lpc32xx_emc_init(const lpc32xx_emc_dynamic_config *dyn_cfg)
-{
- /* Enable buffers in AHB ports */
- emc_ahb [0].control = EMC_AHB_PORT_BUFF_EN;
- emc_ahb [3].control = EMC_AHB_PORT_BUFF_EN;
- emc_ahb [4].control = EMC_AHB_PORT_BUFF_EN;
-
- /* Set AHB port timeouts */
- emc_ahb [0].timeout = EMC_AHB_TIMEOUT(32);
- emc_ahb [3].timeout = EMC_AHB_TIMEOUT(32);
- emc_ahb [4].timeout = EMC_AHB_TIMEOUT(32);
-
- /* Enable EMC */
- emc->control = EMC_CTRL_E,
- emc->config = 0;
-
- dynamic_init(dyn_cfg);
-}