summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-11-05 14:08:43 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-11-06 09:39:22 +0100
commite08031d5796be2eb61e0fef50319cc58d184bb75 (patch)
tree0f2008c390af649f8e83f416c14d23f3bf24b2bd /arch
parentedd34f73a78300277237c1ebb276cb6e01081ad2 (diff)
downloadbarebox-e08031d5796be2eb61e0fef50319cc58d184bb75.tar.gz
barebox-e08031d5796be2eb61e0fef50319cc58d184bb75.tar.xz
ARM: at91: drop at91_pmc_write()/at91_pmc_read()
at91_pmc_write() and at91_pmc_read() need a compile time base address, so remove them. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-at91/clock.c21
-rw-r--r--arch/arm/mach-at91/include/mach/at91_pmc.h6
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam926x_board_init.h4
3 files changed, 24 insertions, 7 deletions
diff --git a/arch/arm/mach-at91/clock.c b/arch/arm/mach-at91/clock.c
index 1f2cfdc716..9d2e3a3acc 100644
--- a/arch/arm/mach-at91/clock.c
+++ b/arch/arm/mach-at91/clock.c
@@ -108,6 +108,18 @@
#define cpu_has_dual_matrix() (cpu_is_sama5d4())
+static void *pmc;
+
+static inline void at91_pmc_write(unsigned int offset, u32 val)
+{
+ writel(val, pmc + offset);
+}
+
+static inline u32 at91_pmc_read(unsigned int offset)
+{
+ return readl(pmc + offset);
+}
+
static LIST_HEAD(clocks);
static u32 at91_pllb_usb_init;
@@ -648,6 +660,15 @@ int at91_clock_init(void)
int i;
unsigned long main_clock;
+ if (cpu_is_sama5d4())
+ pmc = IOMEM(0xf0018000);
+ else
+ pmc = IOMEM(0xfffffc00); /*
+ * All other supported SoCs use this
+ * base address (new ones should use of
+ * clock support)
+ */
+
main_clock = at91_main_clock;
/*
diff --git a/arch/arm/mach-at91/include/mach/at91_pmc.h b/arch/arm/mach-at91/include/mach/at91_pmc.h
index d74c14011c..bbbd497afa 100644
--- a/arch/arm/mach-at91/include/mach/at91_pmc.h
+++ b/arch/arm/mach-at91/include/mach/at91_pmc.h
@@ -16,12 +16,6 @@
#ifndef AT91_PMC_H
#define AT91_PMC_H
-#define at91_pmc_read(field) \
- __raw_readl(AT91_PMC + field)
-
-#define at91_pmc_write(field, value) \
- __raw_writel(value, AT91_PMC + field)
-
#define AT91_PMC_SCER 0x00 /* System Clock Enable Register */
#define AT91_PMC_SCDR 0x04 /* System Clock Disable Register */
diff --git a/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h b/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h
index ee4dfa7187..36fb84b63c 100644
--- a/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h
+++ b/arch/arm/mach-at91/include/mach/at91sam926x_board_init.h
@@ -20,6 +20,8 @@
#include <mach/gpio.h>
#include <mach/at91sam926x.h>
+#define AT91SAM926X_BASE_PMC 0xfffffc00
+
struct at91sam926x_board_cfg {
/* SoC specific */
void __iomem *pio;
@@ -59,7 +61,7 @@ static void __always_inline pmc_check_mckrdy(void)
u32 r;
do {
- r = at91_pmc_read(AT91_PMC_SR);
+ r = readl(AT91SAM926X_BASE_PMC + AT91_PMC_SR);
} while (!(r & AT91_PMC_MCKRDY));
}