diff options
author | Gregory Nutt <gnutt@nuttx.org> | 2014-08-03 10:17:50 -0600 |
---|---|---|
committer | Gregory Nutt <gnutt@nuttx.org> | 2014-08-03 10:17:50 -0600 |
commit | 936a0db0adc216fcdeb90d059b32d1e5120e6803 (patch) | |
tree | 758506728863f0a32b88ffb5346e3a742d024cac | |
parent | 0a1aac1723ce2ff8b22996bec9cb0f3296888473 (diff) | |
download | nuttx-936a0db0adc216fcdeb90d059b32d1e5120e6803.tar.gz nuttx-936a0db0adc216fcdeb90d059b32d1e5120e6803.tar.bz2 nuttx-936a0db0adc216fcdeb90d059b32d1e5120e6803.zip |
SAMA5 PCK: Add Main clock as an option for the PCK clock source
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_pck.c | 62 | ||||
-rw-r--r-- | nuttx/arch/arm/src/sama5/sam_pck.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3-xplained/include/board_384mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3-xplained/include/board_396mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3-xplained/include/board_528mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3-xplained/include/board_sdram.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/include/board_384mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/include/board_396mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/include/board_528mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d3x-ek/include/board_sdram.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d4-ek/include/board_384mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d4-ek/include/board_396mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d4-ek/include/board_528mhz.h | 1 | ||||
-rw-r--r-- | nuttx/configs/sama5d4-ek/include/board_sdram.h | 1 |
14 files changed, 49 insertions, 26 deletions
diff --git a/nuttx/arch/arm/src/sama5/sam_pck.c b/nuttx/arch/arm/src/sama5/sam_pck.c index bdcf9d636..2f6ddb0b7 100644 --- a/nuttx/arch/arm/src/sama5/sam_pck.c +++ b/nuttx/arch/arm/src/sama5/sam_pck.c @@ -107,39 +107,49 @@ uint32_t sam_pck_configure(enum pckid_e pckid, enum pckid_clksrc_e clksrc, uint32_t clkin; uint32_t actual; - /* Pick a clock source. Several are possible but only MCK, PLLA, of SCK is - * chosen here. + /* Pick a clock source. Several are possible but only MCK, PLLA, the + * MAINCK,or SCK are supported here. */ - if (clksrc == PCKSRC_SCK) + switch (clksrc) { - /* Pick the slow clock */ + case PCKSRC_MCK: /* Source clock = MCK or PLLACK */ + { + /* Pick either the MCK or the PLLACK, whichever will best realize + * the target frequency. + */ + + DEBUGASSERT(BOARD_MCK_FREQUENCY < BOARD_PLLA_FREQUENCY); + + /* Pick the PLLACK if it seems like a better choice */ + + if (frequency <= BOARD_MCK_FREQUENCY || + frequency < BOARD_PLLA_FREQUENCY / 64) + { + regval = PMC_PCK_CSS_MCK; + clkin = BOARD_MCK_FREQUENCY; + } + else + { + regval = PMC_PCK_CSS_PLLA; + clkin = BOARD_PLLA_FREQUENCY; + } + } + break; + + case PCKSRC_MAINCK: /* Source clock = MAIN clock */ + regval = PMC_PCK_CSS_MAIN; + clkin = BOARD_MAINCK_FREQUENCY; + break; + case PCKSRC_SCK: /* Source clock = SCK */ regval = PMC_PCK_CSS_SLOW; clkin = BOARD_SLOWCLK_FREQUENCY; - } - - /* If the source is not the slow clock, then pick either the MCK or the - * PLLACK, whichever will best realize the target frequency. - */ + break; - else - { - DEBUGASSERT(BOARD_MCK_FREQUENCY < BOARD_PLLA_FREQUENCY); - - /* Pick the PLLACK if it seems like a better choice */ - - if (frequency <= BOARD_MCK_FREQUENCY || - frequency < BOARD_PLLA_FREQUENCY / 64) - { - regval = PMC_PCK_CSS_MCK; - clkin = BOARD_MCK_FREQUENCY; - } - else - { - regval = PMC_PCK_CSS_PLLA; - clkin = BOARD_PLLA_FREQUENCY; - } + default: + dbg("ERROR: Unknown clock source\n"); + return 0; } /* The the larger smallest divisor that does not exceed the requested diff --git a/nuttx/arch/arm/src/sama5/sam_pck.h b/nuttx/arch/arm/src/sama5/sam_pck.h index fb5040696..4e3f2ad86 100644 --- a/nuttx/arch/arm/src/sama5/sam_pck.h +++ b/nuttx/arch/arm/src/sama5/sam_pck.h @@ -64,6 +64,7 @@ enum pckid_e enum pckid_clksrc_e { PCKSRC_MCK = 0, /* Source clock is the master clock (MCK) or PLLA output (PLLACK) */ + PCKSRC_MAINCK, /* Source clock is the main clock (probably the XTAL) */ PCKSRC_SCK /* Source clock is the slow clock (SCK) */ }; diff --git a/nuttx/configs/sama5d3-xplained/include/board_384mhz.h b/nuttx/configs/sama5d3-xplained/include/board_384mhz.h index 08a26999b..eaa3b7db4 100644 --- a/nuttx/configs/sama5d3-xplained/include/board_384mhz.h +++ b/nuttx/configs/sama5d3-xplained/include/board_384mhz.h @@ -161,6 +161,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (768000000) /* PLLACK: 64 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (384000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d3-xplained/include/board_396mhz.h b/nuttx/configs/sama5d3-xplained/include/board_396mhz.h index ba76c021a..638d3a5a2 100644 --- a/nuttx/configs/sama5d3-xplained/include/board_396mhz.h +++ b/nuttx/configs/sama5d3-xplained/include/board_396mhz.h @@ -119,6 +119,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (792000000) /* PLLACK: 66 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (396000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d3-xplained/include/board_528mhz.h b/nuttx/configs/sama5d3-xplained/include/board_528mhz.h index bc726b1c6..a0942aeed 100644 --- a/nuttx/configs/sama5d3-xplained/include/board_528mhz.h +++ b/nuttx/configs/sama5d3-xplained/include/board_528mhz.h @@ -118,6 +118,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (528000000) /* PLLACK: 44 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (528000000) /* CPU: PLLACK / 1 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ diff --git a/nuttx/configs/sama5d3-xplained/include/board_sdram.h b/nuttx/configs/sama5d3-xplained/include/board_sdram.h index 4d7a63f26..5ea28fe0b 100644 --- a/nuttx/configs/sama5d3-xplained/include/board_sdram.h +++ b/nuttx/configs/sama5d3-xplained/include/board_sdram.h @@ -57,6 +57,7 @@ * the Main clock source in the on-board 12MHz crystal. */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (sam_pllack_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PLLADIV2_FREQUENCY (sam_plladiv2_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) diff --git a/nuttx/configs/sama5d3x-ek/include/board_384mhz.h b/nuttx/configs/sama5d3x-ek/include/board_384mhz.h index 057746fc1..158cd44c8 100644 --- a/nuttx/configs/sama5d3x-ek/include/board_384mhz.h +++ b/nuttx/configs/sama5d3x-ek/include/board_384mhz.h @@ -161,6 +161,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (768000000) /* PLLACK: 64 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (384000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d3x-ek/include/board_396mhz.h b/nuttx/configs/sama5d3x-ek/include/board_396mhz.h index f8e5309a5..dea0068b0 100644 --- a/nuttx/configs/sama5d3x-ek/include/board_396mhz.h +++ b/nuttx/configs/sama5d3x-ek/include/board_396mhz.h @@ -119,6 +119,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (792000000) /* PLLACK: 66 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (396000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d3x-ek/include/board_528mhz.h b/nuttx/configs/sama5d3x-ek/include/board_528mhz.h index 27b69c0d2..e3975deeb 100644 --- a/nuttx/configs/sama5d3x-ek/include/board_528mhz.h +++ b/nuttx/configs/sama5d3x-ek/include/board_528mhz.h @@ -118,6 +118,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (528000000) /* PLLACK: 44 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (528000000) /* CPU: PLLACK / 1 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ diff --git a/nuttx/configs/sama5d3x-ek/include/board_sdram.h b/nuttx/configs/sama5d3x-ek/include/board_sdram.h index 019005680..f6bdbb46d 100644 --- a/nuttx/configs/sama5d3x-ek/include/board_sdram.h +++ b/nuttx/configs/sama5d3x-ek/include/board_sdram.h @@ -57,6 +57,7 @@ * the Main clock source in the on-board 12MHz crystal. */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (sam_pllack_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PLLADIV2_FREQUENCY (sam_plladiv2_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) diff --git a/nuttx/configs/sama5d4-ek/include/board_384mhz.h b/nuttx/configs/sama5d4-ek/include/board_384mhz.h index d1797e393..d38fa28a2 100644 --- a/nuttx/configs/sama5d4-ek/include/board_384mhz.h +++ b/nuttx/configs/sama5d4-ek/include/board_384mhz.h @@ -159,6 +159,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (768000000) /* PLLACK: 64 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (384000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d4-ek/include/board_396mhz.h b/nuttx/configs/sama5d4-ek/include/board_396mhz.h index 58895ae32..9e92ce07a 100644 --- a/nuttx/configs/sama5d4-ek/include/board_396mhz.h +++ b/nuttx/configs/sama5d4-ek/include/board_396mhz.h @@ -117,6 +117,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (792000000) /* PLLACK: 66 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (396000000) /* CPU: PLLACK / 2 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ diff --git a/nuttx/configs/sama5d4-ek/include/board_528mhz.h b/nuttx/configs/sama5d4-ek/include/board_528mhz.h index 31b05e36e..d23cce539 100644 --- a/nuttx/configs/sama5d4-ek/include/board_528mhz.h +++ b/nuttx/configs/sama5d4-ek/include/board_528mhz.h @@ -116,6 +116,7 @@ /* Resulting frequencies */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (528000000) /* PLLACK: 44 * 12Mhz / 1 */ #define BOARD_PCK_FREQUENCY (528000000) /* CPU: PLLACK / 1 / 1 */ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ diff --git a/nuttx/configs/sama5d4-ek/include/board_sdram.h b/nuttx/configs/sama5d4-ek/include/board_sdram.h index 535bc9196..00c91c0de 100644 --- a/nuttx/configs/sama5d4-ek/include/board_sdram.h +++ b/nuttx/configs/sama5d4-ek/include/board_sdram.h @@ -57,6 +57,7 @@ * the Main clock source in the on-board 12MHz crystal. */ +#define BOARD_MAINCK_FREQUENCY BOARD_MAINOSC_FREQUENCY #define BOARD_PLLA_FREQUENCY (sam_pllack_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PLLADIV2_FREQUENCY (sam_plladiv2_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) |