diff --git a/arch/arm/src/sama5/sam_lowputc.c b/arch/arm/src/sama5/sam_lowputc.c index 6931c6ceed0..2685335ca25 100644 --- a/arch/arm/src/sama5/sam_lowputc.c +++ b/arch/arm/src/sama5/sam_lowputc.c @@ -149,10 +149,10 @@ # undef HAVE_UART_CONSOLE #endif -/* The UART/USART modules are driven by the main clock (MCK). */ +/* The UART/USART modules are driven by the peripheral clock (MCK or MCK2). */ -#define SAM_USART_CLOCK BOARD_MCK_FREQUENCY /* Frequency of the main clock */ -#define SAM_MR_USCLKS UART_MR_USCLKS_MCK /* Source = Main clock */ +#define SAM_USART_CLOCK BOARD_USART_FREQUENCY /* Frequency of the USART clock */ +#define SAM_MR_USCLKS UART_MR_USCLKS_MCK /* Source = Main clock */ /* Select USART parameters for the selected console */ diff --git a/arch/arm/src/sama5/sam_serial.c b/arch/arm/src/sama5/sam_serial.c index 8dcc05bdb26..479caf5b0c3 100644 --- a/arch/arm/src/sama5/sam_serial.c +++ b/arch/arm/src/sama5/sam_serial.c @@ -382,10 +382,10 @@ # define USART4_ASSIGNED 1 #endif -/* The UART/USART modules are driven by the main clock (MCK). */ +/* The UART/USART modules are driven by the peripheral clock (MCK or MCK2). */ -#define SAM_USART_CLOCK BOARD_MCK_FREQUENCY /* Frequency of the main clock */ -#define SAM_MR_USCLKS UART_MR_USCLKS_MCK /* Source = Main clock */ +#define SAM_USART_CLOCK BOARD_USART_FREQUENCY /* Frequency of the USART clock */ +#define SAM_MR_USCLKS UART_MR_USCLKS_MCK /* Source = Main clock */ /**************************************************************************** * Private Types diff --git a/configs/sama5d3-xplained/include/board_384mhz.h b/configs/sama5d3-xplained/include/board_384mhz.h index 75b41677746..f9d38fba3e1 100644 --- a/configs/sama5d3-xplained/include/board_384mhz.h +++ b/configs/sama5d3-xplained/include/board_384mhz.h @@ -167,6 +167,12 @@ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8000000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + /* HSMCI clocking * * Multimedia Card Interface clock (MCCK or MCI_CK) is Master Clock (MCK) diff --git a/configs/sama5d3-xplained/include/board_396mhz.h b/configs/sama5d3-xplained/include/board_396mhz.h index a16190a0bda..7293956a50e 100644 --- a/configs/sama5d3-xplained/include/board_396mhz.h +++ b/configs/sama5d3-xplained/include/board_396mhz.h @@ -125,6 +125,12 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d3-xplained/include/board_528mhz.h b/configs/sama5d3-xplained/include/board_528mhz.h index ff1b88ca68c..dc857bee4b1 100644 --- a/configs/sama5d3-xplained/include/board_528mhz.h +++ b/configs/sama5d3-xplained/include/board_528mhz.h @@ -124,6 +124,12 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d3-xplained/include/board_sdram.h b/configs/sama5d3-xplained/include/board_sdram.h index 61d25155b5b..4f2e5f971f1 100644 --- a/configs/sama5d3-xplained/include/board_sdram.h +++ b/configs/sama5d3-xplained/include/board_sdram.h @@ -63,6 +63,12 @@ #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_MCK_FREQUENCY (sam_mck_frequency(BOARD_MAINOSC_FREQUENCY)) +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d3x-ek/include/board_384mhz.h b/configs/sama5d3x-ek/include/board_384mhz.h index 3dee820444a..528ff509a33 100644 --- a/configs/sama5d3x-ek/include/board_384mhz.h +++ b/configs/sama5d3x-ek/include/board_384mhz.h @@ -167,6 +167,12 @@ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8000000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + /* HSMCI clocking * * Multimedia Card Interface clock (MCCK or MCI_CK) is Master Clock (MCK) diff --git a/configs/sama5d3x-ek/include/board_396mhz.h b/configs/sama5d3x-ek/include/board_396mhz.h index 707ffd87838..ef850fda8fa 100644 --- a/configs/sama5d3x-ek/include/board_396mhz.h +++ b/configs/sama5d3x-ek/include/board_396mhz.h @@ -125,6 +125,12 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d3x-ek/include/board_528mhz.h b/configs/sama5d3x-ek/include/board_528mhz.h index 4f79ecd4a64..0b2744030d8 100644 --- a/configs/sama5d3x-ek/include/board_528mhz.h +++ b/configs/sama5d3x-ek/include/board_528mhz.h @@ -124,6 +124,11 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d3x-ek/include/board_sdram.h b/configs/sama5d3x-ek/include/board_sdram.h index f7e8b8015a8..9e4b6046904 100644 --- a/configs/sama5d3x-ek/include/board_sdram.h +++ b/configs/sama5d3x-ek/include/board_sdram.h @@ -63,6 +63,12 @@ #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_MCK_FREQUENCY (sam_mck_frequency(BOARD_MAINOSC_FREQUENCY)) +/* On some SAMA5's, the clocking to peripherals may be divided down from MCK, + * but not for the SAMA5D3. + */ + +#define BOARD_USART_FREQUENCY BOARD_MCK_FREQUENCY + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d4-ek/include/board_384mhz.h b/configs/sama5d4-ek/include/board_384mhz.h index 878c82222ac..fc2d4e4bc1f 100644 --- a/configs/sama5d4-ek/include/board_384mhz.h +++ b/configs/sama5d4-ek/include/board_384mhz.h @@ -165,6 +165,13 @@ #define BOARD_MCK_FREQUENCY (128000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8000000) /* ADCCLK: MCK / ((7+1)*2) */ +/* Clocking to certain peripherals may be MCK/2. + * + * REVISIT: I am not sure why this is. Perhaps because of H32MXDIV? + */ + +#define BOARD_USART_FREQUENCY (BOARD_MCK_FREQUENCY >> 1) + /* HSMCI clocking * * Multimedia Card Interface clock (MCCK or MCI_CK) is Master Clock (MCK) diff --git a/configs/sama5d4-ek/include/board_396mhz.h b/configs/sama5d4-ek/include/board_396mhz.h index a20527403d6..11af935ed3a 100644 --- a/configs/sama5d4-ek/include/board_396mhz.h +++ b/configs/sama5d4-ek/include/board_396mhz.h @@ -123,6 +123,13 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 2 / 1 / 3 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* Clocking to certain peripherals may be MCK/2. + * + * REVISIT: I am not sure why this is. Perhaps because of H32MXDIV? + */ + +#define BOARD_USART_FREQUENCY (BOARD_MCK_FREQUENCY >> 1) + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d4-ek/include/board_528mhz.h b/configs/sama5d4-ek/include/board_528mhz.h index 446a480ab23..aa6a336e85d 100644 --- a/configs/sama5d4-ek/include/board_528mhz.h +++ b/configs/sama5d4-ek/include/board_528mhz.h @@ -122,6 +122,13 @@ #define BOARD_MCK_FREQUENCY (132000000) /* MCK: PLLACK / 1 / 1 / 4 */ #define BOARD_ADCCLK_FREQUENCY (8250000) /* ADCCLK: MCK / ((7+1)*2) */ +/* Clocking to certain peripherals may be MCK/2. + * + * REVISIT: I am not sure why this is. Perhaps because of H32MXDIV? + */ + +#define BOARD_USART_FREQUENCY (BOARD_MCK_FREQUENCY >> 1) + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS) diff --git a/configs/sama5d4-ek/include/board_sdram.h b/configs/sama5d4-ek/include/board_sdram.h index 338c0381817..5b113d17eed 100644 --- a/configs/sama5d4-ek/include/board_sdram.h +++ b/configs/sama5d4-ek/include/board_sdram.h @@ -63,6 +63,13 @@ #define BOARD_PCK_FREQUENCY (sam_pck_frequency(BOARD_MAINOSC_FREQUENCY)) #define BOARD_MCK_FREQUENCY (sam_mck_frequency(BOARD_MAINOSC_FREQUENCY)) +/* Clocking to certain peripherals may be MCK/2. + * + * REVISIT: I am not sure why this is. Perhaps because of H32MXDIV? + */ + +#define BOARD_USART_FREQUENCY (BOARD_MCK_FREQUENCY >> 1) + #if defined(CONFIG_SAMA5_EHCI) || defined(CONFIG_SAMA5_OHCI) || \ defined(CONFIG_SAMA5_UDPHS)