[U-Boot] [PATCH 0/3] ARM: at91: add PMC_PLLICPR init function

To reduce the duplicated code, add PLLICPR init function, use the function to clean up the PMC_PLLICPR directly writing code.
It is based on the following patch set. [PATCH 0/5] ARM: at91: improve peripheral and system clock handle functions [PATCH 0/4] ARM: at91: add UTMI PLL handle functions [PATCH 0/3] ARM: at91: add PLLB handle functions
Wenyou Yang (3): ARM: at91: clock: add PMC_PLLICPR init function ARM: at91: clean up the PMC_PLLICPR init code board: atmel: clean up the PMC_PLLICPR init code
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + arch/arm/mach-at91/spl_at91.c | 5 +---- board/atmel/sama5d3_xplained/sama5d3_xplained.c | 4 +--- board/atmel/sama5d3xek/sama5d3xek.c | 4 +--- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 4 +--- board/atmel/sama5d4ek/sama5d4ek.c | 4 +--- 8 files changed, 20 insertions(+), 16 deletions(-)

To avoid the duplicated code, add the PMC_PLLICPR init function.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com ---
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + 3 files changed, 15 insertions(+)
diff --git a/arch/arm/mach-at91/armv7/clock.c b/arch/arm/mach-at91/armv7/clock.c index 81e9f69..b8143c5 100644 --- a/arch/arm/mach-at91/armv7/clock.c +++ b/arch/arm/mach-at91/armv7/clock.c @@ -242,3 +242,10 @@ u32 at91_get_periph_generated_clk(u32 id)
return freq / div; } + +void at91_pllicpr_init(u32 icpr) +{ + struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; + + writel(icpr, &pmc->pllicpr); +} diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h index eb40194..6955461 100644 --- a/arch/arm/mach-at91/include/mach/at91_pmc.h +++ b/arch/arm/mach-at91/include/mach/at91_pmc.h @@ -246,4 +246,11 @@ typedef struct at91_pmc { #define AT91_PMC_GCKRDY (1 << 24)
#define AT91_PMC_PROTKEY 0x504d4301 /* Activation Code */ + +/* PLL Charge Pump Current Register (PMC_PLLICPR) */ +#define AT91_PMC_ICP_PLLA(x) (((x) & 0x3) << 0) /* Charge Pump Current PLLA */ +#define AT91_PMC_IPLL_PLLA(x) (((x) & 0x7) << 8) /* Engineering Configuration PLLA */ +#define AT91_PMC_ICP_PLLU(x) (((x) & 0x3) << 16) /* Charge Pump Current PLL UTMI */ +#define AT91_PMC_IVCO_PLLU(x) (((x) & 0x3) << 24) /* Voltage Control Output Current PLL UTMI */ + #endif diff --git a/arch/arm/mach-at91/include/mach/clk.h b/arch/arm/mach-at91/include/mach/clk.h index 64dec52..8577c74 100644 --- a/arch/arm/mach-at91/include/mach/clk.h +++ b/arch/arm/mach-at91/include/mach/clk.h @@ -135,5 +135,6 @@ int at91_upll_clk_disable(void); void at91_usb_clk_init(u32 value); int at91_pllb_clk_enable(u32 pllbr); int at91_pllb_clk_disable(void); +void at91_pllicpr_init(u32 icpr);
#endif /* __ASM_ARM_ARCH_CLK_H__ */

Hello Wenyou,
Am 09.12.2015 um 05:36 schrieb Wenyou Yang:
To avoid the duplicated code, add the PMC_PLLICPR init function.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + 3 files changed, 15 insertions(+)
Sorry for nitpicking, but I just try to applying patches from patchwork to u-boot source, compile it and test it automated with tbot [1] on the smartweb board [2]
This patch has also checkpatch errors:
2015-12-09 08:08:49,780: wget http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: --2015-12-09 08:08:49-- http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: Resolving patchwork.ozlabs.org (patchwork.ozlabs.org)... 103.22.144.67, 2401:3900:2:1::2 2015-12-09 08:08:50,095: Connecting to patchwork.ozlabs.org (patchwork.ozlabs.org)|103.22.144.67|:80... connected. 2015-12-09 08:08:50,410: HTTP request sent, awaiting response... 301 MOVED PERMANENTLY 2015-12-09 08:08:50,411: Location: http://patchwork.ozlabs.org/patch/554232/mbox/ [following] 2015-12-09 08:08:50,411: --2015-12-09 08:08:50-- http://patchwork.ozlabs.org/patch/554232/mbox/ 2015-12-09 08:08:50,411: Reusing existing connection to patchwork.ozlabs.org:80. 2015-12-09 08:08:50,726: HTTP request sent, awaiting response... 200 OK 2015-12-09 08:08:50,726: Length: unspecified [text/plain] 2015-12-09 08:08:50,726: Saving to: ‘mbox’ 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: mbox [<=> ] 0 --.-KB/s 2015-12-09 08:08:50,726: mbox [ <=> ] 2.34K --.-KB/s in 0.001s 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: 2015-12-09 08:08:50 (2.66 MB/s) - ‘mbox’ saved [2397] 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: hs@pollux [ 8:08:50] ttbott > 2015-12-09 08:08:51,940: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:51,940: hs@pollux [ 8:08:51] ttbott > 2015-12-09 08:08:53,037: scripts/checkpatch.pl mbox 2015-12-09 08:08:53,151: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #47: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:251: 2015-12-09 08:08:53,152: +#define AT91_PMC_ICP_PLLA(x) (((x) & 0x3) << 0) /* Charge Pump Current PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #48: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:252: 2015-12-09 08:08:53,152: +#define AT91_PMC_IPLL_PLLA(x) (((x) & 0x7) << 8) /* Engineering Configuration PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #49: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:253: 2015-12-09 08:08:53,153: +#define AT91_PMC_ICP_PLLU(x) (((x) & 0x3) << 16) /* Charge Pump Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #50: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:254: 2015-12-09 08:08:53,153: +#define AT91_PMC_IVCO_PLLU(x) (((x) & 0x3) << 24) /* Voltage Control Output Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: total: 0 errors, 4 warnings, 0 checks, 27 lines checked 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE NETWORKING_BLOCK_COMMENT_STYLE USLEEP_RANGE 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,154: mbox has style problems, please review. 2015-12-09 08:08:53,154: 2015-12-09 08:08:53,154: If any of these errors are false positives, please report 2015-12-09 08:08:53,154: them to the maintainer, see CHECKPATCH in MAINTAINERS. 2015-12-09 08:08:53,154: hs@pollux [ 8:08:53] ttbott > 2015-12-09 08:08:54,283: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:54,283: FAILED 2015-12-09 08:08:54,284: hs@pollux [ 8:08:54] ttbott > 2015-12-09 08:08:54,380: hs@pollux [ 8:08:54] ttbott >cat mbox | grep Subject 2015-12-09 08:08:54,380: ^[[01;31m^[[KSubject^[[m^[[K: [U-Boot,1/3] ARM: at91: clock: add PMC_PLLICPR init function 2015-12-09 08:08:54,381: hs@pollux [ 8:08:54] ttbott >
bye, Heiko [1] https://github.com/hsdenx/tbot [2] http://xeidos.ddns.net/buildbot/builders/smartweb_dfu

Hi Heiko,
On 09.12.2015 08:14, Heiko Schocher wrote:
Hello Wenyou,
Am 09.12.2015 um 05:36 schrieb Wenyou Yang:
To avoid the duplicated code, add the PMC_PLLICPR init function.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + 3 files changed, 15 insertions(+)
Sorry for nitpicking, but I just try to applying patches from patchwork to u-boot source, compile it and test it automated with tbot [1] on the smartweb board [2]
This patch has also checkpatch errors:
2015-12-09 08:08:49,780: wget http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: --2015-12-09 08:08:49-- http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: Resolving patchwork.ozlabs.org (patchwork.ozlabs.org)... 103.22.144.67, 2401:3900:2:1::2 2015-12-09 08:08:50,095: Connecting to patchwork.ozlabs.org (patchwork.ozlabs.org)|103.22.144.67|:80... connected. 2015-12-09 08:08:50,410: HTTP request sent, awaiting response... 301 MOVED PERMANENTLY 2015-12-09 08:08:50,411: Location: http://patchwork.ozlabs.org/patch/554232/mbox/ [following] 2015-12-09 08:08:50,411: --2015-12-09 08:08:50-- http://patchwork.ozlabs.org/patch/554232/mbox/ 2015-12-09 08:08:50,411: Reusing existing connection to patchwork.ozlabs.org:80. 2015-12-09 08:08:50,726: HTTP request sent, awaiting response... 200 OK 2015-12-09 08:08:50,726: Length: unspecified [text/plain] 2015-12-09 08:08:50,726: Saving to: ‘mbox’ 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: mbox [<=> ] 0 --.-KB/s 2015-12-09 08:08:50,726: mbox [ <=> ] 2.34K --.-KB/s in 0.001s 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: 2015-12-09 08:08:50 (2.66 MB/s) - ‘mbox’ saved [2397] 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: hs@pollux [ 8:08:50] ttbott > 2015-12-09 08:08:51,940: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:51,940: hs@pollux [ 8:08:51] ttbott > 2015-12-09 08:08:53,037: scripts/checkpatch.pl mbox 2015-12-09 08:08:53,151: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #47: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:251: 2015-12-09 08:08:53,152: +#define AT91_PMC_ICP_PLLA(x) (((x) & 0x3) << 0) /* Charge Pump Current PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #48: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:252: 2015-12-09 08:08:53,152: +#define AT91_PMC_IPLL_PLLA(x) (((x) & 0x7) << 8) /* Engineering Configuration PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #49: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:253: 2015-12-09 08:08:53,153: +#define AT91_PMC_ICP_PLLU(x) (((x) & 0x3) << 16) /* Charge Pump Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #50: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:254: 2015-12-09 08:08:53,153: +#define AT91_PMC_IVCO_PLLU(x) (((x) & 0x3) << 24) /* Voltage Control Output Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: total: 0 errors, 4 warnings, 0 checks, 27 lines checked 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE NETWORKING_BLOCK_COMMENT_STYLE USLEEP_RANGE 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,154: mbox has style problems, please review. 2015-12-09 08:08:53,154: 2015-12-09 08:08:53,154: If any of these errors are false positives, please report 2015-12-09 08:08:53,154: them to the maintainer, see CHECKPATCH in MAINTAINERS. 2015-12-09 08:08:53,154: hs@pollux [ 8:08:53] ttbott > 2015-12-09 08:08:54,283: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:54,283: FAILED 2015-12-09 08:08:54,284: hs@pollux [ 8:08:54] ttbott > 2015-12-09 08:08:54,380: hs@pollux [ 8:08:54] ttbott >cat mbox | grep Subject 2015-12-09 08:08:54,380: ^[[01;31m^[[KSubject^[[m^[[K: [U-Boot,1/3] ARM: at91: clock: add PMC_PLLICPR init function 2015-12-09 08:08:54,381: hs@pollux [ 8:08:54] ttbott >
do we really insist on the 'line over 80' rule? Especially when one describes bit fields which I appreciate. I think it is often hard to sustain this rule for these cases.
Andreas
bye, Heiko [1] https://github.com/hsdenx/tbot [2] http://xeidos.ddns.net/buildbot/builders/smartweb_dfu

Hello Andreas,
Am 09.12.2015 um 09:37 schrieb Andreas Bießmann:
Hi Heiko,
On 09.12.2015 08:14, Heiko Schocher wrote:
Hello Wenyou,
Am 09.12.2015 um 05:36 schrieb Wenyou Yang:
To avoid the duplicated code, add the PMC_PLLICPR init function.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + 3 files changed, 15 insertions(+)
Sorry for nitpicking, but I just try to applying patches from patchwork to u-boot source, compile it and test it automated with tbot [1] on the smartweb board [2]
This patch has also checkpatch errors:
2015-12-09 08:08:49,780: wget http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: --2015-12-09 08:08:49-- http://patchwork.ozlabs.org/patch/554232/mbox 2015-12-09 08:08:49,781: Resolving patchwork.ozlabs.org (patchwork.ozlabs.org)... 103.22.144.67, 2401:3900:2:1::2 2015-12-09 08:08:50,095: Connecting to patchwork.ozlabs.org (patchwork.ozlabs.org)|103.22.144.67|:80... connected. 2015-12-09 08:08:50,410: HTTP request sent, awaiting response... 301 MOVED PERMANENTLY 2015-12-09 08:08:50,411: Location: http://patchwork.ozlabs.org/patch/554232/mbox/ [following] 2015-12-09 08:08:50,411: --2015-12-09 08:08:50-- http://patchwork.ozlabs.org/patch/554232/mbox/ 2015-12-09 08:08:50,411: Reusing existing connection to patchwork.ozlabs.org:80. 2015-12-09 08:08:50,726: HTTP request sent, awaiting response... 200 OK 2015-12-09 08:08:50,726: Length: unspecified [text/plain] 2015-12-09 08:08:50,726: Saving to: ‘mbox’ 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: 2015-12-09 08:08:50,726: mbox [<=> ] 0 --.-KB/s 2015-12-09 08:08:50,726: mbox [ <=> ] 2.34K --.-KB/s in 0.001s 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: 2015-12-09 08:08:50 (2.66 MB/s) - ‘mbox’ saved [2397] 2015-12-09 08:08:50,727: 2015-12-09 08:08:50,727: hs@pollux [ 8:08:50] ttbott > 2015-12-09 08:08:51,940: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:51,940: hs@pollux [ 8:08:51] ttbott > 2015-12-09 08:08:53,037: scripts/checkpatch.pl mbox 2015-12-09 08:08:53,151: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #47: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:251: 2015-12-09 08:08:53,152: +#define AT91_PMC_ICP_PLLA(x) (((x) & 0x3) << 0) /* Charge Pump Current PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,152: #48: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:252: 2015-12-09 08:08:53,152: +#define AT91_PMC_IPLL_PLLA(x) (((x) & 0x7) << 8) /* Engineering Configuration PLLA */ 2015-12-09 08:08:53,152: 2015-12-09 08:08:53,152: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #49: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:253: 2015-12-09 08:08:53,153: +#define AT91_PMC_ICP_PLLU(x) (((x) & 0x3) << 16) /* Charge Pump Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: WARNING: line over 80 characters 2015-12-09 08:08:53,153: #50: FILE: arch/arm/mach-at91/include/mach/at91_pmc.h:254: 2015-12-09 08:08:53,153: +#define AT91_PMC_IVCO_PLLU(x) (((x) & 0x3) << 24) /* Voltage Control Output Current PLL UTMI */ 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: total: 0 errors, 4 warnings, 0 checks, 27 lines checked 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,153: NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE NETWORKING_BLOCK_COMMENT_STYLE USLEEP_RANGE 2015-12-09 08:08:53,153: 2015-12-09 08:08:53,154: mbox has style problems, please review. 2015-12-09 08:08:53,154: 2015-12-09 08:08:53,154: If any of these errors are false positives, please report 2015-12-09 08:08:53,154: them to the maintainer, see CHECKPATCH in MAINTAINERS. 2015-12-09 08:08:53,154: hs@pollux [ 8:08:53] ttbott > 2015-12-09 08:08:54,283: if [ $? -ne 0 ]; then echo 'FAILED'; fi 2015-12-09 08:08:54,283: FAILED 2015-12-09 08:08:54,284: hs@pollux [ 8:08:54] ttbott > 2015-12-09 08:08:54,380: hs@pollux [ 8:08:54] ttbott >cat mbox | grep Subject 2015-12-09 08:08:54,380: ^[[01;31m^[[KSubject^[[m^[[K: [U-Boot,1/3] ARM: at91: clock: add PMC_PLLICPR init function 2015-12-09 08:08:54,381: hs@pollux [ 8:08:54] ttbott >
do we really insist on the 'line over 80' rule? Especially when one describes bit fields which I appreciate. I think it is often hard to sustain this rule for these cases.
I think so, yes, but maybe I am wrong?
bye, Heiko

Due to introducing the PMC_PLLICPR init function, use this function to clean up the code.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com ---
arch/arm/mach-at91/spl_at91.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/arch/arm/mach-at91/spl_at91.c b/arch/arm/mach-at91/spl_at91.c index b19f95b..cc3341a 100644 --- a/arch/arm/mach-at91/spl_at91.c +++ b/arch/arm/mach-at91/spl_at91.c @@ -14,7 +14,6 @@ #include <asm/arch/at91_common.h> #include <asm/arch/at91sam9_matrix.h> #include <asm/arch/at91_pit.h> -#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_rstc.h> #include <asm/arch/at91_wdt.h> #include <asm/arch/clk.h> @@ -77,8 +76,6 @@ void __weak spl_board_init(void)
void board_init_f(ulong dummy) { - struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; - lowlevel_clock_init(); at91_disable_wdt();
@@ -86,7 +83,7 @@ void board_init_f(ulong dummy) * At this stage the main oscillator is supposed to be enabled * PCK = MCK = MOSC */ - writel(0x00, &pmc->pllicpr); + at91_pllicpr_init(0x00);
/* Configure PLLA = MOSC * (PLL_MULA + 1) / PLL_DIVA */ at91_plla_init(CONFIG_SYS_AT91_PLLA);

Due to introducing the PMC_PLLICPR init function, use this function to clean up the code.
Signed-off-by: Wenyou Yang wenyou.yang@atmel.com ---
board/atmel/sama5d3_xplained/sama5d3_xplained.c | 4 +--- board/atmel/sama5d3xek/sama5d3xek.c | 4 +--- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 4 +--- board/atmel/sama5d4ek/sama5d4ek.c | 4 +--- 4 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/board/atmel/sama5d3_xplained/sama5d3_xplained.c b/board/atmel/sama5d3_xplained/sama5d3_xplained.c index d180b41..6532970 100644 --- a/board/atmel/sama5d3_xplained/sama5d3_xplained.c +++ b/board/atmel/sama5d3_xplained/sama5d3_xplained.c @@ -10,7 +10,6 @@ #include <asm/io.h> #include <asm/arch/sama5d3_smc.h> #include <asm/arch/at91_common.h> -#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_rstc.h> #include <asm/arch/gpio.h> #include <asm/arch/clk.h> @@ -198,7 +197,6 @@ void mem_init(void)
void at91_pmc_init(void) { - struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; u32 tmp;
tmp = AT91_PMC_PLLAR_29 | @@ -207,7 +205,7 @@ void at91_pmc_init(void) AT91_PMC_PLLXR_DIV(1); at91_plla_init(tmp);
- writel(0x3 << 8, &pmc->pllicpr); + at91_pllicpr_init(AT91_PMC_IPLL_PLLA(0x3));
tmp = AT91_PMC_MCKR_MDIV_4 | AT91_PMC_MCKR_CSS_PLLA; diff --git a/board/atmel/sama5d3xek/sama5d3xek.c b/board/atmel/sama5d3xek/sama5d3xek.c index 777e57e..7a804e8 100644 --- a/board/atmel/sama5d3xek/sama5d3xek.c +++ b/board/atmel/sama5d3xek/sama5d3xek.c @@ -10,7 +10,6 @@ #include <asm/io.h> #include <asm/arch/sama5d3_smc.h> #include <asm/arch/at91_common.h> -#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_rstc.h> #include <asm/arch/gpio.h> #include <asm/arch/clk.h> @@ -457,7 +456,6 @@ void mem_init(void)
void at91_pmc_init(void) { - struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; u32 tmp;
tmp = AT91_PMC_PLLAR_29 | @@ -466,7 +464,7 @@ void at91_pmc_init(void) AT91_PMC_PLLXR_DIV(1); at91_plla_init(tmp);
- writel(0x3 << 8, &pmc->pllicpr); + at91_pllicpr_init(AT91_PMC_IPLL_PLLA(0x3));
tmp = AT91_PMC_MCKR_MDIV_4 | AT91_PMC_MCKR_CSS_PLLA; diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c index e95310c..3fec662 100644 --- a/board/atmel/sama5d4_xplained/sama5d4_xplained.c +++ b/board/atmel/sama5d4_xplained/sama5d4_xplained.c @@ -8,7 +8,6 @@ #include <common.h> #include <asm/io.h> #include <asm/arch/at91_common.h> -#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_rstc.h> #include <asm/arch/atmel_mpddrc.h> #include <asm/arch/atmel_usba_udc.h> @@ -397,7 +396,6 @@ void mem_init(void)
void at91_pmc_init(void) { - struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; u32 tmp;
tmp = AT91_PMC_PLLAR_29 | @@ -406,7 +404,7 @@ void at91_pmc_init(void) AT91_PMC_PLLXR_DIV(1); at91_plla_init(tmp);
- writel(0x0 << 8, &pmc->pllicpr); + at91_pllicpr_init(AT91_PMC_IPLL_PLLA(0x0));
tmp = AT91_PMC_MCKR_H32MXDIV | AT91_PMC_MCKR_PLLADIV_2 | diff --git a/board/atmel/sama5d4ek/sama5d4ek.c b/board/atmel/sama5d4ek/sama5d4ek.c index c92e2588..6ccbc64 100644 --- a/board/atmel/sama5d4ek/sama5d4ek.c +++ b/board/atmel/sama5d4ek/sama5d4ek.c @@ -8,7 +8,6 @@ #include <common.h> #include <asm/io.h> #include <asm/arch/at91_common.h> -#include <asm/arch/at91_pmc.h> #include <asm/arch/at91_rstc.h> #include <asm/arch/atmel_mpddrc.h> #include <asm/arch/atmel_usba_udc.h> @@ -393,7 +392,6 @@ void mem_init(void)
void at91_pmc_init(void) { - struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; u32 tmp;
tmp = AT91_PMC_PLLAR_29 | @@ -402,7 +400,7 @@ void at91_pmc_init(void) AT91_PMC_PLLXR_DIV(1); at91_plla_init(tmp);
- writel(0x0 << 8, &pmc->pllicpr); + at91_pllicpr_init(AT91_PMC_IPLL_PLLA(0x0));
tmp = AT91_PMC_MCKR_H32MXDIV | AT91_PMC_MCKR_PLLADIV_2 |

Hello Wenyou,
Am 09.12.2015 um 05:36 schrieb Wenyou Yang:
To reduce the duplicated code, add PLLICPR init function, use the function to clean up the PMC_PLLICPR directly writing code.
It is based on the following patch set. [PATCH 0/5] ARM: at91: improve peripheral and system clock handle functions [PATCH 0/4] ARM: at91: add UTMI PLL handle functions [PATCH 0/3] ARM: at91: add PLLB handle functions
Wenyou Yang (3): ARM: at91: clock: add PMC_PLLICPR init function ARM: at91: clean up the PMC_PLLICPR init code board: atmel: clean up the PMC_PLLICPR init code
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + arch/arm/mach-at91/spl_at91.c | 5 +---- board/atmel/sama5d3_xplained/sama5d3_xplained.c | 4 +--- board/atmel/sama5d3xek/sama5d3xek.c | 4 +--- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 4 +--- board/atmel/sama5d4ek/sama5d4ek.c | 4 +--- 8 files changed, 20 insertions(+), 16 deletions(-)
I applied all your at91 patches from:
It is based on the following patch set. [PATCH 0/5] ARM: at91: improve peripheral and system clock handle functions [PATCH 0/4] ARM: at91: add UTMI PLL handle functions [PATCH 0/3] ARM: at91: add PLLB handle functions
also this series, and compiled it for the smartweb board. This build fails:
LD spl/u-boot-spl arch/arm/mach-at91/built-in.o: In function `board_init_f': /home/hs/zug/u-boot/arch/arm/mach-at91/spl_at91.c:86: undefined reference to `at91_pllicpr_init' /home/hs/zug/u-boot/scripts/Makefile.spl:244: recipe for target 'spl/u-boot-spl' failed make[2]: *** [spl/u-boot-spl] Error 1 /home/hs/zug/u-boot/Makefile:1330: recipe for target 'spl/u-boot-spl' failed make[1]: *** [spl/u-boot-spl] Error 2 make[1]: Leaving directory '/work/hs/compile/u-boot/zug/smartweb' Makefile:150: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 make failed pollux:u-boot hs [20151209] $
Please do a build for all at91 boards, before posting your patches again. Also try to have a look at the codesize ... the smartweb board have only 4k for the SPL image...
Thanks!
bye, Heiko

Hi Heiko,
Thank you very much for your review.
-----Original Message----- From: Heiko Schocher [mailto:hs@denx.de] Sent: 2015年12月9日 13:32 To: Yang, Wenyou Wenyou.Yang@atmel.com Cc: U-Boot Mailing List u-boot@lists.denx.de Subject: Re: [U-Boot] [PATCH 0/3] ARM: at91: add PMC_PLLICPR init function
Hello Wenyou,
Am 09.12.2015 um 05:36 schrieb Wenyou Yang:
To reduce the duplicated code, add PLLICPR init function, use the function to clean up the PMC_PLLICPR directly writing code.
It is based on the following patch set. [PATCH 0/5] ARM: at91: improve peripheral and system clock handle
functions
[PATCH 0/4] ARM: at91: add UTMI PLL handle functions [PATCH 0/3] ARM: at91: add PLLB handle functions
Wenyou Yang (3): ARM: at91: clock: add PMC_PLLICPR init function ARM: at91: clean up the PMC_PLLICPR init code board: atmel: clean up the PMC_PLLICPR init code
arch/arm/mach-at91/armv7/clock.c | 7 +++++++ arch/arm/mach-at91/include/mach/at91_pmc.h | 7 +++++++ arch/arm/mach-at91/include/mach/clk.h | 1 + arch/arm/mach-at91/spl_at91.c | 5 +---- board/atmel/sama5d3_xplained/sama5d3_xplained.c | 4 +--- board/atmel/sama5d3xek/sama5d3xek.c | 4 +--- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 4 +--- board/atmel/sama5d4ek/sama5d4ek.c | 4 +--- 8 files changed, 20 insertions(+), 16 deletions(-)
I applied all your at91 patches from:
It is based on the following patch set. [PATCH 0/5] ARM: at91: improve peripheral and system clock handle functions [PATCH 0/4] ARM: at91: add UTMI PLL handle functions [PATCH 0/3] ARM: at91: add PLLB handle functions
also this series, and compiled it for the smartweb board. This build fails:
It is my fault, the build is not covered all Atmel boards.
I will fix it in next version, thanks.
LD spl/u-boot-spl arch/arm/mach-at91/built-in.o: In function `board_init_f': /home/hs/zug/u-boot/arch/arm/mach-at91/spl_at91.c:86: undefined reference to `at91_pllicpr_init' /home/hs/zug/u-boot/scripts/Makefile.spl:244: recipe for target 'spl/u-boot-spl' failed make[2]: *** [spl/u-boot-spl] Error 1 /home/hs/zug/u-boot/Makefile:1330: recipe for target 'spl/u-boot-spl' failed make[1]: *** [spl/u-boot-spl] Error 2 make[1]: Leaving directory '/work/hs/compile/u-boot/zug/smartweb' Makefile:150: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 make failed pollux:u-boot hs [20151209] $
Please do a build for all at91 boards, before posting your patches again. Also try to have a look at the codesize ... the smartweb board have only 4k for the SPL image...
Thanks!
bye, Heiko -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Best Regards, Wenyou Yang
participants (4)
-
Andreas Bießmann
-
Heiko Schocher
-
Wenyou Yang
-
Yang, Wenyou