* [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions
@ 2015-12-09 7:48 Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 1/5] ARM: at91: asm/at91_pmc.h: fix trival register offset Wenyou Yang
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
To reduce the duplicated code, rework the peripheral's and
system's clock handle functions, use these functions to replace
the clock handle code.
Changes in v2:
- fix checkpatch warning.
Wenyou Yang (5):
ARM: at91: asm/at91_pmc.h: fix trival register offset
ARM: at91: clock: add a new file to handle clock
ARM: cpu: at91: clean up peripheral clock code
board: atmel: clean up peripheral clock code
drivers: at91: clean up peripheral clock code
arch/arm/mach-at91/Makefile | 1 +
arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 +---
arch/arm/mach-at91/arm920t/timer.c | 4 +-
arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++-------
arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++------
arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++-------
.../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 +++------
arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++--------
arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++------
arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++--------
arch/arm/mach-at91/arm926ejs/clock.c | 7 --
arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
arch/arm/mach-at91/arm926ejs/timer.c | 5 +-
arch/arm/mach-at91/armv7/clock.c | 26 -------
arch/arm/mach-at91/armv7/cpu.c | 1 -
arch/arm/mach-at91/armv7/timer.c | 1 -
arch/arm/mach-at91/clock.c | 72 ++++++++++++++++++++
arch/arm/mach-at91/include/mach/at91_pmc.h | 8 +--
arch/arm/mach-at91/include/mach/clk.h | 2 +
arch/arm/mach-at91/phy.c | 1 -
arch/arm/mach-at91/sdram.c | 1 -
board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
board/atmel/at91rm9200ek/led.c | 5 +-
board/atmel/at91sam9260ek/at91sam9260ek.c | 15 ++--
board/atmel/at91sam9261ek/at91sam9261ek.c | 8 +--
board/atmel/at91sam9261ek/led.c | 6 +-
board/atmel/at91sam9263ek/at91sam9263ek.c | 23 ++-----
board/atmel/at91sam9263ek/led.c | 9 +--
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 ++----
board/atmel/at91sam9m10g45ek/led.c | 7 +-
board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 +-
board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++---
board/atmel/at91sam9rlek/led.c | 7 +-
board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +--
board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 +-
board/atmel/sama5d3xek/sama5d3xek.c | 5 +-
board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 +-
board/atmel/sama5d4ek/sama5d4ek.c | 5 +-
board/bluewater/snapper9260/snapper9260.c | 15 ++--
board/calao/usb_a9263/usb_a9263.c | 11 ++-
board/egnite/ethernut5/ethernut5.c | 20 +++---
board/esd/meesc/meesc.c | 15 ++--
board/mini-box/picosam9g45/led.c | 7 +-
board/mini-box/picosam9g45/picosam9g45.c | 17 ++---
board/ronetix/pm9261/led.c | 7 +-
board/ronetix/pm9261/pm9261.c | 22 ++----
board/ronetix/pm9263/led.c | 7 +-
board/ronetix/pm9263/pm9263.c | 19 ++----
board/ronetix/pm9g45/pm9g45.c | 20 ++----
board/siemens/corvus/board.c | 6 +-
board/siemens/smartweb/smartweb.c | 3 +-
board/siemens/taurus/taurus.c | 3 +-
drivers/net/at91_emac.c | 9 ++-
drivers/usb/host/ehci-atmel.c | 8 ---
drivers/usb/host/ohci-at91.c | 20 ++----
56 files changed, 252 insertions(+), 496 deletions(-)
create mode 100644 arch/arm/mach-at91/clock.c
--
1.7.9.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 1/5] ARM: at91: asm/at91_pmc.h: fix trival register offset
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
@ 2015-12-09 7:48 ` Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 2/5] ARM: at91: clock: add a new file to handle clock Wenyou Yang
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
Remove unnecessary #ifdef CPU_HAS_PCR.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
Changes in v2: None
arch/arm/mach-at91/include/mach/at91_pmc.h | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h
index 3f50f77..eb40194 100644
--- a/arch/arm/mach-at91/include/mach/at91_pmc.h
+++ b/arch/arm/mach-at91/include/mach/at91_pmc.h
@@ -51,19 +51,15 @@ typedef struct at91_pmc {
u32 imr; /* 0x6C Interrupt Mask Register */
u32 reserved4[4];
u32 pllicpr; /* 0x80 Change Pump Current Register (SAM9) */
- u32 reserved5[21];
+ u32 reserved5[24];
u32 wpmr; /* 0xE4 Write Protect Mode Register (CAP0) */
u32 wpsr; /* 0xE8 Write Protect Status Register (CAP0) */
-#ifdef CPU_HAS_PCR
- u32 reserved6[8];
+ u32 reserved6[5];
u32 pcer1; /* 0x100 Periperial Clock Enable Register 1 */
u32 pcdr1; /* 0x104 Periperial Clock Disable Register 1 */
u32 pcsr1; /* 0x108 Periperial Clock Status Register 1 */
u32 pcr; /* 0x10c Periperial Control Register */
u32 ocr; /* 0x110 Oscillator Calibration Register */
-#else
- u32 reserved8[5];
-#endif
} at91_pmc_t;
#endif /* end not assembly */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 2/5] ARM: at91: clock: add a new file to handle clock
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 1/5] ARM: at91: asm/at91_pmc.h: fix trival register offset Wenyou Yang
@ 2015-12-09 7:48 ` Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 3/5] ARM: cpu: at91: clean up peripheral clock code Wenyou Yang
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
To reduce the duplicated code, add a new file to accommodate
the peripheral's and system's clock handle code, shared with
the SoCs with different ARM core.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
Changes in v2: None
arch/arm/mach-at91/Makefile | 1 +
arch/arm/mach-at91/arm926ejs/clock.c | 7 ----
arch/arm/mach-at91/armv7/clock.c | 26 ------------
arch/arm/mach-at91/clock.c | 72 +++++++++++++++++++++++++++++++++
arch/arm/mach-at91/include/mach/clk.h | 2 +
5 files changed, 75 insertions(+), 33 deletions(-)
create mode 100644 arch/arm/mach-at91/clock.c
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 5b89617..d071072 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o matrix.o atmel_sfr.o
obj-y += spl.o
endif
+obj-y += clock.o
obj-$(CONFIG_CPU_ARM920T) += arm920t/
obj-$(CONFIG_CPU_ARM926EJS) += arm926ejs/
obj-$(CONFIG_CPU_V7) += armv7/
diff --git a/arch/arm/mach-at91/arm926ejs/clock.c b/arch/arm/mach-at91/arm926ejs/clock.c
index 8d6934e..c8b5e10 100644
--- a/arch/arm/mach-at91/arm926ejs/clock.c
+++ b/arch/arm/mach-at91/arm926ejs/clock.c
@@ -242,10 +242,3 @@ void at91_mck_init(u32 mckr)
while (!(readl(&pmc->sr) & AT91_PMC_MCKRDY))
;
}
-
-void at91_periph_clk_enable(int id)
-{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- writel(1 << id, &pmc->pcer);
-}
diff --git a/arch/arm/mach-at91/armv7/clock.c b/arch/arm/mach-at91/armv7/clock.c
index 41dbf16..81e9f69 100644
--- a/arch/arm/mach-at91/armv7/clock.c
+++ b/arch/arm/mach-at91/armv7/clock.c
@@ -150,32 +150,6 @@ void at91_mck_init(u32 mckr)
;
}
-void at91_periph_clk_enable(int id)
-{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- u32 regval;
-
- if (id > AT91_PMC_PCR_PID_MASK)
- return;
-
- regval = AT91_PMC_PCR_EN | AT91_PMC_PCR_CMD_WRITE | id;
-
- writel(regval, &pmc->pcr);
-}
-
-void at91_periph_clk_disable(int id)
-{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- u32 regval;
-
- if (id > AT91_PMC_PCR_PID_MASK)
- return;
-
- regval = AT91_PMC_PCR_CMD_WRITE | id;
-
- writel(regval, &pmc->pcr);
-}
-
int at91_enable_periph_generated_clk(u32 id, u32 clk_source, u32 div)
{
struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c
new file mode 100644
index 0000000..823d218
--- /dev/null
+++ b/arch/arm/mach-at91/clock.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015 Atmel Corporation
+ * Wenyou Yang <wenyou.yang@atmel.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/at91_pmc.h>
+
+void at91_periph_clk_enable(int id)
+{
+ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+#ifdef CPU_HAS_PCR
+ u32 regval;
+ u32 div_value;
+
+ if (id > AT91_PMC_PCR_PID_MASK)
+ return;
+
+ writel(id, &pmc->pcr);
+
+ div_value = readl(&pmc->pcr) & AT91_PMC_PCR_DIV;
+
+ regval = AT91_PMC_PCR_EN | AT91_PMC_PCR_CMD_WRITE | id | div_value;
+
+ writel(regval, &pmc->pcr);
+#else
+ u32 mask = 0x01 << (id % 32);
+ u32 reg = (id / 32) ? pmc->pcer1 : pmc->pcer;
+
+ writel(mask, ®);
+#endif
+}
+
+void at91_periph_clk_disable(int id)
+{
+ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+#ifdef CPU_HAS_PCR
+ u32 regval;
+
+ if (id > AT91_PMC_PCR_PID_MASK)
+ return;
+
+ regval = AT91_PMC_PCR_CMD_WRITE | id;
+
+ writel(regval, &pmc->pcr);
+#else
+ u32 mask = 0x01 << (id % 32);
+ u32 reg = (id / 32) ? pmc->pcdr1 : pmc->pcdr;
+
+ writel(mask, ®);
+#endif
+}
+
+void at91_system_clk_enable(int sys_clk)
+{
+ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+ writel(sys_clk, &pmc->scer);
+}
+
+void at91_system_clk_disable(int sys_clk)
+{
+ struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+ writel(sys_clk, &pmc->scdr);
+}
diff --git a/arch/arm/mach-at91/include/mach/clk.h b/arch/arm/mach-at91/include/mach/clk.h
index ad83927..bef4e1c 100644
--- a/arch/arm/mach-at91/include/mach/clk.h
+++ b/arch/arm/mach-at91/include/mach/clk.h
@@ -128,5 +128,7 @@ void at91_periph_clk_enable(int id);
void at91_periph_clk_disable(int id);
int at91_enable_periph_generated_clk(u32 id, u32 clk_source, u32 div);
u32 at91_get_periph_generated_clk(u32 id);
+void at91_system_clk_enable(int sys_clk);
+void at91_system_clk_disable(int sys_clk);
#endif /* __ASM_ARM_ARCH_CLK_H__ */
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 3/5] ARM: cpu: at91: clean up peripheral clock code
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 1/5] ARM: at91: asm/at91_pmc.h: fix trival register offset Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 2/5] ARM: at91: clock: add a new file to handle clock Wenyou Yang
@ 2015-12-09 7:48 ` Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 4/5] board: atmel: " Wenyou Yang
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
Due to introducing the new peripheral clock handle functions,
use these functions to clean up the duplicated code.
Meanwhile, remove unneeded header file include, at91_pmc.h.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
Changes in v2: None
arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 ++-----
arch/arm/mach-at91/arm920t/timer.c | 4 +-
arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++++-------------
arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++++----------
arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++++-------------
.../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 ++++------------
arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++++---------------
arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++++----------
arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++++--------------
arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
arch/arm/mach-at91/arm926ejs/timer.c | 5 +--
arch/arm/mach-at91/armv7/cpu.c | 1 -
arch/arm/mach-at91/armv7/timer.c | 1 -
arch/arm/mach-at91/phy.c | 1 -
arch/arm/mach-at91/sdram.c | 1 -
15 files changed, 65 insertions(+), 202 deletions(-)
diff --git a/arch/arm/mach-at91/arm920t/at91rm9200_devices.c b/arch/arm/mach-at91/arm920t/at91rm9200_devices.c
index fc54327..a340122 100644
--- a/arch/arm/mach-at91/arm920t/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/arm920t/at91rm9200_devices.c
@@ -14,7 +14,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/gpio.h>
/*
@@ -34,29 +33,23 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 17, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTA, 18, PUP); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 20, PUP); /* RXD1 */
at91_set_a_periph(AT91_PIO_PORTB, 21, 1); /* TXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 22, PUP); /* RXD2 */
at91_set_a_periph(AT91_PIO_PORTA, 23, 1); /* TXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
diff --git a/arch/arm/mach-at91/arm920t/timer.c b/arch/arm/mach-at91/arm920t/timer.c
index 6aa2994..3190961 100644
--- a/arch/arm/mach-at91/arm920t/timer.c
+++ b/arch/arm/mach-at91/arm920t/timer.c
@@ -19,7 +19,6 @@
#include <asm/io.h>
#include <asm/arch/hardware.h>
#include <asm/arch/at91_tc.h>
-#include <asm/arch/at91_pmc.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -31,8 +30,7 @@ int timer_init(void)
at91_tc_t *tc = (at91_tc_t *) ATMEL_BASE_TC;
at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
- /* enables TC1.0 clock */
- writel(1 << ATMEL_ID_TC0, &pmc->pcer); /* enable clock */
+ at91_periph_clk_enable(ATMEL_ID_TC0);
writel(0, &tc->bcr);
writel(AT91_TC_BMR_TC0XC0S_NONE | AT91_TC_BMR_TC1XC1S_NONE |
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c
index 5e0c0f5..912a966 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c
@@ -11,8 +11,8 @@
#include <asm/io.h>
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91sam9_sdramc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
/*
@@ -32,51 +32,40 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 4, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTB, 5, PUP); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 6, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTB, 7, PUP); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 8, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTB, 9, PUP); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 14, PUP); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTB, 15, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 0, PUP); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTA, 1, PUP); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTA, 2, PUP); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTA, 3, 1);
@@ -106,14 +95,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 0, PUP); /* SPI1_MISO */
at91_set_a_periph(AT91_PIO_PORTB, 1, PUP); /* SPI1_MOSI */
at91_set_a_periph(AT91_PIO_PORTB, 2, PUP); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTB, 3, 1);
@@ -145,9 +131,7 @@ void at91_spi1_hw_init(unsigned long cs_mask)
#ifdef CONFIG_MACB
void at91_macb_hw_init(void)
{
- /* Enable EMAC clock */
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC0);
at91_set_a_periph(AT91_PIO_PORTA, 19, 0); /* ETXCK_EREFCK */
at91_set_a_periph(AT91_PIO_PORTA, 17, 0); /* ERXDV */
@@ -190,9 +174,7 @@ void at91_macb_hw_init(void)
#if defined(CONFIG_GENERIC_ATMEL_MCI)
void at91_mci_hw_init(void)
{
- /* Enable mci clock */
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- writel(1 << ATMEL_ID_MCI, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_MCI);
at91_set_a_periph(AT91_PIO_PORTA, 8, 1); /* MCCK */
#if defined(CONFIG_ATMEL_MCI_PORTB)
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c
index a445c75..4bd4e75 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c
@@ -9,7 +9,7 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
/*
@@ -29,51 +29,40 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 8, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTC, 9, 0); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 12, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTC, 13, 0); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 14, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTC, 15, 0); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 9, 0); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTA, 10, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 0, PUP); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTA, 1, PUP); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTA, 2, PUP); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTA, 3, 1);
@@ -103,14 +92,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 30, PUP); /* SPI1_MISO */
at91_set_a_periph(AT91_PIO_PORTB, 31, PUP); /* SPI1_MOSI */
at91_set_a_periph(AT91_PIO_PORTB, 29, PUP); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTB, 28, 1);
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c
index 6b51d5f..f3f4800 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c
@@ -13,7 +13,7 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
/*
@@ -33,51 +33,40 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 26, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTA, 27, PUP); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTD, 0, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTD, 1, PUP); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTD, 2, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTD, 3, PUP); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 30, PUP); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTC, 31, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_b_periph(AT91_PIO_PORTA, 0, PUP); /* SPI0_MISO */
at91_set_b_periph(AT91_PIO_PORTA, 1, PUP); /* SPI0_MOSI */
at91_set_b_periph(AT91_PIO_PORTA, 2, PUP); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0)) {
at91_set_b_periph(AT91_PIO_PORTA, 5, 1);
@@ -107,14 +96,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 12, PUP); /* SPI1_MISO */
at91_set_a_periph(AT91_PIO_PORTB, 13, PUP); /* SPI1_MOSI */
at91_set_a_periph(AT91_PIO_PORTB, 14, PUP); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTB, 15, 1);
@@ -146,9 +132,7 @@ void at91_spi1_hw_init(unsigned long cs_mask)
#if defined(CONFIG_GENERIC_ATMEL_MCI)
void at91_mci_hw_init(void)
{
- /* Enable mci clock */
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- writel(1 << ATMEL_ID_MCI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_MCI1);
at91_set_a_periph(AT91_PIO_PORTA, 6, PUP); /* MCI1_CK */
@@ -207,12 +191,9 @@ void at91_uhp_hw_init(void)
#ifdef CONFIG_AT91_CAN
void at91_can_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 13, 0); /* CAN_TX */
at91_set_a_periph(AT91_PIO_PORTA, 14, 1); /* CAN_RX */
- /* Enable clock */
- writel(1 << ATMEL_ID_CAN, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_CAN);
}
#endif
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9m10g45_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9m10g45_devices.c
index 0e6c0da..0d83426 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9m10g45_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9m10g45_devices.c
@@ -8,7 +8,7 @@
#include <common.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm/io.h>
@@ -29,51 +29,40 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 19, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTB, 18, PUP); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 4, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTB, 5, PUP); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTD, 6, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTD, 7, PUP); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 12, 0); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTB, 13, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 0, PUP); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTB, 1, PUP); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTB, 2, PUP); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTB, 3, 1);
@@ -103,14 +92,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 14, PUP); /* SPI1_MISO */
at91_set_a_periph(AT91_PIO_PORTB, 15, PUP); /* SPI1_MOSI */
at91_set_a_periph(AT91_PIO_PORTB, 16, PUP); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTB, 17, 1);
@@ -169,8 +155,6 @@ void at91_macb_hw_init(void)
#ifdef CONFIG_GENERIC_ATMEL_MCI
void at91_mci_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 0, 0); /* MCI0 CLK */
at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* MCI0 CDA */
at91_set_a_periph(AT91_PIO_PORTA, 2, 0); /* MCI0 DA0 */
@@ -178,7 +162,6 @@ void at91_mci_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTA, 4, 0); /* MCI0 DA2 */
at91_set_a_periph(AT91_PIO_PORTA, 5, 0); /* MCI0 DA3 */
- /* Enable clock */
- writel(1 << ATMEL_ID_MCI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_MCI0);
}
#endif
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
index 39f17a1..a03abfc 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c
@@ -8,8 +8,8 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_pio.h>
+#include <asm/arch/clk.h>
unsigned int has_lcdc()
{
@@ -18,60 +18,47 @@ unsigned int has_lcdc()
void at91_serial0_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 0, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 5, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTA, 6, 0); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 7, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTA, 8, 0); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_serial3_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_b_periph(AT91_PIO_PORTC, 22, 1); /* TXD3 */
at91_set_b_periph(AT91_PIO_PORTC, 23, 0); /* RXD3 */
- writel(1 << ATMEL_ID_USART3, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART3);
}
void at91_seriald_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 10, 1); /* DTXD */
at91_set_a_periph(AT91_PIO_PORTA, 9, 0); /* DRXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#ifdef CONFIG_ATMEL_SPI
void at91_spi0_hw_init(unsigned long cs_mask)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 11, 0); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTA, 12, 0); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTA, 13, 0); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0))
at91_set_pio_output(AT91_PIO_PORTA, 14, 1);
@@ -85,14 +72,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_b_periph(AT91_PIO_PORTA, 21, 0); /* SPI1_MISO */
at91_set_b_periph(AT91_PIO_PORTA, 22, 0); /* SPI1_MOSI */
at91_set_b_periph(AT91_PIO_PORTA, 23, 0); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0))
at91_set_pio_output(AT91_PIO_PORTA, 8, 1);
@@ -107,8 +91,6 @@ void at91_spi1_hw_init(unsigned long cs_mask)
void at91_mci_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 17, 0); /* MCCK */
at91_set_a_periph(AT91_PIO_PORTA, 16, 0); /* MCCDA */
at91_set_a_periph(AT91_PIO_PORTA, 15, 0); /* MCDA0 */
@@ -116,14 +98,12 @@ void at91_mci_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTA, 19, 0); /* MCDA2 */
at91_set_a_periph(AT91_PIO_PORTA, 20, 0); /* MCDA3 */
- writel(1 << ATMEL_ID_HSMCI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_HSMCI0);
}
#ifdef CONFIG_LCD
void at91_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 24, 0); /* LCDDPWR */
at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDVSYNC */
at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDHSYNC */
@@ -156,6 +136,6 @@ void at91_lcd_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTC, 22, 0); /* LCDD22 */
at91_set_a_periph(AT91_PIO_PORTC, 23, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
}
#endif
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c
index 857c864..dbf9386 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c
@@ -9,7 +9,7 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
/*
@@ -29,51 +29,40 @@
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 6, 1); /* TXD0 */
at91_set_a_periph(AT91_PIO_PORTA, 7, PUP); /* RXD0 */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 11, 1); /* TXD1 */
at91_set_a_periph(AT91_PIO_PORTA, 12, PUP); /* RXD1 */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 13, 1); /* TXD2 */
at91_set_a_periph(AT91_PIO_PORTA, 14, PUP); /* RXD2 */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 21, PUP); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTA, 22, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
#if defined(CONFIG_HAS_DATAFLASH) || defined(CONFIG_ATMEL_SPI)
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 25, PUP); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTA, 26, PUP); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTA, 27, PUP); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI);
if (cs_mask & (1 << 0)) {
at91_set_a_periph(AT91_PIO_PORTA, 28, 1);
@@ -105,8 +94,6 @@ void at91_spi0_hw_init(unsigned long cs_mask)
#ifdef CONFIG_GENERIC_ATMEL_MCI
void at91_mci_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 2, 0); /* MCI CLK */
at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* MCI CDA */
at91_set_a_periph(AT91_PIO_PORTA, 0, 0); /* MCI DA0 */
@@ -114,7 +101,6 @@ void at91_mci_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTA, 4, 0); /* MCI DA2 */
at91_set_a_periph(AT91_PIO_PORTA, 5, 0); /* MCI DA3 */
- /* Enable clock */
- writel(1 << ATMEL_ID_MCI, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_MCI);
}
#endif
diff --git a/arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c b/arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c
index 6d94572..3e4555a 100644
--- a/arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c
+++ b/arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c
@@ -6,7 +6,7 @@
#include <common.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm/io.h>
@@ -64,42 +64,34 @@ char *get_cpu_name()
void at91_seriald_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 9, 0); /* DRXD */
at91_set_a_periph(AT91_PIO_PORTA, 10, 1); /* DTXD */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
}
void at91_serial0_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 0, 1); /* TXD */
at91_set_a_periph(AT91_PIO_PORTA, 1, 0); /* RXD */
- writel(1 << ATMEL_ID_USART0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART0);
}
void at91_serial1_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 5, 1); /* TXD */
at91_set_a_periph(AT91_PIO_PORTA, 6, 0); /* RXD */
- writel(1 << ATMEL_ID_USART1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART1);
}
void at91_serial2_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 7, 1); /* TXD */
at91_set_a_periph(AT91_PIO_PORTA, 8, 0); /* RXD */
- writel(1 << ATMEL_ID_USART2, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_USART2);
}
void at91_mci_hw_init(void)
@@ -112,22 +104,17 @@ void at91_mci_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTA, 19, 1); /* MCDA2 */
at91_set_a_periph(AT91_PIO_PORTA, 20, 1); /* MCDA3 */
- /* Enable clock for MCI0 */
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- writel(1 << ATMEL_ID_HSMCI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_HSMCI0);
}
#ifdef CONFIG_ATMEL_SPI
void at91_spi0_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTA, 11, 0); /* SPI0_MISO */
at91_set_a_periph(AT91_PIO_PORTA, 12, 0); /* SPI0_MOSI */
at91_set_a_periph(AT91_PIO_PORTA, 13, 0); /* SPI0_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI0);
if (cs_mask & (1 << 0))
at91_set_a_periph(AT91_PIO_PORTA, 14, 0);
@@ -149,14 +136,11 @@ void at91_spi0_hw_init(unsigned long cs_mask)
void at91_spi1_hw_init(unsigned long cs_mask)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_b_periph(AT91_PIO_PORTA, 21, 0); /* SPI1_MISO */
at91_set_b_periph(AT91_PIO_PORTA, 22, 0); /* SPI1_MOSI */
at91_set_b_periph(AT91_PIO_PORTA, 23, 0); /* SPI1_SPCK */
- /* Enable clock */
- writel(1 << ATMEL_ID_SPI1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SPI1);
if (cs_mask & (1 << 0))
at91_set_b_periph(AT91_PIO_PORTA, 8, 0);
@@ -193,11 +177,9 @@ void at91_uhp_hw_init(void)
#ifdef CONFIG_MACB
void at91_macb_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
if (has_emac0()) {
/* Enable EMAC0 clock */
- writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC0);
/* EMAC0 pins setup */
at91_set_a_periph(AT91_PIO_PORTB, 4, 0); /* ETXCK */
at91_set_a_periph(AT91_PIO_PORTB, 3, 0); /* ERXDV */
@@ -213,7 +195,7 @@ void at91_macb_hw_init(void)
if (has_emac1()) {
/* Enable EMAC1 clock */
- writel(1 << ATMEL_ID_EMAC1, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC1);
/* EMAC1 pins setup */
at91_set_b_periph(AT91_PIO_PORTC, 29, 0); /* ETXCK */
at91_set_b_periph(AT91_PIO_PORTC, 28, 0); /* ECRSDV */
diff --git a/arch/arm/mach-at91/arm926ejs/cpu.c b/arch/arm/mach-at91/arm926ejs/cpu.c
index 990c689..9b9f8af 100644
--- a/arch/arm/mach-at91/arm926ejs/cpu.c
+++ b/arch/arm/mach-at91/arm926ejs/cpu.c
@@ -10,7 +10,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_pit.h>
#include <asm/arch/at91_gpbr.h>
#include <asm/arch/clk.h>
diff --git a/arch/arm/mach-at91/arm926ejs/timer.c b/arch/arm/mach-at91/arm926ejs/timer.c
index 31ce646..c49d306 100644
--- a/arch/arm/mach-at91/arm926ejs/timer.c
+++ b/arch/arm/mach-at91/arm926ejs/timer.c
@@ -10,7 +10,6 @@
#include <asm/io.h>
#include <asm/arch/hardware.h>
#include <asm/arch/at91_pit.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/clk.h>
#include <div64.h>
@@ -38,11 +37,9 @@ DECLARE_GLOBAL_DATA_PTR;
*/
int timer_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
at91_pit_t *pit = (at91_pit_t *) ATMEL_BASE_PIT;
- /* Enable PITC Clock */
- writel(1 << ATMEL_ID_SYS, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_SYS);
/* Enable PITC */
writel(TIMER_LOAD_VAL | AT91_PIT_MR_EN , &pit->mr);
diff --git a/arch/arm/mach-at91/armv7/cpu.c b/arch/arm/mach-at91/armv7/cpu.c
index 7843aed..1865303 100644
--- a/arch/arm/mach-at91/armv7/cpu.c
+++ b/arch/arm/mach-at91/armv7/cpu.c
@@ -12,7 +12,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_pit.h>
#include <asm/arch/at91_gpbr.h>
#include <asm/arch/clk.h>
diff --git a/arch/arm/mach-at91/armv7/timer.c b/arch/arm/mach-at91/armv7/timer.c
index a4a3817..6f91e22 100644
--- a/arch/arm/mach-at91/armv7/timer.c
+++ b/arch/arm/mach-at91/armv7/timer.c
@@ -13,7 +13,6 @@
#include <asm/io.h>
#include <asm/arch/hardware.h>
#include <asm/arch/at91_pit.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/clk.h>
#include <div64.h>
diff --git a/arch/arm/mach-at91/phy.c b/arch/arm/mach-at91/phy.c
index 2cba716..ddd70f5 100644
--- a/arch/arm/mach-at91/phy.c
+++ b/arch/arm/mach-at91/phy.c
@@ -15,7 +15,6 @@
#include <common.h>
#include <asm/io.h>
#include <linux/sizes.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <watchdog.h>
diff --git a/arch/arm/mach-at91/sdram.c b/arch/arm/mach-at91/sdram.c
index 5758b06..1dfc74f 100644
--- a/arch/arm/mach-at91/sdram.c
+++ b/arch/arm/mach-at91/sdram.c
@@ -13,7 +13,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91sam9_sdramc.h>
#include <asm/arch/gpio.h>
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 4/5] board: atmel: clean up peripheral clock code
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
` (2 preceding siblings ...)
2015-12-09 7:48 ` [U-Boot] [PATCH v2 3/5] ARM: cpu: at91: clean up peripheral clock code Wenyou Yang
@ 2015-12-09 7:48 ` Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 5/5] drivers: at91: " Wenyou Yang
2015-12-09 10:00 ` [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Heiko Schocher
5 siblings, 0 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
Due to introducing the new peripheral clock handle functions,
use these functions to reduce duplicated code.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
Changes in v2:
- fix checkpatch warning.
board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
board/atmel/at91rm9200ek/led.c | 5 +----
board/atmel/at91sam9260ek/at91sam9260ek.c | 15 +++++----------
board/atmel/at91sam9261ek/at91sam9261ek.c | 8 ++------
board/atmel/at91sam9261ek/led.c | 6 ++----
board/atmel/at91sam9263ek/at91sam9263ek.c | 23 +++++++----------------
board/atmel/at91sam9263ek/led.c | 9 +++------
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 +++++---------------
board/atmel/at91sam9m10g45ek/led.c | 7 ++-----
board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 ++----
board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++++++------------
board/atmel/at91sam9rlek/led.c | 7 ++-----
board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +++-------
board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 ++---
board/atmel/sama5d3xek/sama5d3xek.c | 5 ++---
board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 ++---
board/atmel/sama5d4ek/sama5d4ek.c | 5 ++---
board/bluewater/snapper9260/snapper9260.c | 15 +++++----------
board/calao/usb_a9263/usb_a9263.c | 11 ++++-------
board/egnite/ethernut5/ethernut5.c | 20 ++++++++------------
board/esd/meesc/meesc.c | 15 ++++++---------
board/mini-box/picosam9g45/led.c | 7 ++-----
board/mini-box/picosam9g45/picosam9g45.c | 17 ++++-------------
board/ronetix/pm9261/led.c | 7 ++-----
board/ronetix/pm9261/pm9261.c | 22 ++++++----------------
board/ronetix/pm9263/led.c | 7 ++-----
board/ronetix/pm9263/pm9263.c | 19 +++++--------------
board/ronetix/pm9g45/pm9g45.c | 20 ++++++--------------
board/siemens/corvus/board.c | 6 ++----
board/siemens/smartweb/smartweb.c | 3 +--
board/siemens/taurus/taurus.c | 3 +--
32 files changed, 102 insertions(+), 226 deletions(-)
diff --git a/board/atmel/at91rm9200ek/at91rm9200ek.c b/board/atmel/at91rm9200ek/at91rm9200ek.c
index 64ab572..4ca8106 100644
--- a/board/atmel/at91rm9200ek/at91rm9200ek.c
+++ b/board/atmel/at91rm9200ek/at91rm9200ek.c
@@ -14,7 +14,6 @@
#include <netdev.h>
#include <asm/arch/hardware.h>
#include <asm/arch/at91_pio.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_common.h>
#include <asm/io.h>
diff --git a/board/atmel/at91rm9200ek/led.c b/board/atmel/at91rm9200ek/led.c
index 6761b14..8b62035 100644
--- a/board/atmel/at91rm9200ek/led.c
+++ b/board/atmel/at91rm9200ek/led.c
@@ -12,7 +12,6 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/hardware.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_pio.h>
#include <status_led.h>
@@ -59,11 +58,9 @@ void red_led_off(void)
void coloured_LED_init (void)
{
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
at91_pio_t *pio = (at91_pio_t *)ATMEL_BASE_PIO;
- /* Enable PIOB clock */
- writel(1 << ATMEL_ID_PIOB, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
/* Disable peripherals on LEDs */
writel(GREEN_LED | YELLOW_LED | RED_LED, &pio->piob.per);
diff --git a/board/atmel/at91sam9260ek/at91sam9260ek.c b/board/atmel/at91sam9260ek/at91sam9260ek.c
index 7f14af1..98193bf 100644
--- a/board/atmel/at91sam9260ek/at91sam9260ek.c
+++ b/board/atmel/at91sam9260ek/at91sam9260ek.c
@@ -11,7 +11,7 @@
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <atmel_mci.h>
@@ -70,11 +70,9 @@ static void at91sam9260ek_nand_hw_init(void)
#ifdef CONFIG_MACB
static void at91sam9260ek_macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
- /* Enable EMAC clock */
- writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC0);
/*
* Disable pull-up on:
@@ -122,12 +120,9 @@ int board_mmc_init(bd_t *bd)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOC),
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
return 0;
}
diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c
index 5250474..7b7cd2c 100644
--- a/board/atmel/at91sam9261ek/at91sam9261ek.c
+++ b/board/atmel/at91sam9261ek/at91sam9261ek.c
@@ -12,7 +12,6 @@
#include <asm/arch/at91sam9261_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
@@ -35,7 +34,6 @@ static void at91sam9261ek_nand_hw_init(void)
{
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
unsigned long csa;
/* Enable CS3 */
@@ -74,7 +72,7 @@ static void at91sam9261ek_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(2),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
/* Configure RDY/BSY */
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -161,8 +159,6 @@ void lcd_disable(void)
static void at91sam9261ek_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_A_periph(AT91_PIN_PB1, 0); /* LCDHSYNC */
at91_set_A_periph(AT91_PIN_PB2, 0); /* LCDDOTCK */
at91_set_A_periph(AT91_PIN_PB3, 0); /* LCDDEN */
@@ -186,7 +182,7 @@ static void at91sam9261ek_lcd_hw_init(void)
at91_set_B_periph(AT91_PIN_PB27, 0); /* LCDD22 */
at91_set_B_periph(AT91_PIN_PB28, 0); /* LCDD23 */
- writel(AT91_PMC_HCK1, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_HCK1);
/* For 9G10EK, let U-Boot allocate the framebuffer in SDRAM */
#ifdef CONFIG_AT91SAM9261EK
diff --git a/board/atmel/at91sam9261ek/led.c b/board/atmel/at91sam9261ek/led.c
index 18a68d8..485d7ea 100644
--- a/board/atmel/at91sam9261ek/led.c
+++ b/board/atmel/at91sam9261ek/led.c
@@ -8,17 +8,15 @@
#include <common.h>
#include <asm/arch/at91sam9261.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/gpio.h>
#include <asm/arch/at91_pio.h>
+#include <asm/arch/clk.h>
#include <asm/io.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
/* Enable clock */
- writel(ATMEL_ID_PIOA, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
at91_set_gpio_output(CONFIG_RED_LED, 1);
at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c
index 927adb0..af68e10 100644
--- a/board/atmel/at91sam9263ek/at91sam9263ek.c
+++ b/board/atmel/at91sam9263ek/at91sam9263ek.c
@@ -11,7 +11,6 @@
#include <asm/arch/at91sam9263.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_matrix.h>
#include <asm/arch/at91_pio.h>
#include <asm/arch/clk.h>
@@ -39,7 +38,6 @@ static void at91sam9263ek_nand_hw_init(void)
unsigned long csa;
at91_smc_t *smc = (at91_smc_t *) ATMEL_BASE_SMC0;
at91_matrix_t *matrix = (at91_matrix_t *) ATMEL_BASE_MATRIX;
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
/* Enable CS3 */
csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
@@ -68,8 +66,8 @@ static void at91sam9263ek_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(2),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOA | 1 << ATMEL_ID_PIOCDE,
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOCDE);
/* Configure RDY/BSY */
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -82,11 +80,9 @@ static void at91sam9263ek_nand_hw_init(void)
#ifdef CONFIG_MACB
static void at91sam9263ek_macb_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
@@ -139,8 +135,6 @@ void lcd_disable(void)
static void at91sam9263ek_lcd_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 1, 0); /* LCDHSYNC */
at91_set_a_periph(AT91_PIO_PORTC, 2, 0); /* LCDDOTCK */
at91_set_a_periph(AT91_PIO_PORTC, 3, 0); /* LCDDEN */
@@ -164,7 +158,7 @@ static void at91sam9263ek_lcd_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDD22 */
at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
gd->fb_base = ATMEL_BASE_SRAM0;
}
@@ -226,12 +220,9 @@ int board_mmc_init(bd_t *bd)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOCDE),
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOCDE);
at91_seriald_hw_init();
return 0;
diff --git a/board/atmel/at91sam9263ek/led.c b/board/atmel/at91sam9263ek/led.c
index e317d99..21d81de 100644
--- a/board/atmel/at91sam9263ek/led.c
+++ b/board/atmel/at91sam9263ek/led.c
@@ -9,16 +9,13 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/gpio.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91sam9263.h>
+#include <asm/arch/clk.h>
void coloured_LED_init(void)
{
- /* Enable clock */
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
- writel(1 << ATMEL_ID_PIOB | 1 << ATMEL_ID_PIOCDE,
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
at91_set_gpio_output(CONFIG_RED_LED, 1);
at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
index 2fea56f..b67fd76 100644
--- a/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
+++ b/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
@@ -12,7 +12,6 @@
#include <asm/arch/at91sam9g45_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/gpio.h>
#include <asm/arch/clk.h>
#include <lcd.h>
@@ -36,7 +35,6 @@ void at91sam9m10g45ek_nand_hw_init(void)
{
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
unsigned long csa;
/* Enable CS3 */
@@ -63,7 +61,7 @@ void at91sam9m10g45ek_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(3),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
/* Configure RDY/BSY */
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -130,13 +128,11 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable DDR2 clock */
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_DDRSDRC0, ATMEL_BASE_CS6, &ddr2);
@@ -146,9 +142,7 @@ void mem_init(void)
#ifdef CONFIG_CMD_USB
static void at91sam9m10g45ek_usb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- writel(1 << ATMEL_ID_PIODE, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIODE);
at91_set_gpio_output(AT91_PIN_PD1, 0);
at91_set_gpio_output(AT91_PIN_PD3, 0);
@@ -158,11 +152,9 @@ static void at91sam9m10g45ek_usb_hw_init(void)
#ifdef CONFIG_MACB
static void at91sam9m10g45ek_macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
@@ -222,8 +214,6 @@ void lcd_disable(void)
static void at91sam9m10g45ek_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
@@ -255,7 +245,7 @@ static void at91sam9m10g45ek_lcd_hw_init(void)
at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */
at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
gd->fb_base = CONFIG_AT91SAM9G45_LCD_BASE;
}
diff --git a/board/atmel/at91sam9m10g45ek/led.c b/board/atmel/at91sam9m10g45ek/led.c
index fe98723..866052e 100644
--- a/board/atmel/at91sam9m10g45ek/led.c
+++ b/board/atmel/at91sam9m10g45ek/led.c
@@ -9,15 +9,12 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91sam9g45.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(1 << ATMEL_ID_PIODE, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIODE);
at91_set_gpio_output(CONFIG_RED_LED, 1);
at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/board/atmel/at91sam9n12ek/at91sam9n12ek.c b/board/atmel/at91sam9n12ek/at91sam9n12ek.c
index 59bc535..49e34b2 100644
--- a/board/atmel/at91sam9n12ek/at91sam9n12ek.c
+++ b/board/atmel/at91sam9n12ek/at91sam9n12ek.c
@@ -10,7 +10,6 @@
#include <asm/arch/at91sam9x5_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/at91_pio.h>
#include <asm/arch/clk.h>
@@ -208,9 +207,8 @@ void at91sam9n12ek_usb_hw_init(void)
int board_early_init_f(void)
{
- /* Enable clocks for all PIOs */
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- writel((1 << ATMEL_ID_PIOAB) | (1 << ATMEL_ID_PIOCD), &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOAB);
+ at91_periph_clk_enable(ATMEL_ID_PIOCD);
at91_seriald_hw_init();
return 0;
diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c
index f995cef..9ef2864 100644
--- a/board/atmel/at91sam9rlek/at91sam9rlek.c
+++ b/board/atmel/at91sam9rlek/at91sam9rlek.c
@@ -12,7 +12,6 @@
#include <asm/arch/at91sam9rl_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
@@ -36,7 +35,6 @@ static void at91sam9rlek_nand_hw_init(void)
{
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
unsigned long csa;
/* Enable CS3 */
@@ -64,7 +62,7 @@ static void at91sam9rlek_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(2),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOD, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOD);
/* Configure RDY/BSY */
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -106,8 +104,6 @@ void lcd_disable(void)
}
static void at91sam9rlek_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_B_periph(AT91_PIN_PC1, 0); /* LCDPWR */
at91_set_A_periph(AT91_PIN_PC5, 0); /* LCDHSYNC */
at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDDOTCK */
@@ -130,7 +126,7 @@ static void at91sam9rlek_lcd_hw_init(void)
at91_set_B_periph(AT91_PIN_PC24, 0); /* LCDD22 */
at91_set_B_periph(AT91_PIN_PC25, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
}
#ifdef CONFIG_LCD_INFO
@@ -174,12 +170,10 @@ int board_mmc_init(bd_t *bis)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOC) | (1 << ATMEL_ID_PIOD),
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
+ at91_periph_clk_enable(ATMEL_ID_PIOD);
return 0;
}
diff --git a/board/atmel/at91sam9rlek/led.c b/board/atmel/at91sam9rlek/led.c
index fede59c..d593aba 100644
--- a/board/atmel/at91sam9rlek/led.c
+++ b/board/atmel/at91sam9rlek/led.c
@@ -8,16 +8,13 @@
#include <common.h>
#include <asm/arch/at91sam9rl.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm/io.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(ATMEL_ID_PIOD, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOD);
at91_set_gpio_output(CONFIG_RED_LED, 1);
at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/board/atmel/at91sam9x5ek/at91sam9x5ek.c b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
index 1738a2b..23ca71a 100644
--- a/board/atmel/at91sam9x5ek/at91sam9x5ek.c
+++ b/board/atmel/at91sam9x5ek/at91sam9x5ek.c
@@ -9,10 +9,9 @@
#include <asm/arch/at91sam9x5_matrix.h>
#include <asm/arch/at91sam9_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>
+#include <asm/arch/gpio.h>
#include <lcd.h>
#include <atmel_hlcdc.h>
#include <atmel_mci.h>
@@ -39,7 +38,6 @@ static void at91sam9x5ek_nand_hw_init(void)
{
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
unsigned long csa;
/* Enable CS3 */
@@ -72,7 +70,7 @@ static void at91sam9x5ek_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(1),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOCD, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOCD);
/* Configure RDY/BSY */
at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
@@ -141,8 +139,6 @@ void lcd_disable(void)
static void at91sam9x5ek_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
if (has_lcdc()) {
at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDPWM */
at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDVSYNC */
@@ -176,7 +172,7 @@ static void at91sam9x5ek_lcd_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTC, 22, 0); /* LCDD22 */
at91_set_a_periph(AT91_PIO_PORTC, 23, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
}
}
diff --git a/board/atmel/sama5d2_xplained/sama5d2_xplained.c b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
index 0b3397f..241c165 100644
--- a/board/atmel/sama5d2_xplained/sama5d2_xplained.c
+++ b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
@@ -15,7 +15,6 @@
#include <version.h>
#include <asm/io.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/atmel_pio4.h>
#include <asm/arch/atmel_usba_udc.h>
#include <asm/arch/atmel_sdhci.h>
diff --git a/board/atmel/sama5d3_xplained/sama5d3_xplained.c b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
index 7a01149..d180b41 100644
--- a/board/atmel/sama5d3_xplained/sama5d3_xplained.c
+++ b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
@@ -184,14 +184,13 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable MPDDR clock */
+ /* Enable MPDDR clock */
at91_periph_clk_enable(ATMEL_ID_MPDDRC);
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_MPDDRC, ATMEL_BASE_DDRCS, &ddr2);
diff --git a/board/atmel/sama5d3xek/sama5d3xek.c b/board/atmel/sama5d3xek/sama5d3xek.c
index 7c95f33..777e57e 100644
--- a/board/atmel/sama5d3xek/sama5d3xek.c
+++ b/board/atmel/sama5d3xek/sama5d3xek.c
@@ -443,14 +443,13 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable MPDDR clock */
+ /* Enable MPDDR clock */
at91_periph_clk_enable(ATMEL_ID_MPDDRC);
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_MPDDRC, ATMEL_BASE_DDRCS, &ddr2);
diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
index db45331..e95310c 100644
--- a/board/atmel/sama5d4_xplained/sama5d4_xplained.c
+++ b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
@@ -383,14 +383,13 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable MPDDR clock */
+ /* Enable MPDDR clock */
at91_periph_clk_enable(ATMEL_ID_MPDDRC);
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_MPDDRC, ATMEL_BASE_DDRCS, &ddr2);
diff --git a/board/atmel/sama5d4ek/sama5d4ek.c b/board/atmel/sama5d4ek/sama5d4ek.c
index 357b223..c92e2588 100644
--- a/board/atmel/sama5d4ek/sama5d4ek.c
+++ b/board/atmel/sama5d4ek/sama5d4ek.c
@@ -379,14 +379,13 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable MPDDR clock */
+ /* Enable MPDDR clock */
at91_periph_clk_enable(ATMEL_ID_MPDDRC);
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_MPDDRC, ATMEL_BASE_DDRCS, &ddr2);
diff --git a/board/bluewater/snapper9260/snapper9260.c b/board/bluewater/snapper9260/snapper9260.c
index 95633b0..2d1a89e 100644
--- a/board/bluewater/snapper9260/snapper9260.c
+++ b/board/bluewater/snapper9260/snapper9260.c
@@ -15,7 +15,7 @@
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm/arch/atmel_serial.h>
#include <net.h>
@@ -31,11 +31,9 @@ DECLARE_GLOBAL_DATA_PTR;
static void macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC0);
/* Disable pull-ups to prevent PHY going into test mode */
writel(pin_to_mask(AT91_PIN_PA14) |
@@ -108,12 +106,9 @@ static void nand_hw_init(void)
int board_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable PIO clocks */
- writel((1 << ATMEL_ID_PIOA) |
- (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOC), &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
/* The mach-type is the same for both Snapper 9260 and 9G20 */
gd->bd->bi_arch_number = MACH_TYPE_SNAPPER_9260;
diff --git a/board/calao/usb_a9263/usb_a9263.c b/board/calao/usb_a9263/usb_a9263.c
index 266e950..d627b24 100644
--- a/board/calao/usb_a9263/usb_a9263.c
+++ b/board/calao/usb_a9263/usb_a9263.c
@@ -12,7 +12,7 @@
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
#include <asm/arch/at91_matrix.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm-generic/gpio.h>
#include <asm/io.h>
@@ -43,7 +43,6 @@ static void usb_a9263_nand_hw_init(void)
unsigned long csa;
at91_smc_t *smc = (at91_smc_t *)ATMEL_BASE_SMC0;
at91_matrix_t *matrix = (at91_matrix_t *)ATMEL_BASE_MATRIX;
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
/* Enable CS3 */
csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
@@ -66,7 +65,8 @@ static void usb_a9263_nand_hw_init(void)
AT91_SMC_MODE_DBW_8 |
AT91_SMC_MODE_TDF_CYCLE(2), &smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOA | 1 << ATMEL_ID_PIOCDE, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOCDE);
/* Configure RDY/BSY */
gpio_request(CONFIG_SYS_NAND_READY_PIN, "NAND ready/busy");
@@ -81,10 +81,7 @@ static void usb_a9263_nand_hw_init(void)
#ifdef CONFIG_MACB
static void usb_a9263_macb_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
diff --git a/board/egnite/ethernut5/ethernut5.c b/board/egnite/ethernut5/ethernut5.c
index 67d3984..2c8e978 100644
--- a/board/egnite/ethernut5/ethernut5.c
+++ b/board/egnite/ethernut5/ethernut5.c
@@ -67,8 +67,8 @@
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_spi.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
#include <asm/io.h>
#include <asm/gpio.h>
@@ -151,12 +151,10 @@ static void ethernut5_nand_hw_init(void)
*/
int board_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOC),
- &pmc->pcer);
/* Set adress of boot parameters. */
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
/* Initialize UARTs and power management. */
@@ -179,10 +177,9 @@ int board_eth_init(bd_t *bis)
{
const char *devname;
unsigned short mode;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
- /* Enable on-chip EMAC clock. */
- writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC0);
+
/* Need to reset PHY via power management. */
ethernut5_phy_reset();
/* Set peripheral pins. */
@@ -211,10 +208,8 @@ int board_eth_init(bd_t *bis)
#ifdef CONFIG_GENERIC_ATMEL_MCI
int board_mmc_init(bd_t *bd)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+ at91_periph_clk_enable(ATMEL_ID_MCI);
- /* Enable MCI clock. */
- writel(1 << ATMEL_ID_MCI, &pmc->pcer);
/* Initialize MCI hardware. */
at91_mci_hw_init();
/* Register the device. */
@@ -229,6 +224,7 @@ int board_mmc_getcd(struct mmc *mmc)
#ifdef CONFIG_ATMEL_SPI
/*
+
* Note, that u-boot uses different code for SPI bus access. While
* memory routines use automatic chip select control, the serial
* flash support requires 'manual' GPIO control. Thus, we switch
diff --git a/board/esd/meesc/meesc.c b/board/esd/meesc/meesc.c
index b7f9f90..fe781dc 100644
--- a/board/esd/meesc/meesc.c
+++ b/board/esd/meesc/meesc.c
@@ -87,9 +87,8 @@ static void meesc_nand_hw_init(void)
#ifdef CONFIG_MACB
static void meesc_macb_hw_init(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
+
at91_macb_hw_init();
}
#endif
@@ -244,12 +243,10 @@ int misc_init_r(void)
int board_early_init_f(void)
{
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
- /* enable all clocks */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOCDE) | (1 << ATMEL_ID_UHP),
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOCDE);
+ at91_periph_clk_enable(ATMEL_ID_UHP);
at91_seriald_hw_init();
diff --git a/board/mini-box/picosam9g45/led.c b/board/mini-box/picosam9g45/led.c
index dc1013a..3fb6a7b 100644
--- a/board/mini-box/picosam9g45/led.c
+++ b/board/mini-box/picosam9g45/led.c
@@ -9,15 +9,12 @@
#include <common.h>
#include <asm/io.h>
#include <asm/arch/at91sam9g45.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(1 << ATMEL_ID_PIODE, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIODE);
at91_set_gpio_output(CONFIG_GREEN_LED, 1);
diff --git a/board/mini-box/picosam9g45/picosam9g45.c b/board/mini-box/picosam9g45/picosam9g45.c
index afbd6ce..b768fbf 100644
--- a/board/mini-box/picosam9g45/picosam9g45.c
+++ b/board/mini-box/picosam9g45/picosam9g45.c
@@ -17,7 +17,6 @@
#include <asm/arch/at91sam9g45_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/gpio.h>
#include <asm/arch/clk.h>
#include <lcd.h>
@@ -80,15 +79,13 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct at91_matrix *mat = (struct at91_matrix *)ATMEL_BASE_MATRIX;
struct atmel_mpddr ddr2;
unsigned long csa;
ddr2_conf(&ddr2);
- /* enable DDR2 clock */
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* Chip select 1 is for DDR2/SDRAM */
csa = readl(&mat->ebicsa);
@@ -105,9 +102,7 @@ void mem_init(void)
#ifdef CONFIG_CMD_USB
static void picosam9g45_usb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- writel(1 << ATMEL_ID_PIODE, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIODE);
at91_set_gpio_output(AT91_PIN_PD1, 0);
at91_set_gpio_output(AT91_PIN_PD3, 0);
@@ -117,11 +112,9 @@ static void picosam9g45_usb_hw_init(void)
#ifdef CONFIG_MACB
static void picosam9g45_macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
@@ -181,8 +174,6 @@ void lcd_disable(void)
static void picosam9g45_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
@@ -214,7 +205,7 @@ static void picosam9g45_lcd_hw_init(void)
at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */
at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
gd->fb_base = CONFIG_AT91SAM9G45_LCD_BASE;
}
diff --git a/board/ronetix/pm9261/led.c b/board/ronetix/pm9261/led.c
index cc4c2a0..53e353a 100644
--- a/board/ronetix/pm9261/led.c
+++ b/board/ronetix/pm9261/led.c
@@ -9,15 +9,12 @@
#include <common.h>
#include <asm/gpio.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
gpio_direction_output(CONFIG_RED_LED, 1);
gpio_direction_output(CONFIG_GREEN_LED, 1);
diff --git a/board/ronetix/pm9261/pm9261.c b/board/ronetix/pm9261/pm9261.c
index b96f745..3cc01cb 100644
--- a/board/ronetix/pm9261/pm9261.c
+++ b/board/ronetix/pm9261/pm9261.c
@@ -14,7 +14,6 @@
#include <asm/gpio.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/at91_matrix.h>
#include <asm/arch/clk.h>
@@ -41,7 +40,6 @@ static void pm9261_nand_hw_init(void)
unsigned long csa;
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
/* Enable CS3 */
csa = readl(&matrix->csa) | AT91_MATRIX_CSA_EBI_CS3A;
@@ -69,9 +67,8 @@ static void pm9261_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(2),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOA |
- 1 << ATMEL_ID_PIOC,
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
/* Configure RDY/BSY */
gpio_direction_input(CONFIG_SYS_NAND_READY_PIN);
@@ -89,7 +86,6 @@ static void pm9261_nand_hw_init(void)
static void pm9261_dm9000_hw_init(void)
{
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
/* Configure SMC CS2 for DM9000 */
writel(AT91_SMC_SETUP_NWE(2) | AT91_SMC_SETUP_NCS_WR(0) |
@@ -110,7 +106,7 @@ static void pm9261_dm9000_hw_init(void)
&smc->cs[2].mode);
/* Configure Interrupt pin as input, no pull-up */
- writel(1 << ATMEL_ID_PIOA, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
at91_set_pio_input(AT91_PIO_PORTA, 24, 0);
}
#endif
@@ -145,8 +141,6 @@ void lcd_disable(void)
static void pm9261_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTB, 1, 0); /* LCDHSYNC */
at91_set_a_periph(AT91_PIO_PORTB, 2, 0); /* LCDDOTCK */
at91_set_a_periph(AT91_PIO_PORTB, 3, 0); /* LCDDEN */
@@ -170,7 +164,7 @@ static void pm9261_lcd_hw_init(void)
at91_set_b_periph(AT91_PIO_PORTB, 27, 0); /* LCDD22 */
at91_set_b_periph(AT91_PIO_PORTB, 28, 0); /* LCDD23 */
- writel(1 << 17, &pmc->scer); /* LCD controller Clock, AT91SAM9261 only */
+ at91_system_clk_enable(AT91_PMC_HCK1);
gd->fb_base = ATMEL_BASE_SRAM;
}
@@ -224,12 +218,8 @@ void lcd_show_board_info(void)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for some PIOs */
- writel(1 << ATMEL_ID_PIOA |
- 1 << ATMEL_ID_PIOC,
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
at91_seriald_hw_init();
diff --git a/board/ronetix/pm9263/led.c b/board/ronetix/pm9263/led.c
index bfc2310..8025a20 100644
--- a/board/ronetix/pm9263/led.c
+++ b/board/ronetix/pm9263/led.c
@@ -9,15 +9,12 @@
#include <common.h>
#include <asm/gpio.h>
-#include <asm/arch/at91_pmc.h>
+#include <asm/arch/clk.h>
#include <asm/arch/gpio.h>
void coloured_LED_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clock */
- writel(1 << ATMEL_ID_PIOB, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
gpio_direction_output(CONFIG_RED_LED, 1);
gpio_direction_output(CONFIG_GREEN_LED, 1);
diff --git a/board/ronetix/pm9263/pm9263.c b/board/ronetix/pm9263/pm9263.c
index 1b00f08..276ff80 100644
--- a/board/ronetix/pm9263/pm9263.c
+++ b/board/ronetix/pm9263/pm9263.c
@@ -14,7 +14,6 @@
#include <asm/gpio.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/at91_matrix.h>
#include <asm/arch/clk.h>
@@ -78,8 +77,6 @@ static void pm9263_nand_hw_init(void)
#ifdef CONFIG_MACB
static void pm9263_macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
/*
* PB27 enables the 50MHz oscillator for Ethernet PHY
* 1 - enable
@@ -88,8 +85,7 @@ static void pm9263_macb_hw_init(void)
at91_set_pio_output(AT91_PIO_PORTB, 27, 1);
at91_set_pio_value(AT91_PIO_PORTB, 27, 1); /* 1- enable, 0 - disable */
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
@@ -231,8 +227,6 @@ static int pm9263_lcd_hw_psram_init(void)
static void pm9263_lcd_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
at91_set_a_periph(AT91_PIO_PORTC, 0, 0); /* LCDVSYNC */
at91_set_a_periph(AT91_PIO_PORTC, 1, 0); /* LCDHSYNC */
at91_set_a_periph(AT91_PIO_PORTC, 2, 0); /* LCDDOTCK */
@@ -257,7 +251,7 @@ static void pm9263_lcd_hw_init(void)
at91_set_a_periph(AT91_PIO_PORTC, 26, 0); /* LCDD22 */
at91_set_a_periph(AT91_PIO_PORTC, 27, 0); /* LCDD23 */
- writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_LCDC);
/* Power Control */
at91_set_pio_output(AT91_PIO_PORTA, 22, 1);
@@ -323,12 +317,9 @@ void lcd_show_board_info(void)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOCDE),
- &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOCDE);
at91_seriald_hw_init();
diff --git a/board/ronetix/pm9g45/pm9g45.c b/board/ronetix/pm9g45/pm9g45.c
index efc4133..c2707e0 100644
--- a/board/ronetix/pm9g45/pm9g45.c
+++ b/board/ronetix/pm9g45/pm9g45.c
@@ -17,7 +17,6 @@
#include <asm/gpio.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_rstc.h>
#include <asm/arch/at91_matrix.h>
#include <asm/arch/gpio.h>
@@ -39,7 +38,6 @@ static void pm9g45_nand_hw_init(void)
unsigned long csa;
struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
/* Enable CS3 */
csa = readl(&matrix->ccr[6]) | AT91_MATRIX_CSA_EBI_CS3A;
@@ -63,7 +61,7 @@ static void pm9g45_nand_hw_init(void)
AT91_SMC_MODE_TDF_CYCLE(3),
&smc->cs[3].mode);
- writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
#ifdef CONFIG_SYS_NAND_READY_PIN
/* Configure RDY/BSY */
@@ -78,8 +76,6 @@ static void pm9g45_nand_hw_init(void)
#ifdef CONFIG_MACB
static void pm9g45_macb_hw_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
/*
* PD2 enables the 50MHz oscillator for Ethernet PHY
* 1 - enable
@@ -88,8 +84,7 @@ static void pm9g45_macb_hw_init(void)
at91_set_pio_output(AT91_PIO_PORTD, 2, 1);
at91_set_pio_value(AT91_PIO_PORTD, 2, 1); /* 1- enable, 0 - disable */
- /* Enable clock */
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
/*
* Disable pull-up on:
@@ -114,13 +109,10 @@ static void pm9g45_macb_hw_init(void)
int board_early_init_f(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
- /* Enable clocks for all PIOs */
- writel((1 << ATMEL_ID_PIOA) |
- (1 << ATMEL_ID_PIOB) |
- (1 << ATMEL_ID_PIOC) |
- (1 << ATMEL_ID_PIODE), &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_PIOA);
+ at91_periph_clk_enable(ATMEL_ID_PIOB);
+ at91_periph_clk_enable(ATMEL_ID_PIOC);
+ at91_periph_clk_enable(ATMEL_ID_PIODE);
at91_seriald_hw_init();
diff --git a/board/siemens/corvus/board.c b/board/siemens/corvus/board.c
index 28985b8..8729fe9 100644
--- a/board/siemens/corvus/board.c
+++ b/board/siemens/corvus/board.c
@@ -17,7 +17,6 @@
#include <asm/arch/at91sam9g45_matrix.h>
#include <asm/arch/at91sam9_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>
@@ -147,13 +146,11 @@ static void ddr2_conf(struct atmel_mpddr *ddr2)
void mem_init(void)
{
- struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
struct atmel_mpddr ddr2;
ddr2_conf(&ddr2);
- /* enable DDR2 clock */
- writel(AT91_PMC_DDR, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_DDR);
/* DDRAM2 Controller initialize */
ddr2_init(ATMEL_BASE_DDRSDRC0, ATMEL_BASE_CS6, &ddr2);
@@ -214,6 +211,7 @@ void at91_udp_hw_init(void)
/* Enable UPLL clock */
writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr);
+
/* Enable UDPHS clock */
at91_periph_clk_enable(ATMEL_ID_UDPHS);
}
diff --git a/board/siemens/smartweb/smartweb.c b/board/siemens/smartweb/smartweb.c
index d82f1b7..e7ee65c 100644
--- a/board/siemens/smartweb/smartweb.c
+++ b/board/siemens/smartweb/smartweb.c
@@ -22,7 +22,6 @@
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91sam9_smc.h>
#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_spi.h>
#include <spi.h>
#include <asm/arch/clk.h>
@@ -126,7 +125,7 @@ void at91_udp_hw_init(void)
/* Enable UDPCK clock, MCK is enabled in at91_clock_init() */
at91_periph_clk_enable(ATMEL_ID_UDP);
- writel(AT91SAM926x_PMC_UDP, &pmc->scer);
+ at91_system_clk_enable(AT91SAM926x_PMC_UDP);
}
struct at91_udc_data board_udc_data = {
diff --git a/board/siemens/taurus/taurus.c b/board/siemens/taurus/taurus.c
index 72c5e60..9374064 100644
--- a/board/siemens/taurus/taurus.c
+++ b/board/siemens/taurus/taurus.c
@@ -18,7 +18,6 @@
#include <asm/arch/at91sam9260_matrix.h>
#include <asm/arch/at91sam9_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/at91sam9_sdramc.h>
@@ -300,7 +299,7 @@ void at91_udp_hw_init(void)
/* Enable UDPCK clock, MCK is enabled in at91_clock_init() */
at91_periph_clk_enable(ATMEL_ID_UDP);
- writel(AT91SAM926x_PMC_UDP, &pmc->scer);
+ at91_system_clk_enable(AT91SAM926x_PMC_UDP);
}
struct at91_udc_data board_udc_data = {
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 5/5] drivers: at91: clean up peripheral clock code
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
` (3 preceding siblings ...)
2015-12-09 7:48 ` [U-Boot] [PATCH v2 4/5] board: atmel: " Wenyou Yang
@ 2015-12-09 7:48 ` Wenyou Yang
2015-12-09 10:00 ` [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Heiko Schocher
5 siblings, 0 replies; 10+ messages in thread
From: Wenyou Yang @ 2015-12-09 7:48 UTC (permalink / raw)
To: u-boot
Due to introducing the new peripheral clock handle functions,
use these functions to reduce the duplicated code.
Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
Changes in v2: None
drivers/net/at91_emac.c | 9 ++++-----
drivers/usb/host/ehci-atmel.c | 8 --------
drivers/usb/host/ohci-at91.c | 20 ++++----------------
3 files changed, 8 insertions(+), 29 deletions(-)
diff --git a/drivers/net/at91_emac.c b/drivers/net/at91_emac.c
index d51e098..bb6866d 100644
--- a/drivers/net/at91_emac.c
+++ b/drivers/net/at91_emac.c
@@ -12,7 +12,6 @@
#include <asm/io.h>
#include <asm/arch/hardware.h>
#include <asm/arch/at91_emac.h>
-#include <asm/arch/at91_pmc.h>
#include <asm/arch/at91_pio.h>
#include <net.h>
#include <netdev.h>
@@ -321,7 +320,6 @@ static int at91emac_init(struct eth_device *netdev, bd_t *bd)
emac_device *dev;
at91_emac_t *emac;
at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
emac = (at91_emac_t *) netdev->iobase;
dev = (emac_device *) netdev->priv;
@@ -347,7 +345,8 @@ static int at91emac_init(struct eth_device *netdev, bd_t *bd)
writel(value, &pio->piob.pdr);
writel(value, &pio->piob.bsr);
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
+
writel(readl(&emac->ctl) | AT91_EMAC_CTL_CSR, &emac->ctl);
/* Init Ethernet buffers */
@@ -452,10 +451,10 @@ static int at91emac_recv(struct eth_device *netdev)
static int at91emac_write_hwaddr(struct eth_device *netdev)
{
at91_emac_t *emac;
- at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
emac = (at91_emac_t *) netdev->iobase;
- writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
+ at91_periph_clk_enable(ATMEL_ID_EMAC);
+
debug_cond(DEBUG_AT91EMAC,
"init MAC-ADDR %02x:%02x:%02x:%02x:%02x:%02x\n",
netdev->enetaddr[5], netdev->enetaddr[4], netdev->enetaddr[3],
diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c
index 9a8f004..a33fb49 100644
--- a/drivers/usb/host/ehci-atmel.c
+++ b/drivers/usb/host/ehci-atmel.c
@@ -40,11 +40,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
}
/* Enable USB Host clock */
-#ifdef CPU_HAS_PCR
at91_periph_clk_enable(ATMEL_ID_UHPHS);
-#else
- writel(1 << ATMEL_ID_UHPHS, &pmc->pcer);
-#endif
*hccr = (struct ehci_hccr *)ATMEL_BASE_EHCI;
*hcor = (struct ehci_hcor *)((uint32_t)*hccr +
@@ -59,11 +55,7 @@ int ehci_hcd_stop(int index)
ulong start_time, tmp_time;
/* Disable USB Host Clock */
-#ifdef CPU_HAS_PCR
at91_periph_clk_disable(ATMEL_ID_UHPHS);
-#else
- writel(1 << ATMEL_ID_UHPHS, &pmc->pcdr);
-#endif
start_time = get_timer(0);
/* Disable UTMI PLL */
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 820e2e5..da85111 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -37,17 +37,11 @@ int usb_cpu_init(void)
writel(AT91_PMC_USBS_USB_UPLL | AT91_PMC_USBDIV_10, &pmc->usb);
#endif
- /* Enable USB host clock. */
-#ifdef CPU_HAS_PCR
at91_periph_clk_enable(ATMEL_ID_UHP);
-#else
- writel(1 << ATMEL_ID_UHP, &pmc->pcer);
-#endif
+ at91_system_clk_enable(ATMEL_PMC_UHP);
#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10)
- writel(ATMEL_PMC_UHP | AT91_PMC_HCK0, &pmc->scer);
-#else
- writel(ATMEL_PMC_UHP, &pmc->scer);
+ at91_system_clk_enable(AT91_PMC_HCK0);
#endif
return 0;
@@ -57,17 +51,11 @@ int usb_cpu_stop(void)
{
at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
- /* Disable USB host clock. */
-#ifdef CPU_HAS_PCR
at91_periph_clk_disable(ATMEL_ID_UHP);
-#else
- writel(1 << ATMEL_ID_UHP, &pmc->pcdr);
-#endif
+ at91_system_clk_disable(ATMEL_PMC_UHP);
#if defined(CONFIG_AT91SAM9261) || defined(CONFIG_AT91SAM9G10)
- writel(ATMEL_PMC_UHP | AT91_PMC_HCK0, &pmc->scdr);
-#else
- writel(ATMEL_PMC_UHP, &pmc->scdr);
+ at91_system_clk_disable(AT91_PMC_HCK0);
#endif
#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB
--
1.7.9.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
` (4 preceding siblings ...)
2015-12-09 7:48 ` [U-Boot] [PATCH v2 5/5] drivers: at91: " Wenyou Yang
@ 2015-12-09 10:00 ` Heiko Schocher
2015-12-10 2:15 ` Yang, Wenyou
5 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2015-12-09 10:00 UTC (permalink / raw)
To: u-boot
Hello Wenyou,
Am 09.12.2015 um 08:48 schrieb Wenyou Yang:
> To reduce the duplicated code, rework the peripheral's and
> system's clock handle functions, use these functions to replace
> the clock handle code.
>
> Changes in v2:
> - fix checkpatch warning.
>
> Wenyou Yang (5):
> ARM: at91: asm/at91_pmc.h: fix trival register offset
> ARM: at91: clock: add a new file to handle clock
> ARM: cpu: at91: clean up peripheral clock code
> board: atmel: clean up peripheral clock code
> drivers: at91: clean up peripheral clock code
>
> arch/arm/mach-at91/Makefile | 1 +
> arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 +---
> arch/arm/mach-at91/arm920t/timer.c | 4 +-
> arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++-------
> arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++------
> arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++-------
> .../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 +++------
> arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++--------
> arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++------
> arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++--------
> arch/arm/mach-at91/arm926ejs/clock.c | 7 --
> arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
> arch/arm/mach-at91/arm926ejs/timer.c | 5 +-
> arch/arm/mach-at91/armv7/clock.c | 26 -------
> arch/arm/mach-at91/armv7/cpu.c | 1 -
> arch/arm/mach-at91/armv7/timer.c | 1 -
> arch/arm/mach-at91/clock.c | 72 ++++++++++++++++++++
> arch/arm/mach-at91/include/mach/at91_pmc.h | 8 +--
> arch/arm/mach-at91/include/mach/clk.h | 2 +
> arch/arm/mach-at91/phy.c | 1 -
> arch/arm/mach-at91/sdram.c | 1 -
> board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
> board/atmel/at91rm9200ek/led.c | 5 +-
> board/atmel/at91sam9260ek/at91sam9260ek.c | 15 ++--
> board/atmel/at91sam9261ek/at91sam9261ek.c | 8 +--
> board/atmel/at91sam9261ek/led.c | 6 +-
> board/atmel/at91sam9263ek/at91sam9263ek.c | 23 ++-----
> board/atmel/at91sam9263ek/led.c | 9 +--
> board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 ++----
> board/atmel/at91sam9m10g45ek/led.c | 7 +-
> board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 +-
> board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++---
> board/atmel/at91sam9rlek/led.c | 7 +-
> board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +--
> board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
> board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 +-
> board/atmel/sama5d3xek/sama5d3xek.c | 5 +-
> board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 +-
> board/atmel/sama5d4ek/sama5d4ek.c | 5 +-
> board/bluewater/snapper9260/snapper9260.c | 15 ++--
> board/calao/usb_a9263/usb_a9263.c | 11 ++-
> board/egnite/ethernut5/ethernut5.c | 20 +++---
> board/esd/meesc/meesc.c | 15 ++--
> board/mini-box/picosam9g45/led.c | 7 +-
> board/mini-box/picosam9g45/picosam9g45.c | 17 ++---
> board/ronetix/pm9261/led.c | 7 +-
> board/ronetix/pm9261/pm9261.c | 22 ++----
> board/ronetix/pm9263/led.c | 7 +-
> board/ronetix/pm9263/pm9263.c | 19 ++----
> board/ronetix/pm9g45/pm9g45.c | 20 ++----
> board/siemens/corvus/board.c | 6 +-
> board/siemens/smartweb/smartweb.c | 3 +-
> board/siemens/taurus/taurus.c | 3 +-
> drivers/net/at91_emac.c | 9 ++-
> drivers/usb/host/ehci-atmel.c | 8 ---
> drivers/usb/host/ohci-at91.c | 20 ++----
> 56 files changed, 252 insertions(+), 496 deletions(-)
> create mode 100644 arch/arm/mach-at91/clock.c
I applied all your patches (the v2 versions), but now tftp
does not work anymore on the smartweb board ...
I try to find some time to get more details ...
bye,
Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions
2015-12-09 10:00 ` [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Heiko Schocher
@ 2015-12-10 2:15 ` Yang, Wenyou
2015-12-10 6:02 ` Heiko Schocher
0 siblings, 1 reply; 10+ messages in thread
From: Yang, Wenyou @ 2015-12-10 2:15 UTC (permalink / raw)
To: u-boot
Hi Heiko,
> -----Original Message-----
> From: Heiko Schocher [mailto:hs at denx.de]
> Sent: 2015?12?9? 18:01
> To: Yang, Wenyou <Wenyou.Yang@atmel.com>
> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; andreas.devel at googlemail.com
> Subject: Re: [PATCH v2 0/5] ARM: at91: improve peripheral and system clock
> handle functions
>
> Hello Wenyou,
>
> Am 09.12.2015 um 08:48 schrieb Wenyou Yang:
> > To reduce the duplicated code, rework the peripheral's and system's
> > clock handle functions, use these functions to replace the clock
> > handle code.
> >
> > Changes in v2:
> > - fix checkpatch warning.
> >
> > Wenyou Yang (5):
> > ARM: at91: asm/at91_pmc.h: fix trival register offset
> > ARM: at91: clock: add a new file to handle clock
> > ARM: cpu: at91: clean up peripheral clock code
> > board: atmel: clean up peripheral clock code
> > drivers: at91: clean up peripheral clock code
> >
> > arch/arm/mach-at91/Makefile | 1 +
> > arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 +---
> > arch/arm/mach-at91/arm920t/timer.c | 4 +-
> > arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++-------
> > arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++------
> > arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++-------
> > .../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 +++------
> > arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++--------
> > arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++------
> > arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++--------
> > arch/arm/mach-at91/arm926ejs/clock.c | 7 --
> > arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
> > arch/arm/mach-at91/arm926ejs/timer.c | 5 +-
> > arch/arm/mach-at91/armv7/clock.c | 26 -------
> > arch/arm/mach-at91/armv7/cpu.c | 1 -
> > arch/arm/mach-at91/armv7/timer.c | 1 -
> > arch/arm/mach-at91/clock.c | 72 ++++++++++++++++++++
> > arch/arm/mach-at91/include/mach/at91_pmc.h | 8 +--
> > arch/arm/mach-at91/include/mach/clk.h | 2 +
> > arch/arm/mach-at91/phy.c | 1 -
> > arch/arm/mach-at91/sdram.c | 1 -
> > board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
> > board/atmel/at91rm9200ek/led.c | 5 +-
> > board/atmel/at91sam9260ek/at91sam9260ek.c | 15 ++--
> > board/atmel/at91sam9261ek/at91sam9261ek.c | 8 +--
> > board/atmel/at91sam9261ek/led.c | 6 +-
> > board/atmel/at91sam9263ek/at91sam9263ek.c | 23 ++-----
> > board/atmel/at91sam9263ek/led.c | 9 +--
> > board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 ++----
> > board/atmel/at91sam9m10g45ek/led.c | 7 +-
> > board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 +-
> > board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++---
> > board/atmel/at91sam9rlek/led.c | 7 +-
> > board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +--
> > board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
> > board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 +-
> > board/atmel/sama5d3xek/sama5d3xek.c | 5 +-
> > board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 +-
> > board/atmel/sama5d4ek/sama5d4ek.c | 5 +-
> > board/bluewater/snapper9260/snapper9260.c | 15 ++--
> > board/calao/usb_a9263/usb_a9263.c | 11 ++-
> > board/egnite/ethernut5/ethernut5.c | 20 +++---
> > board/esd/meesc/meesc.c | 15 ++--
> > board/mini-box/picosam9g45/led.c | 7 +-
> > board/mini-box/picosam9g45/picosam9g45.c | 17 ++---
> > board/ronetix/pm9261/led.c | 7 +-
> > board/ronetix/pm9261/pm9261.c | 22 ++----
> > board/ronetix/pm9263/led.c | 7 +-
> > board/ronetix/pm9263/pm9263.c | 19 ++----
> > board/ronetix/pm9g45/pm9g45.c | 20 ++----
> > board/siemens/corvus/board.c | 6 +-
> > board/siemens/smartweb/smartweb.c | 3 +-
> > board/siemens/taurus/taurus.c | 3 +-
> > drivers/net/at91_emac.c | 9 ++-
> > drivers/usb/host/ehci-atmel.c | 8 ---
> > drivers/usb/host/ohci-at91.c | 20 ++----
> > 56 files changed, 252 insertions(+), 496 deletions(-)
> > create mode 100644 arch/arm/mach-at91/clock.c
>
> I applied all your patches (the v2 versions), but now tftp does not work anymore
> on the smartweb board ...
>
> I try to find some time to get more details ...
Sorry about it.
It is my fault, incorrectly used the indicator & to achieve the address of variable of pmc->pcer and pmc->pcdr.
Thank you very much for your findings.
>
> bye,
> Heiko
> --
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Best Regards,
Wenyou Yang
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions
2015-12-10 2:15 ` Yang, Wenyou
@ 2015-12-10 6:02 ` Heiko Schocher
2015-12-10 6:07 ` Yang, Wenyou
0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2015-12-10 6:02 UTC (permalink / raw)
To: u-boot
Hello Wenyou,
Am 10.12.2015 um 03:15 schrieb Yang, Wenyou:
> Hi Heiko,
>
>
>> -----Original Message-----
>> From: Heiko Schocher [mailto:hs at denx.de]
>> Sent: 2015?12?9? 18:01
>> To: Yang, Wenyou <Wenyou.Yang@atmel.com>
>> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; andreas.devel at googlemail.com
>> Subject: Re: [PATCH v2 0/5] ARM: at91: improve peripheral and system clock
>> handle functions
>>
>> Hello Wenyou,
>>
>> Am 09.12.2015 um 08:48 schrieb Wenyou Yang:
>>> To reduce the duplicated code, rework the peripheral's and system's
>>> clock handle functions, use these functions to replace the clock
>>> handle code.
>>>
>>> Changes in v2:
>>> - fix checkpatch warning.
>>>
>>> Wenyou Yang (5):
>>> ARM: at91: asm/at91_pmc.h: fix trival register offset
>>> ARM: at91: clock: add a new file to handle clock
>>> ARM: cpu: at91: clean up peripheral clock code
>>> board: atmel: clean up peripheral clock code
>>> drivers: at91: clean up peripheral clock code
>>>
>>> arch/arm/mach-at91/Makefile | 1 +
>>> arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 +---
>>> arch/arm/mach-at91/arm920t/timer.c | 4 +-
>>> arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++-------
>>> arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++------
>>> arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++-------
>>> .../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 +++------
>>> arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++--------
>>> arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++------
>>> arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++--------
>>> arch/arm/mach-at91/arm926ejs/clock.c | 7 --
>>> arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
>>> arch/arm/mach-at91/arm926ejs/timer.c | 5 +-
>>> arch/arm/mach-at91/armv7/clock.c | 26 -------
>>> arch/arm/mach-at91/armv7/cpu.c | 1 -
>>> arch/arm/mach-at91/armv7/timer.c | 1 -
>>> arch/arm/mach-at91/clock.c | 72 ++++++++++++++++++++
>>> arch/arm/mach-at91/include/mach/at91_pmc.h | 8 +--
>>> arch/arm/mach-at91/include/mach/clk.h | 2 +
>>> arch/arm/mach-at91/phy.c | 1 -
>>> arch/arm/mach-at91/sdram.c | 1 -
>>> board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
>>> board/atmel/at91rm9200ek/led.c | 5 +-
>>> board/atmel/at91sam9260ek/at91sam9260ek.c | 15 ++--
>>> board/atmel/at91sam9261ek/at91sam9261ek.c | 8 +--
>>> board/atmel/at91sam9261ek/led.c | 6 +-
>>> board/atmel/at91sam9263ek/at91sam9263ek.c | 23 ++-----
>>> board/atmel/at91sam9263ek/led.c | 9 +--
>>> board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 ++----
>>> board/atmel/at91sam9m10g45ek/led.c | 7 +-
>>> board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 +-
>>> board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++---
>>> board/atmel/at91sam9rlek/led.c | 7 +-
>>> board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +--
>>> board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
>>> board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 +-
>>> board/atmel/sama5d3xek/sama5d3xek.c | 5 +-
>>> board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 +-
>>> board/atmel/sama5d4ek/sama5d4ek.c | 5 +-
>>> board/bluewater/snapper9260/snapper9260.c | 15 ++--
>>> board/calao/usb_a9263/usb_a9263.c | 11 ++-
>>> board/egnite/ethernut5/ethernut5.c | 20 +++---
>>> board/esd/meesc/meesc.c | 15 ++--
>>> board/mini-box/picosam9g45/led.c | 7 +-
>>> board/mini-box/picosam9g45/picosam9g45.c | 17 ++---
>>> board/ronetix/pm9261/led.c | 7 +-
>>> board/ronetix/pm9261/pm9261.c | 22 ++----
>>> board/ronetix/pm9263/led.c | 7 +-
>>> board/ronetix/pm9263/pm9263.c | 19 ++----
>>> board/ronetix/pm9g45/pm9g45.c | 20 ++----
>>> board/siemens/corvus/board.c | 6 +-
>>> board/siemens/smartweb/smartweb.c | 3 +-
>>> board/siemens/taurus/taurus.c | 3 +-
>>> drivers/net/at91_emac.c | 9 ++-
>>> drivers/usb/host/ehci-atmel.c | 8 ---
>>> drivers/usb/host/ohci-at91.c | 20 ++----
>>> 56 files changed, 252 insertions(+), 496 deletions(-)
>>> create mode 100644 arch/arm/mach-at91/clock.c
>>
>> I applied all your patches (the v2 versions), but now tftp does not work anymore
>> on the smartweb board ...
>>
>> I try to find some time to get more details ...
>
> Sorry about it.
>
> It is my fault, incorrectly used the indicator & to achieve the address of variable of pmc->pcer and pmc->pcdr.
Ah, ok! Good catch, I see your v3 on the ML ... added them to my setup [1],
but I cannot try them yet, as my board (accurate ethernet) is broken ...
I must first reanimate it (no debugger connected to it yet ...)
> Thank you very much for your findings.
You are welcome. Currently all work is done automatically [2] ... I just
have to pass a list of patchworknumbers to my testsetup, and they get
automagically tested on the board ...
bye,
Heiko
[1] https://github.com/hsdenx/tbot/commit/9bdea9400c2ea9a521c679a83bfeb2879db841e8
[2] http://xeidos.ddns.net/buildbot/builders/smartweb_dfu/builds/28/steps/shell/logs/tbotlog
>
>>
>> bye,
>> Heiko
>> --
>> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>
>
> Best Regards,
> Wenyou Yang
>
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 10+ messages in thread
* [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions
2015-12-10 6:02 ` Heiko Schocher
@ 2015-12-10 6:07 ` Yang, Wenyou
0 siblings, 0 replies; 10+ messages in thread
From: Yang, Wenyou @ 2015-12-10 6:07 UTC (permalink / raw)
To: u-boot
Hi Heiko,
> -----Original Message-----
> From: Heiko Schocher [mailto:hs at denx.de]
> Sent: 2015?12?10? 14:02
> To: Yang, Wenyou <Wenyou.Yang@atmel.com>
> Cc: U-Boot Mailing List <u-boot@lists.denx.de>; andreas.devel at googlemail.com;
> Meier, Roger <r.meier@siemens.com>
> Subject: Re: [PATCH v2 0/5] ARM: at91: improve peripheral and system clock
> handle functions
>
> Hello Wenyou,
>
> Am 10.12.2015 um 03:15 schrieb Yang, Wenyou:
> > Hi Heiko,
> >
> >
> >> -----Original Message-----
> >> From: Heiko Schocher [mailto:hs at denx.de]
> >> Sent: 2015?12?9? 18:01
> >> To: Yang, Wenyou <Wenyou.Yang@atmel.com>
> >> Cc: U-Boot Mailing List <u-boot@lists.denx.de>;
> >> andreas.devel at googlemail.com
> >> Subject: Re: [PATCH v2 0/5] ARM: at91: improve peripheral and system
> >> clock handle functions
> >>
> >> Hello Wenyou,
> >>
> >> Am 09.12.2015 um 08:48 schrieb Wenyou Yang:
> >>> To reduce the duplicated code, rework the peripheral's and system's
> >>> clock handle functions, use these functions to replace the clock
> >>> handle code.
> >>>
> >>> Changes in v2:
> >>> - fix checkpatch warning.
> >>>
> >>> Wenyou Yang (5):
> >>> ARM: at91: asm/at91_pmc.h: fix trival register offset
> >>> ARM: at91: clock: add a new file to handle clock
> >>> ARM: cpu: at91: clean up peripheral clock code
> >>> board: atmel: clean up peripheral clock code
> >>> drivers: at91: clean up peripheral clock code
> >>>
> >>> arch/arm/mach-at91/Makefile | 1 +
> >>> arch/arm/mach-at91/arm920t/at91rm9200_devices.c | 13 +---
> >>> arch/arm/mach-at91/arm920t/timer.c | 4 +-
> >>> arch/arm/mach-at91/arm926ejs/at91sam9260_devices.c | 36 +++-------
> >>> arch/arm/mach-at91/arm926ejs/at91sam9261_devices.c | 28 ++------
> >>> arch/arm/mach-at91/arm926ejs/at91sam9263_devices.c | 37 +++-------
> >>> .../mach-at91/arm926ejs/at91sam9m10g45_devices.c | 33 +++------
> >>> arch/arm/mach-at91/arm926ejs/at91sam9n12_devices.c | 40 +++--------
> >>> arch/arm/mach-at91/arm926ejs/at91sam9rl_devices.c | 28 ++------
> >>> arch/arm/mach-at91/arm926ejs/at91sam9x5_devices.c | 38 +++--------
> >>> arch/arm/mach-at91/arm926ejs/clock.c | 7 --
> >>> arch/arm/mach-at91/arm926ejs/cpu.c | 1 -
> >>> arch/arm/mach-at91/arm926ejs/timer.c | 5 +-
> >>> arch/arm/mach-at91/armv7/clock.c | 26 -------
> >>> arch/arm/mach-at91/armv7/cpu.c | 1 -
> >>> arch/arm/mach-at91/armv7/timer.c | 1 -
> >>> arch/arm/mach-at91/clock.c | 72
> ++++++++++++++++++++
> >>> arch/arm/mach-at91/include/mach/at91_pmc.h | 8 +--
> >>> arch/arm/mach-at91/include/mach/clk.h | 2 +
> >>> arch/arm/mach-at91/phy.c | 1 -
> >>> arch/arm/mach-at91/sdram.c | 1 -
> >>> board/atmel/at91rm9200ek/at91rm9200ek.c | 1 -
> >>> board/atmel/at91rm9200ek/led.c | 5 +-
> >>> board/atmel/at91sam9260ek/at91sam9260ek.c | 15 ++--
> >>> board/atmel/at91sam9261ek/at91sam9261ek.c | 8 +--
> >>> board/atmel/at91sam9261ek/led.c | 6 +-
> >>> board/atmel/at91sam9263ek/at91sam9263ek.c | 23 ++-----
> >>> board/atmel/at91sam9263ek/led.c | 9 +--
> >>> board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 20 ++----
> >>> board/atmel/at91sam9m10g45ek/led.c | 7 +-
> >>> board/atmel/at91sam9n12ek/at91sam9n12ek.c | 6 +-
> >>> board/atmel/at91sam9rlek/at91sam9rlek.c | 18 ++---
> >>> board/atmel/at91sam9rlek/led.c | 7 +-
> >>> board/atmel/at91sam9x5ek/at91sam9x5ek.c | 10 +--
> >>> board/atmel/sama5d2_xplained/sama5d2_xplained.c | 1 -
> >>> board/atmel/sama5d3_xplained/sama5d3_xplained.c | 5 +-
> >>> board/atmel/sama5d3xek/sama5d3xek.c | 5 +-
> >>> board/atmel/sama5d4_xplained/sama5d4_xplained.c | 5 +-
> >>> board/atmel/sama5d4ek/sama5d4ek.c | 5 +-
> >>> board/bluewater/snapper9260/snapper9260.c | 15 ++--
> >>> board/calao/usb_a9263/usb_a9263.c | 11 ++-
> >>> board/egnite/ethernut5/ethernut5.c | 20 +++---
> >>> board/esd/meesc/meesc.c | 15 ++--
> >>> board/mini-box/picosam9g45/led.c | 7 +-
> >>> board/mini-box/picosam9g45/picosam9g45.c | 17 ++---
> >>> board/ronetix/pm9261/led.c | 7 +-
> >>> board/ronetix/pm9261/pm9261.c | 22 ++----
> >>> board/ronetix/pm9263/led.c | 7 +-
> >>> board/ronetix/pm9263/pm9263.c | 19 ++----
> >>> board/ronetix/pm9g45/pm9g45.c | 20 ++----
> >>> board/siemens/corvus/board.c | 6 +-
> >>> board/siemens/smartweb/smartweb.c | 3 +-
> >>> board/siemens/taurus/taurus.c | 3 +-
> >>> drivers/net/at91_emac.c | 9 ++-
> >>> drivers/usb/host/ehci-atmel.c | 8 ---
> >>> drivers/usb/host/ohci-at91.c | 20 ++----
> >>> 56 files changed, 252 insertions(+), 496 deletions(-)
> >>> create mode 100644 arch/arm/mach-at91/clock.c
> >>
> >> I applied all your patches (the v2 versions), but now tftp does not
> >> work anymore on the smartweb board ...
> >>
> >> I try to find some time to get more details ...
> >
> > Sorry about it.
> >
> > It is my fault, incorrectly used the indicator & to achieve the address of variable
> of pmc->pcer and pmc->pcdr.
>
> Ah, ok! Good catch, I see your v3 on the ML ... added them to my setup [1], but I
> cannot try them yet, as my board (accurate ethernet) is broken ...
> I must first reanimate it (no debugger connected to it yet ...)
>
> > Thank you very much for your findings.
>
> You are welcome. Currently all work is done automatically [2] ... I just have to
> pass a list of patchworknumbers to my testsetup, and they get automagically
> tested on the board ...
>
> bye,
> Heiko
> [1]
> https://github.com/hsdenx/tbot/commit/9bdea9400c2ea9a521c679a83bfeb2879db8
> 41e8
> [2]
> http://xeidos.ddns.net/buildbot/builders/smartweb_dfu/builds/28/steps/shell/logs/tb
> otlog
Great!
Thank you for sharing.
Best Regards,
Wenyou Yang
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-12-10 6:07 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-09 7:48 [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 1/5] ARM: at91: asm/at91_pmc.h: fix trival register offset Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 2/5] ARM: at91: clock: add a new file to handle clock Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 3/5] ARM: cpu: at91: clean up peripheral clock code Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 4/5] board: atmel: " Wenyou Yang
2015-12-09 7:48 ` [U-Boot] [PATCH v2 5/5] drivers: at91: " Wenyou Yang
2015-12-09 10:00 ` [U-Boot] [PATCH v2 0/5] ARM: at91: improve peripheral and system clock handle functions Heiko Schocher
2015-12-10 2:15 ` Yang, Wenyou
2015-12-10 6:02 ` Heiko Schocher
2015-12-10 6:07 ` Yang, Wenyou
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.