Skip to content

Commit 79727b6

Browse files
committed
RT 159670: adjust eNVM accesss timings depending on CPU speed for LPC1788
1 parent ac9ceb0 commit 79727b6

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

cpu/arm_cortexm3/lpc178x/clock.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,24 @@ static void clock_setup(void)
469469
*/
470470
void clock_init(void)
471471
{
472+
/* adjust eNVM access timings */
473+
if (LPC178X_CPU_RATE/1000000 >= 80) {
474+
LPC178X_SCC->flashcfg &= ~LPC178X_SCC_FLASHCFG_FTIM_MSK;
475+
LPC178X_SCC->flashcfg |= LPC178X_SCC_FLASHCFG_FTIM_5CLK;
476+
} else if (LPC178X_CPU_RATE/1000000 >= 60) {
477+
LPC178X_SCC->flashcfg &= ~LPC178X_SCC_FLASHCFG_FTIM_MSK;
478+
LPC178X_SCC->flashcfg |= LPC178X_SCC_FLASHCFG_FTIM_4CLK;
479+
} else if (LPC178X_CPU_RATE/1000000 >= 40) {
480+
LPC178X_SCC->flashcfg &= ~LPC178X_SCC_FLASHCFG_FTIM_MSK;
481+
LPC178X_SCC->flashcfg |= LPC178X_SCC_FLASHCFG_FTIM_3CLK;
482+
} else if (LPC178X_CPU_RATE/1000000 >= 20) {
483+
LPC178X_SCC->flashcfg &= ~LPC178X_SCC_FLASHCFG_FTIM_MSK;
484+
LPC178X_SCC->flashcfg |= LPC178X_SCC_FLASHCFG_FTIM_2CLK;
485+
} else {
486+
LPC178X_SCC->flashcfg &= ~LPC178X_SCC_FLASHCFG_FTIM_MSK;
487+
LPC178X_SCC->flashcfg |= LPC178X_SCC_FLASHCFG_FTIM_1CLK;
488+
}
489+
472490
clock_setup();
473491

474492
/*

include/asm-arm/arch-lpc178x/lpc178x.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,17 @@
6161
#define LPC178X_SCC_PCONP_PCENET_MSK (1 << 30)
6262
#define LPC178X_SCC_PCONP_PCUSB_MSK (1 << 31)
6363

64+
/*
65+
* Flash Accelerator Configuration register values
66+
*/
67+
#define LPC178X_SCC_FLASHCFG_FTIM_MSK (0xF << 12)
68+
#define LPC178X_SCC_FLASHCFG_FTIM_1CLK (0x0 << 12)
69+
#define LPC178X_SCC_FLASHCFG_FTIM_2CLK (0x1 << 12)
70+
#define LPC178X_SCC_FLASHCFG_FTIM_3CLK (0x2 << 12)
71+
#define LPC178X_SCC_FLASHCFG_FTIM_4CLK (0x3 << 12)
72+
#define LPC178X_SCC_FLASHCFG_FTIM_5CLK (0x4 << 12)
73+
#define LPC178X_SCC_FLASHCFG_FTIM_6CLK (0x5 << 12)
74+
6475
/*
6576
* PLL register map
6677
* Used for PLL0 at 0x400FC080 and for PLL1 at 0x400FC0A0.
@@ -84,7 +95,10 @@ struct lpc178x_pll_regs {
8495
*/
8596
struct lpc178x_scc_regs {
8697
/* 0x400FC000: Flash Accelerator Configuration Register */
87-
u32 rsv0[32];
98+
u32 flashcfg;
99+
100+
/* 0x400FC004: reserved */
101+
u32 rsv0[31];
88102

89103
/* 0x400FC080: PLL0 registers */
90104
struct lpc178x_pll_regs pll0; /* PLL0 registers */

0 commit comments

Comments
 (0)