* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
@ 2019-09-10 8:37 Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
` (4 more replies)
0 siblings, 5 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-10 8:37 UTC (permalink / raw)
To: u-boot
This is 2nd version of patchset to convert reset, system and clock manager
drivers to use #define instead of struct.
Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
Patch 1 is new one, patch 2 to 4 have changes.
Main changes in this version are:
- Get base address from DT
- Change to use writel(), readl(), setbits_le32() and clrbits_le32().
- Add prefix to defines.
- Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
History:
v1: https://patchwork.ozlabs.org/cover/1149731/
Ley Foon Tan (4):
arm: dts: socfpga: Add u-boot,dm-pre-reloc for sysmgr and clkmgr nodes
arm: socfpga: Convert reset manager from struct to defines
arm: socfpga: Convert system manager from struct to defines
arm: socfpga: Convert clock manager from struct to defines
arch/arm/dts/socfpga-common-u-boot.dtsi | 8 +
arch/arm/dts/socfpga.dtsi | 2 +-
arch/arm/dts/socfpga_arria10.dtsi | 2 +-
arch/arm/dts/socfpga_arria10_socdk.dtsi | 8 +
arch/arm/dts/socfpga_stratix10.dtsi | 2 +-
.../dts/socfpga_stratix10_socdk-u-boot.dtsi | 8 +
arch/arm/mach-socfpga/clock_manager.c | 12 +-
arch/arm/mach-socfpga/clock_manager_arria10.c | 156 +++++++------
arch/arm/mach-socfpga/clock_manager_gen5.c | 199 +++++++++--------
arch/arm/mach-socfpga/clock_manager_s10.c | 210 ++++++++++--------
.../mach-socfpga/include/mach/clock_manager.h | 2 +
.../include/mach/clock_manager_arria10.h | 133 +++++------
.../include/mach/clock_manager_gen5.h | 112 ++++------
.../include/mach/clock_manager_s10.h | 115 ++++------
arch/arm/mach-socfpga/include/mach/misc.h | 1 +
.../mach-socfpga/include/mach/reset_manager.h | 2 +
.../include/mach/reset_manager_arria10.h | 43 +---
.../include/mach/reset_manager_gen5.h | 22 +-
.../include/mach/reset_manager_s10.h | 33 +--
.../include/mach/system_manager.h | 2 +
.../include/mach/system_manager_arria10.h | 94 +++-----
.../include/mach/system_manager_gen5.h | 123 ++--------
.../include/mach/system_manager_s10.h | 184 ++++++---------
arch/arm/mach-socfpga/mailbox_s10.c | 6 +-
arch/arm/mach-socfpga/misc.c | 42 ++++
arch/arm/mach-socfpga/misc_arria10.c | 9 +-
arch/arm/mach-socfpga/misc_gen5.c | 29 +--
arch/arm/mach-socfpga/misc_s10.c | 9 +-
arch/arm/mach-socfpga/reset_manager_arria10.c | 71 +++---
arch/arm/mach-socfpga/reset_manager_gen5.c | 35 ++-
arch/arm/mach-socfpga/reset_manager_s10.c | 52 +++--
arch/arm/mach-socfpga/scan_manager.c | 6 +-
arch/arm/mach-socfpga/spl_a10.c | 12 +-
arch/arm/mach-socfpga/spl_gen5.c | 23 +-
arch/arm/mach-socfpga/spl_s10.c | 24 +-
arch/arm/mach-socfpga/system_manager_gen5.c | 38 ++--
arch/arm/mach-socfpga/system_manager_s10.c | 39 ++--
arch/arm/mach-socfpga/wrap_pll_config_s10.c | 11 +-
drivers/ddr/altera/sdram_gen5.c | 10 +-
drivers/ddr/altera/sdram_s10.c | 6 +-
drivers/fpga/socfpga_arria10.c | 7 +-
drivers/fpga/socfpga_gen5.c | 4 +-
drivers/mmc/socfpga_dw_mmc.c | 17 +-
drivers/sysreset/sysreset_socfpga.c | 6 +-
44 files changed, 880 insertions(+), 1049 deletions(-)
--
2.19.0
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
@ 2019-09-10 8:38 ` Ley Foon Tan
2019-09-16 14:09 ` Dinh Nguyen
2019-10-02 9:18 ` Simon Goldschmidt
2019-09-10 8:38 ` [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines Ley Foon Tan
` (3 subsequent siblings)
4 siblings, 2 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-10 8:38 UTC (permalink / raw)
To: u-boot
Add u-boot,dm-pre-reloc for sysmgr and clkmgr nodes to use it in SPL.
In preparation to get base address from DT.
Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
arch/arm/dts/socfpga-common-u-boot.dtsi | 8 ++++++++
arch/arm/dts/socfpga.dtsi | 2 +-
arch/arm/dts/socfpga_arria10.dtsi | 2 +-
arch/arm/dts/socfpga_arria10_socdk.dtsi | 8 ++++++++
arch/arm/dts/socfpga_stratix10.dtsi | 2 +-
arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi | 8 ++++++++
6 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/arch/arm/dts/socfpga-common-u-boot.dtsi b/arch/arm/dts/socfpga-common-u-boot.dtsi
index 322c858c4b..d55460755f 100644
--- a/arch/arm/dts/socfpga-common-u-boot.dtsi
+++ b/arch/arm/dts/socfpga-common-u-boot.dtsi
@@ -10,6 +10,10 @@
};
};
+&clkmgr {
+ u-boot,dm-pre-reloc;
+};
+
&rst {
u-boot,dm-pre-reloc;
};
@@ -17,3 +21,7 @@
&sdr {
u-boot,dm-pre-reloc;
};
+
+&sysmgr {
+ u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi
index 51a6a51b53..eda558f2fe 100644
--- a/arch/arm/dts/socfpga.dtsi
+++ b/arch/arm/dts/socfpga.dtsi
@@ -114,7 +114,7 @@
status = "disabled";
};
- clkmgr at ffd04000 {
+ clkmgr: clkmgr at ffd04000 {
compatible = "altr,clk-mgr";
reg = <0xffd04000 0x1000>;
diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi
index c11a5c0cc1..cc529bcd11 100644
--- a/arch/arm/dts/socfpga_arria10.dtsi
+++ b/arch/arm/dts/socfpga_arria10.dtsi
@@ -96,7 +96,7 @@
fpga-mgr = <&fpga_mgr>;
};
- clkmgr at ffd04000 {
+ clkmgr: clkmgr at ffd04000 {
compatible = "altr,clk-mgr";
reg = <0xffd04000 0x1000>;
u-boot,dm-pre-reloc;
diff --git a/arch/arm/dts/socfpga_arria10_socdk.dtsi b/arch/arm/dts/socfpga_arria10_socdk.dtsi
index 6e5578d7bd..ef10708ee8 100644
--- a/arch/arm/dts/socfpga_arria10_socdk.dtsi
+++ b/arch/arm/dts/socfpga_arria10_socdk.dtsi
@@ -180,3 +180,11 @@
&l4_sp_clk {
u-boot,dm-pre-reloc;
};
+
+&clkmgr {
+ u-boot,dm-pre-reloc;
+};
+
+&sysmgr {
+ u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/socfpga_stratix10.dtsi b/arch/arm/dts/socfpga_stratix10.dtsi
index bd68a78a37..91f4e27ef5 100755
--- a/arch/arm/dts/socfpga_stratix10.dtsi
+++ b/arch/arm/dts/socfpga_stratix10.dtsi
@@ -82,7 +82,7 @@
ranges = <0 0 0 0xffffffff>;
u-boot,dm-pre-reloc;
- clkmgr at ffd1000 {
+ clkmgr: clkmgr at ffd1000 {
compatible = "altr,clk-mgr";
reg = <0xffd10000 0x1000>;
};
diff --git a/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi b/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
index e1cfb522bf..38855aecd7 100755
--- a/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
+++ b/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
@@ -11,6 +11,10 @@
};
};
+&clkmgr {
+ u-boot,dm-pre-reloc;
+};
+
&qspi {
status = "okay";
u-boot,dm-pre-reloc;
@@ -23,3 +27,7 @@
spi-rx-bus-width = <4>;
u-boot,dm-pre-reloc;
};
+
+&sysmgr {
+ u-boot,dm-pre-reloc;
+};
--
2.19.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
@ 2019-09-10 8:38 ` Ley Foon Tan
2019-10-02 9:20 ` Simon Goldschmidt
2019-09-10 8:38 ` [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system " Ley Foon Tan
` (2 subsequent siblings)
4 siblings, 1 reply; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-10 8:38 UTC (permalink / raw)
To: u-boot
Convert reset manager for Gen5, Arria 10 and Stratix 10 from struct
to defines.
No functional change.
Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
v2:
- Get base address from DT
- Change to use writel(), readl(), setbits_le32() and clrbits_le32().
- Add prefix to defines.
---
arch/arm/mach-socfpga/include/mach/misc.h | 1 +
.../mach-socfpga/include/mach/reset_manager.h | 2 +
.../include/mach/reset_manager_arria10.h | 43 ++++-------------
.../include/mach/reset_manager_gen5.h | 22 ++++-----
.../include/mach/reset_manager_s10.h | 33 ++-----------
arch/arm/mach-socfpga/misc.c | 32 +++++++++++++
arch/arm/mach-socfpga/misc_gen5.c | 7 ++-
arch/arm/mach-socfpga/reset_manager_arria10.c | 47 ++++++++++---------
arch/arm/mach-socfpga/reset_manager_gen5.c | 28 +++++------
arch/arm/mach-socfpga/reset_manager_s10.c | 34 +++++++-------
arch/arm/mach-socfpga/spl_a10.c | 7 ++-
arch/arm/mach-socfpga/spl_gen5.c | 12 ++---
arch/arm/mach-socfpga/spl_s10.c | 12 +++--
drivers/sysreset/sysreset_socfpga.c | 6 +--
14 files changed, 137 insertions(+), 149 deletions(-)
diff --git a/arch/arm/mach-socfpga/include/mach/misc.h b/arch/arm/mach-socfpga/include/mach/misc.h
index 27d0b6a370..a29b049742 100644
--- a/arch/arm/mach-socfpga/include/mach/misc.h
+++ b/arch/arm/mach-socfpga/include/mach/misc.h
@@ -41,5 +41,6 @@ void socfpga_sdram_remap_zero(void);
void do_bridge_reset(int enable, unsigned int mask);
void socfpga_pl310_clear(void);
+void socfpga_get_manager_addr(void);
#endif /* _MISC_H_ */
diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager.h b/arch/arm/mach-socfpga/include/mach/reset_manager.h
index 6ad037e325..a5b6931350 100644
--- a/arch/arm/mach-socfpga/include/mach/reset_manager.h
+++ b/arch/arm/mach-socfpga/include/mach/reset_manager.h
@@ -6,6 +6,8 @@
#ifndef _RESET_MANAGER_H_
#define _RESET_MANAGER_H_
+extern phys_addr_t socfpga_rstmgr_base;
+
void reset_cpu(ulong addr);
void socfpga_per_reset(u32 reset, int set);
diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
index 6623ebee65..41169aa677 100644
--- a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
+++ b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
@@ -14,40 +14,15 @@ int socfpga_reset_deassert_bridges_handoff(void);
void socfpga_reset_deassert_osc1wd0(void);
int socfpga_bridges_reset(void);
-struct socfpga_reset_manager {
- u32 stat;
- u32 ramstat;
- u32 miscstat;
- u32 ctrl;
- u32 hdsken;
- u32 hdskreq;
- u32 hdskack;
- u32 counts;
- u32 mpumodrst;
- u32 per0modrst;
- u32 per1modrst;
- u32 brgmodrst;
- u32 sysmodrst;
- u32 coldmodrst;
- u32 nrstmodrst;
- u32 dbgmodrst;
- u32 mpuwarmmask;
- u32 per0warmmask;
- u32 per1warmmask;
- u32 brgwarmmask;
- u32 syswarmmask;
- u32 nrstwarmmask;
- u32 l3warmmask;
- u32 tststa;
- u32 tstscratch;
- u32 hdsktimeout;
- u32 hmcintr;
- u32 hmcintren;
- u32 hmcintrens;
- u32 hmcintrenr;
- u32 hmcgpout;
- u32 hmcgpin;
-};
+#define RSTMGR_A10_STATUS 0
+#define RSTMGR_A10_CTRL 0xc
+#define RSTMGR_A10_MPUMODRST 0x20
+#define RSTMGR_A10_PER0MODRST 0x24
+#define RSTMGR_A10_PER1MODRST 0x28
+#define RSTMGR_A10_BRGMODRST 0x2c
+#define RSTMGR_A10_SYSMODRST 0x30
+
+#define RSTMGR_CTRL RSTMGR_A10_CTRL
/*
* SocFPGA Arria10 reset IDs, bank mapping is as follows:
diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
index f4dcb14623..e51ebfd08f 100644
--- a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
+++ b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
@@ -11,19 +11,15 @@
void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h);
void socfpga_bridges_reset(int enable);
-struct socfpga_reset_manager {
- u32 status;
- u32 ctrl;
- u32 counts;
- u32 padding1;
- u32 mpu_mod_reset;
- u32 per_mod_reset;
- u32 per2_mod_reset;
- u32 brg_mod_reset;
- u32 misc_mod_reset;
- u32 padding2[12];
- u32 tstscratch;
-};
+#define RSTMGR_GEN5_STATUS 0
+#define RSTMGR_GEN5_CTRL 4
+#define RSTMGR_GEN5_MPUMODRST 0x10
+#define RSTMGR_GEN5_PERMODRST 0x14
+#define RSTMGR_GEN5_PER2MODRST 0x18
+#define RSTMGR_GEN5_BRGMODRST 0x1c
+#define RSTMGR_GEN5_MISCMODRST 0x20
+
+#define RSTMGR_CTRL RSTMGR_GEN5_CTRL
/*
* SocFPGA Cyclone V/Arria V reset IDs, bank mapping is as follows:
diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
index 452147b017..b602129656 100644
--- a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
+++ b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
@@ -15,34 +15,11 @@ void socfpga_bridges_reset(int enable);
void socfpga_per_reset(u32 reset, int set);
void socfpga_per_reset_all(void);
-struct socfpga_reset_manager {
- u32 status;
- u32 mpu_rst_stat;
- u32 misc_stat;
- u32 padding1;
- u32 hdsk_en;
- u32 hdsk_req;
- u32 hdsk_ack;
- u32 hdsk_stall;
- u32 mpumodrst;
- u32 per0modrst;
- u32 per1modrst;
- u32 brgmodrst;
- u32 padding2;
- u32 cold_mod_reset;
- u32 padding3;
- u32 dbg_mod_reset;
- u32 tap_mod_reset;
- u32 padding4;
- u32 padding5;
- u32 brg_warm_mask;
- u32 padding6[3];
- u32 tst_stat;
- u32 padding7;
- u32 hdsk_timeout;
- u32 mpul2flushtimeout;
- u32 dbghdsktimeout;
-};
+#define RSTMGR_S10_STATUS 0
+#define RSTMGR_S10_MPUMODRST 0x20
+#define RSTMGR_S10_PER0MODRST 0x24
+#define RSTMGR_S10_PER1MODRST 0x28
+#define RSTMGR_S10_BRGMODRST 0x2c
#define RSTMGR_MPUMODRST_CORE0 0
#define RSTMGR_PER0MODRST_OCP_MASK 0x0020bf00
diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
index 49dadd4c3d..901c432f82 100644
--- a/arch/arm/mach-socfpga/misc.c
+++ b/arch/arm/mach-socfpga/misc.c
@@ -22,6 +22,8 @@
DECLARE_GLOBAL_DATA_PTR;
+phys_addr_t socfpga_rstmgr_base __section(".data");
+
#ifdef CONFIG_SYS_L2_PL310
static const struct pl310_regs *const pl310 =
(struct pl310_regs *)CONFIG_SYS_PL310_BASE;
@@ -145,6 +147,8 @@ void socfpga_fpga_add(void *fpga_desc)
int arch_cpu_init(void)
{
+ socfpga_get_manager_addr();
+
#ifdef CONFIG_HW_WATCHDOG
/*
* In case the watchdog is enabled, make sure to (re-)configure it
@@ -202,3 +206,31 @@ U_BOOT_CMD(bridge, 3, 1, do_bridge,
);
#endif
+
+static phys_addr_t socfpga_get_base_addr(const char *compat)
+{
+ const void *blob = gd->fdt_blob;
+ struct fdt_resource r;
+ int node;
+ int ret;
+
+ node = fdt_node_offset_by_compatible(blob, -1, compat);
+ if (node < 0)
+ return 0;
+
+ if (!fdtdec_get_is_enabled(blob, node))
+ return 0;
+
+ ret = fdt_get_resource(blob, node, "reg", 0, &r);
+ if (ret)
+ return 0;
+
+ return (phys_addr_t)r.start;
+}
+
+void socfpga_get_manager_addr(void)
+{
+ socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
+ if (!socfpga_rstmgr_base)
+ hang();
+}
diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
index 31681b799d..b39a66562d 100644
--- a/arch/arm/mach-socfpga/misc_gen5.c
+++ b/arch/arm/mach-socfpga/misc_gen5.c
@@ -206,8 +206,6 @@ int arch_early_init_r(void)
}
#ifndef CONFIG_SPL_BUILD
-static struct socfpga_reset_manager *reset_manager_base =
- (struct socfpga_reset_manager *)SOCFPGA_RSTMGR_ADDRESS;
static struct socfpga_sdr_ctrl *sdr_ctrl =
(struct socfpga_sdr_ctrl *)SDR_CTRLGRP_ADDRESS;
@@ -226,12 +224,13 @@ void do_bridge_reset(int enable, unsigned int mask)
writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
- writel(iswgrp_handoff[0], &reset_manager_base->brg_mod_reset);
+ writel(iswgrp_handoff[0],
+ socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
writel(iswgrp_handoff[1], &nic301_regs->remap);
} else {
writel(0, &sysmgr_regs->fpgaintfgrp_module);
writel(0, &sdr_ctrl->fpgaport_rst);
- writel(0, &reset_manager_base->brg_mod_reset);
+ writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
writel(1, &nic301_regs->remap);
}
}
diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
index 471a3045af..4553653992 100644
--- a/arch/arm/mach-socfpga/reset_manager_arria10.c
+++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
@@ -15,8 +15,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_reset_manager *reset_manager_base =
- (void *)SOCFPGA_RSTMGR_ADDRESS;
static const struct socfpga_system_manager *sysmgr_regs =
(struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
@@ -63,14 +61,14 @@ static const struct bridge_cfg bridge_cfg_tbl[] = {
void socfpga_watchdog_disable(void)
{
/* assert reset for watchdog */
- setbits_le32(&reset_manager_base->per1modrst,
+ setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
}
/* Release NOC ddr scheduler from reset */
void socfpga_reset_deassert_noc_ddr_scheduler(void)
{
- clrbits_le32(&reset_manager_base->brgmodrst,
+ clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
ALT_RSTMGR_BRGMODRST_DDRSCH_SET_MSK);
}
@@ -103,7 +101,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
/* Release bridges from reset state per handoff value */
- clrbits_le32(&reset_manager_base->brgmodrst, mask_rstmgr);
+ clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
/* Poll until all idleack to 0, timeout at 1000ms */
return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
@@ -113,7 +111,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
/* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
void socfpga_reset_deassert_osc1wd0(void)
{
- clrbits_le32(&reset_manager_base->per1modrst,
+ clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
}
@@ -122,24 +120,24 @@ void socfpga_reset_deassert_osc1wd0(void)
*/
void socfpga_per_reset(u32 reset, int set)
{
- const u32 *reg;
+ unsigned long reg;
u32 rstmgr_bank = RSTMGR_BANK(reset);
switch (rstmgr_bank) {
case 0:
- reg = &reset_manager_base->mpumodrst;
+ reg = RSTMGR_A10_MPUMODRST;
break;
case 1:
- reg = &reset_manager_base->per0modrst;
+ reg = RSTMGR_A10_PER0MODRST;
break;
case 2:
- reg = &reset_manager_base->per1modrst;
+ reg = RSTMGR_A10_PER1MODRST;
break;
case 3:
- reg = &reset_manager_base->brgmodrst;
+ reg = RSTMGR_A10_BRGMODRST;
break;
case 4:
- reg = &reset_manager_base->sysmodrst;
+ reg = RSTMGR_A10_SYSMODRST;
break;
default:
@@ -147,9 +145,11 @@ void socfpga_per_reset(u32 reset, int set)
}
if (set)
- setbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ setbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
else
- clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ clrbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
}
/*
@@ -174,11 +174,12 @@ void socfpga_per_reset_all(void)
ALT_RSTMGR_PER0MODRST_SDMMCECC_SET_MSK;
/* disable all components except ECC_OCP, L4 Timer0 and L4 WD0 */
- writel(~l4wd0, &reset_manager_base->per1modrst);
- setbits_le32(&reset_manager_base->per0modrst, ~mask_ecc_ocp);
+ writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST);
+ setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST,
+ ~mask_ecc_ocp);
/* Finally disable the ECC_OCP */
- setbits_le32(&reset_manager_base->per0modrst, mask_ecc_ocp);
+ setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST, mask_ecc_ocp);
}
int socfpga_bridges_reset(void)
@@ -224,13 +225,13 @@ int socfpga_bridges_reset(void)
return ret;
/* Put all bridges (except NOR DDR scheduler) into reset state */
- setbits_le32(&reset_manager_base->brgmodrst,
+ setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
(ALT_RSTMGR_BRGMODRST_H2F_SET_MSK |
- ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
- ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
- ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
- ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
- ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
+ ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
+ ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
+ ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
+ ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
+ ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
/* Disable NOC timeout */
writel(0, &sysmgr_regs->noc_timeout);
diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
index 9a32f5abfe..ad31214711 100644
--- a/arch/arm/mach-socfpga/reset_manager_gen5.c
+++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
@@ -10,32 +10,30 @@
#include <asm/arch/reset_manager.h>
#include <asm/arch/system_manager.h>
-static const struct socfpga_reset_manager *reset_manager_base =
- (void *)SOCFPGA_RSTMGR_ADDRESS;
static const struct socfpga_system_manager *sysmgr_regs =
(struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
/* Assert or de-assert SoCFPGA reset manager reset. */
void socfpga_per_reset(u32 reset, int set)
{
- const u32 *reg;
+ unsigned long reg;
u32 rstmgr_bank = RSTMGR_BANK(reset);
switch (rstmgr_bank) {
case 0:
- reg = &reset_manager_base->mpu_mod_reset;
+ reg = RSTMGR_GEN5_MPUMODRST;
break;
case 1:
- reg = &reset_manager_base->per_mod_reset;
+ reg = RSTMGR_GEN5_PERMODRST;
break;
case 2:
- reg = &reset_manager_base->per2_mod_reset;
+ reg = RSTMGR_GEN5_PER2MODRST;
break;
case 3:
- reg = &reset_manager_base->brg_mod_reset;
+ reg = RSTMGR_GEN5_BRGMODRST;
break;
case 4:
- reg = &reset_manager_base->misc_mod_reset;
+ reg = RSTMGR_GEN5_MISCMODRST;
break;
default:
@@ -43,9 +41,11 @@ void socfpga_per_reset(u32 reset, int set)
}
if (set)
- setbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ setbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
else
- clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ clrbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
}
/*
@@ -57,8 +57,8 @@ void socfpga_per_reset_all(void)
{
const u32 l4wd0 = 1 << RSTMGR_RESET(SOCFPGA_RESET(L4WD0));
- writel(~l4wd0, &reset_manager_base->per_mod_reset);
- writel(0xffffffff, &reset_manager_base->per2_mod_reset);
+ writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_GEN5_PERMODRST);
+ writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_GEN5_PER2MODRST);
}
#define L3REGS_REMAP_LWHPS2FPGA_MASK 0x10
@@ -95,7 +95,7 @@ void socfpga_bridges_reset(int enable)
if (enable) {
/* brdmodrst */
- writel(0x7, &reset_manager_base->brg_mod_reset);
+ writel(0x7, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
writel(L3REGS_REMAP_OCRAM_MASK, SOCFPGA_L3REGS_ADDRESS);
} else {
socfpga_bridges_set_handoff_regs(false, false, false);
@@ -109,7 +109,7 @@ void socfpga_bridges_reset(int enable)
}
/* brdmodrst */
- writel(0, &reset_manager_base->brg_mod_reset);
+ writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
/* Remap the bridges into memory map */
writel(l3mask, SOCFPGA_L3REGS_ADDRESS);
diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
index 499a84aff5..b196d58d3d 100644
--- a/arch/arm/mach-socfpga/reset_manager_s10.c
+++ b/arch/arm/mach-socfpga/reset_manager_s10.c
@@ -12,31 +12,31 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_reset_manager *reset_manager_base =
- (void *)SOCFPGA_RSTMGR_ADDRESS;
static const struct socfpga_system_manager *system_manager_base =
(void *)SOCFPGA_SYSMGR_ADDRESS;
/* Assert or de-assert SoCFPGA reset manager reset. */
void socfpga_per_reset(u32 reset, int set)
{
- const void *reg;
+ unsigned long reg;
if (RSTMGR_BANK(reset) == 0)
- reg = &reset_manager_base->mpumodrst;
+ reg = RSTMGR_S10_MPUMODRST;
else if (RSTMGR_BANK(reset) == 1)
- reg = &reset_manager_base->per0modrst;
+ reg = RSTMGR_S10_PER0MODRST;
else if (RSTMGR_BANK(reset) == 2)
- reg = &reset_manager_base->per1modrst;
+ reg = RSTMGR_S10_PER1MODRST;
else if (RSTMGR_BANK(reset) == 3)
- reg = &reset_manager_base->brgmodrst;
+ reg = RSTMGR_S10_BRGMODRST;
else /* Invalid reset register, do nothing */
return;
if (set)
- setbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ setbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
else
- clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
+ clrbits_le32(socfpga_rstmgr_base + reg,
+ 1 << RSTMGR_RESET(reset));
}
/*
@@ -50,9 +50,9 @@ void socfpga_per_reset_all(void)
/* disable all except OCP and l4wd0. OCP disable later */
writel(~(l4wd0 | RSTMGR_PER0MODRST_OCP_MASK),
- &reset_manager_base->per0modrst);
- writel(~l4wd0, &reset_manager_base->per0modrst);
- writel(0xffffffff, &reset_manager_base->per1modrst);
+ socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
+ writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
+ writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_S10_PER1MODRST);
}
void socfpga_bridges_reset(int enable)
@@ -62,7 +62,7 @@ void socfpga_bridges_reset(int enable)
setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
/* Release all bridges from reset state */
- clrbits_le32(&reset_manager_base->brgmodrst, ~0);
+ clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
/* Poll until all idleack to 0 */
while (readl(&system_manager_base->noc_idleack))
@@ -85,9 +85,9 @@ void socfpga_bridges_reset(int enable)
;
/* Reset all bridges (except NOR DDR scheduler & F2S) */
- setbits_le32(&reset_manager_base->brgmodrst,
+ setbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST,
~(RSTMGR_BRGMODRST_DDRSCH_MASK |
- RSTMGR_BRGMODRST_FPGA2SOC_MASK));
+ RSTMGR_BRGMODRST_FPGA2SOC_MASK));
/* Disable NOC timeout */
writel(0, &system_manager_base->noc_timeout);
@@ -99,6 +99,6 @@ void socfpga_bridges_reset(int enable)
*/
int cpu_has_been_warmreset(void)
{
- return readl(&reset_manager_base->status) &
- RSTMGR_L4WD_MPU_WARMRESET_MASK;
+ return readl(socfpga_rstmgr_base + RSTMGR_S10_STATUS) &
+ RSTMGR_L4WD_MPU_WARMRESET_MASK;
}
diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
index b820cb0673..a0d80fd47e 100644
--- a/arch/arm/mach-socfpga/spl_a10.c
+++ b/arch/arm/mach-socfpga/spl_a10.c
@@ -106,6 +106,11 @@ void spl_board_init(void)
void board_init_f(ulong dummy)
{
+ if (spl_early_init())
+ hang();
+
+ socfpga_get_manager_addr();
+
dcache_disable();
socfpga_init_security_policies();
@@ -116,8 +121,6 @@ void board_init_f(ulong dummy)
socfpga_per_reset_all();
socfpga_watchdog_disable();
- spl_early_init();
-
/* Configure the clock based on handoff */
cm_basic_init(gd->fdt_blob);
diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
index 47e63709ad..9ee053da3a 100644
--- a/arch/arm/mach-socfpga/spl_gen5.c
+++ b/arch/arm/mach-socfpga/spl_gen5.c
@@ -67,6 +67,12 @@ void board_init_f(ulong dummy)
int ret;
struct udevice *dev;
+ ret = spl_early_init();
+ if (ret)
+ hang();
+
+ socfpga_get_manager_addr();
+
/*
* First C code to run. Clear fake OCRAM ECC first as SBE
* and DBE might triggered during power on
@@ -128,12 +134,6 @@ void board_init_f(ulong dummy)
debug_uart_init();
#endif
- ret = spl_early_init();
- if (ret) {
- debug("spl_early_init() failed: %d\n", ret);
- hang();
- }
-
ret = uclass_get_device(UCLASS_RESET, 0, &dev);
if (ret)
debug("Reset init failed: %d\n", ret);
diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
index ec65e1ce64..9a97a84e1e 100644
--- a/arch/arm/mach-socfpga/spl_s10.c
+++ b/arch/arm/mach-socfpga/spl_s10.c
@@ -14,6 +14,7 @@
#include <asm/arch/clock_manager.h>
#include <asm/arch/firewall_s10.h>
#include <asm/arch/mailbox_s10.h>
+#include <asm/arch/misc.h>
#include <asm/arch/reset_manager.h>
#include <asm/arch/system_manager.h>
#include <watchdog.h>
@@ -120,6 +121,12 @@ void board_init_f(ulong dummy)
const struct cm_config *cm_default_cfg = cm_get_default_config();
int ret;
+ ret = spl_early_init();
+ if (ret)
+ hang();
+
+ socfpga_get_manager_addr();
+
#ifdef CONFIG_HW_WATCHDOG
/* Ensure watchdog is paused when debugging is happening */
writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
@@ -145,11 +152,6 @@ void board_init_f(ulong dummy)
socfpga_per_reset(SOCFPGA_RESET(UART0), 0);
debug_uart_init();
#endif
- ret = spl_early_init();
- if (ret) {
- debug("spl_early_init() failed: %d\n", ret);
- hang();
- }
preloader_console_init();
cm_print_clock_quick_summary();
diff --git a/drivers/sysreset/sysreset_socfpga.c b/drivers/sysreset/sysreset_socfpga.c
index d6c26a5b23..3390b7bdc2 100644
--- a/drivers/sysreset/sysreset_socfpga.c
+++ b/drivers/sysreset/sysreset_socfpga.c
@@ -12,7 +12,7 @@
#include <asm/arch/reset_manager.h>
struct socfpga_sysreset_data {
- struct socfpga_reset_manager *rstmgr_base;
+ void __iomem *rstmgr_base;
};
static int socfpga_sysreset_request(struct udevice *dev,
@@ -23,11 +23,11 @@ static int socfpga_sysreset_request(struct udevice *dev,
switch (type) {
case SYSRESET_WARM:
writel(BIT(RSTMGR_CTRL_SWWARMRSTREQ_LSB),
- &data->rstmgr_base->ctrl);
+ data->rstmgr_base + RSTMGR_CTRL);
break;
case SYSRESET_COLD:
writel(BIT(RSTMGR_CTRL_SWCOLDRSTREQ_LSB),
- &data->rstmgr_base->ctrl);
+ data->rstmgr_base + RSTMGR_CTRL);
break;
default:
return -EPROTONOSUPPORT;
--
2.19.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system manager from struct to defines
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines Ley Foon Tan
@ 2019-09-10 8:38 ` Ley Foon Tan
2019-10-02 9:20 ` Simon Goldschmidt
2019-09-10 8:38 ` [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock " Ley Foon Tan
2019-09-17 22:33 ` [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers " Dinh Nguyen
4 siblings, 1 reply; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-10 8:38 UTC (permalink / raw)
To: u-boot
Convert system manager for Gen5, Arria 10 and Stratix 10 from struct
to defines.
No functional change.
Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
v2:
- Change to use writel(), readl() and etc.
- Get base address from DT.
- Add prefix to defines.
---
arch/arm/mach-socfpga/clock_manager_s10.c | 4 +-
.../include/mach/system_manager.h | 2 +
.../include/mach/system_manager_arria10.h | 94 +++------
.../include/mach/system_manager_gen5.h | 123 +++---------
.../include/mach/system_manager_s10.h | 184 +++++++-----------
arch/arm/mach-socfpga/mailbox_s10.c | 6 +-
arch/arm/mach-socfpga/misc.c | 5 +
arch/arm/mach-socfpga/misc_arria10.c | 9 +-
arch/arm/mach-socfpga/misc_gen5.c | 22 ++-
arch/arm/mach-socfpga/misc_s10.c | 9 +-
arch/arm/mach-socfpga/reset_manager_arria10.c | 24 +--
arch/arm/mach-socfpga/reset_manager_gen5.c | 7 +-
arch/arm/mach-socfpga/reset_manager_s10.c | 18 +-
arch/arm/mach-socfpga/scan_manager.c | 6 +-
arch/arm/mach-socfpga/spl_a10.c | 5 +-
arch/arm/mach-socfpga/spl_gen5.c | 11 +-
arch/arm/mach-socfpga/spl_s10.c | 12 +-
arch/arm/mach-socfpga/system_manager_gen5.c | 38 ++--
arch/arm/mach-socfpga/system_manager_s10.c | 39 ++--
arch/arm/mach-socfpga/wrap_pll_config_s10.c | 11 +-
drivers/ddr/altera/sdram_gen5.c | 10 +-
drivers/ddr/altera/sdram_s10.c | 6 +-
drivers/fpga/socfpga_arria10.c | 7 +-
drivers/fpga/socfpga_gen5.c | 4 +-
drivers/mmc/socfpga_dw_mmc.c | 6 +-
25 files changed, 240 insertions(+), 422 deletions(-)
diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
index 3ba2a00c02..6cbf07ac6f 100644
--- a/arch/arm/mach-socfpga/clock_manager_s10.c
+++ b/arch/arm/mach-socfpga/clock_manager_s10.c
@@ -14,8 +14,6 @@ DECLARE_GLOBAL_DATA_PTR;
static const struct socfpga_clock_manager *clock_manager_base =
(struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
/*
* function to write the bypass register which requires a poll of the
@@ -351,7 +349,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
unsigned int cm_get_qspi_controller_clk_hz(void)
{
- return readl(&sysmgr_regs->boot_scratch_cold0);
+ return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
}
unsigned int cm_get_spi_controller_clk_hz(void)
diff --git a/arch/arm/mach-socfpga/include/mach/system_manager.h b/arch/arm/mach-socfpga/include/mach/system_manager.h
index 7e76df74b7..803305eb35 100644
--- a/arch/arm/mach-socfpga/include/mach/system_manager.h
+++ b/arch/arm/mach-socfpga/include/mach/system_manager.h
@@ -6,6 +6,8 @@
#ifndef _SYSTEM_MANAGER_H_
#define _SYSTEM_MANAGER_H_
+extern phys_addr_t socfpga_sysmgr_base;
+
#if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
#include <asm/arch/system_manager_s10.h>
#else
diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
index 14052b957c..1a45c0f134 100644
--- a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
+++ b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
@@ -6,73 +6,33 @@
#ifndef _SYSTEM_MANAGER_ARRIA10_H_
#define _SYSTEM_MANAGER_ARRIA10_H_
-struct socfpga_system_manager {
- u32 siliconid1;
- u32 siliconid2;
- u32 wddbg;
- u32 bootinfo;
- u32 mpu_ctrl_l2_ecc;
- u32 _pad_0x14_0x1f[3];
- u32 dma;
- u32 dma_periph;
- u32 sdmmcgrp_ctrl;
- u32 sdmmc_l3master;
- u32 nand_bootstrap;
- u32 nand_l3master;
- u32 usb0_l3master;
- u32 usb1_l3master;
- u32 emac_global;
- u32 emac[3];
- u32 _pad_0x50_0x5f[4];
- u32 fpgaintf_en_global;
- u32 fpgaintf_en_0;
- u32 fpgaintf_en_1;
- u32 fpgaintf_en_2;
- u32 fpgaintf_en_3;
- u32 _pad_0x74_0x7f[3];
- u32 noc_addr_remap_value;
- u32 noc_addr_remap_set;
- u32 noc_addr_remap_clear;
- u32 _pad_0x8c_0x8f;
- u32 ecc_intmask_value;
- u32 ecc_intmask_set;
- u32 ecc_intmask_clr;
- u32 ecc_intstatus_serr;
- u32 ecc_intstatus_derr;
- u32 mpu_status_l2_ecc;
- u32 mpu_clear_l2_ecc;
- u32 mpu_status_l1_parity;
- u32 mpu_clear_l1_parity;
- u32 mpu_set_l1_parity;
- u32 _pad_0xb8_0xbf[2];
- u32 noc_timeout;
- u32 noc_idlereq_set;
- u32 noc_idlereq_clr;
- u32 noc_idlereq_value;
- u32 noc_idleack;
- u32 noc_idlestatus;
- u32 fpga2soc_ctrl;
- u32 _pad_0xdc_0xff[9];
- u32 tsmc_tsel_0;
- u32 tsmc_tsel_1;
- u32 tsmc_tsel_2;
- u32 tsmc_tsel_3;
- u32 _pad_0x110_0x200[60];
- u32 romhw_ctrl;
- u32 romcode_ctrl;
- u32 romcode_cpu1startaddr;
- u32 romcode_initswstate;
- u32 romcode_initswlastld;
- u32 _pad_0x214_0x217;
- u32 warmram_enable;
- u32 warmram_datastart;
- u32 warmram_length;
- u32 warmram_execution;
- u32 warmram_crc;
- u32 _pad_0x22c_0x22f;
- u32 isw_handoff[8];
- u32 romcode_bootromswstate[8];
-};
+#define SYSMGR_A10_WDDBG 0x8
+#define SYSMGR_A10_BOOTINFO 0xc
+#define SYSMGR_A10_DMA 0x20
+#define SYSMGR_A10_DMA_PERIPH 0x24
+#define SYSMGR_A10_SDMMC 0x28
+#define SYSMGR_A10_SDMMC_L3MASTER 0x2c
+#define SYSMGR_A10_EMAC_GLOBAL 0x40
+#define SYSMGR_A10_EMAC0 0x44
+#define SYSMGR_A10_EMAC1 0x48
+#define SYSMGR_A10_EMAC2 0x4c
+#define SYSMGR_A10_FPGAINTF_EN_GLOBAL 0x60
+#define SYSMGR_A10_FPGAINTF_EN0 0x64
+#define SYSMGR_A10_FPGAINTF_EN1 0x68
+#define SYSMGR_A10_FPGAINTF_EN2 0x6c
+#define SYSMGR_A10_FPGAINTF_EN3 0x70
+#define SYSMGR_A10_ECC_INTMASK_VAL 0x90
+#define SYSMGR_A10_ECC_INTMASK_SET 0x94
+#define SYSMGR_A10_ECC_INTMASK_CLR 0x98
+#define SYSMGR_A10_NOC_TIMEOUT 0xc0
+#define SYSMGR_A10_NOC_IDLEREQ_SET 0xc4
+#define SYSMGR_A10_NOC_IDLEREQ_CLR 0xc8
+#define SYSMGR_A10_NOC_IDLEREQ_VAL 0xcc
+#define SYSMGR_A10_NOC_IDLEACK 0xd0
+#define SYSMGR_A10_NOC_IDLESTATUS 0xd4
+#define SYSMGR_A10_FPGA2SOC_CTRL 0xd8
+
+#define SYSMGR_SDMMC SYSMGR_A10_SDMMC
#define SYSMGR_SDMMC_SMPLSEL_SHIFT 4
#define SYSMGR_BOOTINFO_BSEL_SHIFT 12
diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
index 52e59df513..90cb465d13 100644
--- a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
+++ b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
@@ -13,106 +13,29 @@ void sysmgr_config_warmrstcfgio(int enable);
void sysmgr_get_pinmux_table(const u8 **table, unsigned int *table_len);
-struct socfpga_system_manager {
- /* System Manager Module */
- u32 siliconid1; /* 0x00 */
- u32 siliconid2;
- u32 _pad_0x8_0xf[2];
- u32 wddbg; /* 0x10 */
- u32 bootinfo;
- u32 hpsinfo;
- u32 parityinj;
- /* FPGA Interface Group */
- u32 fpgaintfgrp_gbl; /* 0x20 */
- u32 fpgaintfgrp_indiv;
- u32 fpgaintfgrp_module;
- u32 _pad_0x2c_0x2f;
- /* Scan Manager Group */
- u32 scanmgrgrp_ctrl; /* 0x30 */
- u32 _pad_0x34_0x3f[3];
- /* Freeze Control Group */
- u32 frzctrl_vioctrl; /* 0x40 */
- u32 _pad_0x44_0x4f[3];
- u32 frzctrl_hioctrl; /* 0x50 */
- u32 frzctrl_src;
- u32 frzctrl_hwctrl;
- u32 _pad_0x5c_0x5f;
- /* EMAC Group */
- u32 emacgrp_ctrl; /* 0x60 */
- u32 emacgrp_l3master;
- u32 _pad_0x68_0x6f[2];
- /* DMA Controller Group */
- u32 dmagrp_ctrl; /* 0x70 */
- u32 dmagrp_persecurity;
- u32 _pad_0x78_0x7f[2];
- /* Preloader (initial software) Group */
- u32 iswgrp_handoff[8]; /* 0x80 */
- u32 _pad_0xa0_0xbf[8]; /* 0xa0 */
- /* Boot ROM Code Register Group */
- u32 romcodegrp_ctrl; /* 0xc0 */
- u32 romcodegrp_cpu1startaddr;
- u32 romcodegrp_initswstate;
- u32 romcodegrp_initswlastld;
- u32 romcodegrp_bootromswstate; /* 0xd0 */
- u32 __pad_0xd4_0xdf[3];
- /* Warm Boot from On-Chip RAM Group */
- u32 romcodegrp_warmramgrp_enable; /* 0xe0 */
- u32 romcodegrp_warmramgrp_datastart;
- u32 romcodegrp_warmramgrp_length;
- u32 romcodegrp_warmramgrp_execution;
- u32 romcodegrp_warmramgrp_crc; /* 0xf0 */
- u32 __pad_0xf4_0xff[3];
- /* Boot ROM Hardware Register Group */
- u32 romhwgrp_ctrl; /* 0x100 */
- u32 _pad_0x104_0x107;
- /* SDMMC Controller Group */
- u32 sdmmcgrp_ctrl;
- u32 sdmmcgrp_l3master;
- /* NAND Flash Controller Register Group */
- u32 nandgrp_bootstrap; /* 0x110 */
- u32 nandgrp_l3master;
- /* USB Controller Group */
- u32 usbgrp_l3master;
- u32 _pad_0x11c_0x13f[9];
- /* ECC Management Register Group */
- u32 eccgrp_l2; /* 0x140 */
- u32 eccgrp_ocram;
- u32 eccgrp_usb0;
- u32 eccgrp_usb1;
- u32 eccgrp_emac0; /* 0x150 */
- u32 eccgrp_emac1;
- u32 eccgrp_dma;
- u32 eccgrp_can0;
- u32 eccgrp_can1; /* 0x160 */
- u32 eccgrp_nand;
- u32 eccgrp_qspi;
- u32 eccgrp_sdmmc;
- u32 _pad_0x170_0x3ff[164];
- /* Pin Mux Control Group */
- u32 emacio[20]; /* 0x400 */
- u32 flashio[12]; /* 0x450 */
- u32 generalio[28]; /* 0x480 */
- u32 _pad_0x4f0_0x4ff[4];
- u32 mixed1io[22]; /* 0x500 */
- u32 mixed2io[8]; /* 0x558 */
- u32 gplinmux[23]; /* 0x578 */
- u32 gplmux[71]; /* 0x5d4 */
- u32 nandusefpga; /* 0x6f0 */
- u32 _pad_0x6f4;
- u32 rgmii1usefpga; /* 0x6f8 */
- u32 _pad_0x6fc_0x700[2];
- u32 i2c0usefpga; /* 0x704 */
- u32 sdmmcusefpga; /* 0x708 */
- u32 _pad_0x70c_0x710[2];
- u32 rgmii0usefpga; /* 0x714 */
- u32 _pad_0x718_0x720[3];
- u32 i2c3usefpga; /* 0x724 */
- u32 i2c2usefpga; /* 0x728 */
- u32 i2c1usefpga; /* 0x72c */
- u32 spim1usefpga; /* 0x730 */
- u32 _pad_0x734;
- u32 spim0usefpga; /* 0x738 */
-};
+#define SYSMGR_GEN5_WDDBG 0x10
+#define SYSMGR_GEN5_BOOTINFO 0x14
+#define SYSMGR_GEN5_FPGAINFGRP_GBL 0x20
+#define SYSMGR_GEN5_FPGAINFGRP_INDIV 0x24
+#define SYSMGR_GEN5_FPGAINFGRP_MODULE 0x28
+#define SYSMGR_GEN5_SCANMGRGRP_CTRL 0x30
+#define SYSMGR_GEN5_ISWGRP_HANDOFF 0x80
+#define SYSMGR_GEN5_ROMCODEGRP_CTRL 0xc0
+#define SYSMGR_GEN5_WARMRAMGRP_EN 0xe0
+#define SYSMGR_GEN5_SDMMC 0x108
+#define SYSMGR_GEN5_ECCGRP_OCRAM 0x144
+#define SYSMGR_GEN5_EMACIO 0x400
+#define SYSMGR_GEN5_NAND_USEFPGA 0x6f0
+#define SYSMGR_GEN5_RGMII0_USEFPGA 0x6f8
+#define SYSMGR_GEN5_SDMMC_USEFPGA 0x708
+#define SYSMGR_GEN5_RGMII1_USEFPGA 0x704
+#define SYSMGR_GEN5_SPIM1_USEFPGA 0x730
+#define SYSMGR_GEN5_SPIM0_USEFPGA 0x738
+
+#define SYSMGR_SDMMC SYSMGR_GEN5_SDMMC
+
+#define SYSMGR_ISWGRP_HANDOFF_OFFSET(i) \
+ SYSMGR_GEN5_ISWGRP_HANDOFF + ((i) * sizeof(u32))
#endif
#define SYSMGR_SDMMC_SMPLSEL_SHIFT 3
diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
index 297f9e1999..e68a8e730e 100644
--- a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
+++ b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
@@ -15,125 +15,73 @@ void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len);
void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len);
void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len);
-struct socfpga_system_manager {
- /* System Manager Module */
- u32 siliconid1; /* 0x00 */
- u32 siliconid2;
- u32 wddbg;
- u32 _pad_0xc;
- u32 mpu_status; /* 0x10 */
- u32 mpu_ace;
- u32 _pad_0x18_0x1c[2];
- u32 dma; /* 0x20 */
- u32 dma_periph;
- /* SDMMC Controller Group */
- u32 sdmmcgrp_ctrl;
- u32 sdmmcgrp_l3master;
- /* NAND Flash Controller Register Group */
- u32 nandgrp_bootstrap; /* 0x30 */
- u32 nandgrp_l3master;
- /* USB Controller Group */
- u32 usb0_l3master;
- u32 usb1_l3master;
- /* EMAC Group */
- u32 emac_gbl; /* 0x40 */
- u32 emac0;
- u32 emac1;
- u32 emac2;
- u32 emac0_ace; /* 0x50 */
- u32 emac1_ace;
- u32 emac2_ace;
- u32 nand_axuser;
- u32 _pad_0x60_0x64[2]; /* 0x60 */
- /* FPGA interface Group */
- u32 fpgaintf_en_1;
- u32 fpgaintf_en_2;
- u32 fpgaintf_en_3; /* 0x70 */
- u32 dma_l3master;
- u32 etr_l3master;
- u32 _pad_0x7c;
- u32 sec_ctrl_slt; /* 0x80 */
- u32 osc_trim;
- u32 _pad_0x88_0x8c[2];
- /* ECC Group */
- u32 ecc_intmask_value; /* 0x90 */
- u32 ecc_intmask_set;
- u32 ecc_intmask_clr;
- u32 ecc_intstatus_serr;
- u32 ecc_intstatus_derr; /* 0xa0 */
- u32 _pad_0xa4_0xac[3];
- u32 noc_addr_remap; /* 0xb0 */
- u32 hmc_clk;
- u32 io_pa_ctrl;
- u32 _pad_0xbc;
- /* NOC Group */
- u32 noc_timeout; /* 0xc0 */
- u32 noc_idlereq_set;
- u32 noc_idlereq_clr;
- u32 noc_idlereq_value;
- u32 noc_idleack; /* 0xd0 */
- u32 noc_idlestatus;
- u32 fpga2soc_ctrl;
- u32 fpga_config;
- u32 iocsrclk_gate; /* 0xe0 */
- u32 gpo;
- u32 gpi;
- u32 _pad_0xec;
- u32 mpu; /* 0xf0 */
- u32 sdm_hps_spare;
- u32 hps_sdm_spare;
- u32 _pad_0xfc_0x1fc[65];
- /* Boot scratch register group */
- u32 boot_scratch_cold0; /* 0x200 */
- u32 boot_scratch_cold1;
- u32 boot_scratch_cold2;
- u32 boot_scratch_cold3;
- u32 boot_scratch_cold4; /* 0x210 */
- u32 boot_scratch_cold5;
- u32 boot_scratch_cold6;
- u32 boot_scratch_cold7;
- u32 boot_scratch_cold8; /* 0x220 */
- u32 boot_scratch_cold9;
- u32 _pad_0x228_0xffc[886];
- /* Pin select and pin control group */
- u32 pinsel0[40]; /* 0x1000 */
- u32 _pad_0x10a0_0x10fc[24];
- u32 pinsel40[8];
- u32 _pad_0x1120_0x112c[4];
- u32 ioctrl0[28];
- u32 _pad_0x11a0_0x11fc[24];
- u32 ioctrl28[20];
- u32 _pad_0x1250_0x12fc[44];
- /* Use FPGA mux */
- u32 rgmii0usefpga; /* 0x1300 */
- u32 rgmii1usefpga;
- u32 rgmii2usefpga;
- u32 i2c0usefpga;
- u32 i2c1usefpga;
- u32 i2c_emac0_usefpga;
- u32 i2c_emac1_usefpga;
- u32 i2c_emac2_usefpga;
- u32 nandusefpga;
- u32 _pad_0x1324;
- u32 spim0usefpga;
- u32 spim1usefpga;
- u32 spis0usefpga;
- u32 spis1usefpga;
- u32 uart0usefpga;
- u32 uart1usefpga;
- u32 mdio0usefpga;
- u32 mdio1usefpga;
- u32 mdio2usefpga;
- u32 _pad_0x134c;
- u32 jtagusefpga;
- u32 sdmmcusefpga;
- u32 hps_osc_clk;
- u32 _pad_0x135c_0x13fc[41];
- u32 iodelay0[40];
- u32 _pad_0x14a0_0x14fc[24];
- u32 iodelay40[8];
+#define SYSMGR_S10_WDDBG 0x8
+#define SYSMGR_S10_DMA 0x20
+#define SYSMGR_S10_DMA_PERIPH 0x24
+#define SYSMGR_S10_SDMMC 0x28
+#define SYSMGR_S10_SDMMC_L3MASTER 0x2c
+#define SYSMGR_S10_EMAC_GLOBAL 0x40
+#define SYSMGR_S10_EMAC0 0x44
+#define SYSMGR_S10_EMAC1 0x48
+#define SYSMGR_S10_EMAC2 0x4c
+#define SYSMGR_S10_EMAC0_ACE 0x50
+#define SYSMGR_S10_EMAC1_ACE 0x54
+#define SYSMGR_S10_EMAC2_ACE 0x58
+#define SYSMGR_S10_NAND_AXUSER 0x5c
+#define SYSMGR_S10_FPGAINTF_EN1 0x68
+#define SYSMGR_S10_FPGAINTF_EN2 0x6c
+#define SYSMGR_S10_FPGAINTF_EN3 0x70
+#define SYSMGR_S10_DMA_L3MASTER 0x74
+#define SYSMGR_S10_HMC_CLK 0xb4
+#define SYSMGR_S10_IO_PA_CTRL 0xb8
+#define SYSMGR_S10_NOC_TIMEOUT 0xc0
+#define SYSMGR_S10_NOC_IDLEREQ_SET 0xc4
+#define SYSMGR_S10_NOC_IDLEREQ_CLR 0xc8
+#define SYSMGR_S10_NOC_IDLEREQ_VAL 0xcc
+#define SYSMGR_S10_NOC_IDLEACK 0xd0
+#define SYSMGR_S10_NOC_IDLESTATUS 0xd4
+#define SYSMGR_S10_FPGA2SOC_CTRL 0xd8
+#define SYSMGR_S10_FPGA_CONFIG 0xdc
+#define SYSMGR_S10_IOCSRCLK_GATE 0xe0
+#define SYSMGR_S10_GPO 0xe4
+#define SYSMGR_S10_GPI 0xe8
+#define SYSMGR_S10_MPU 0xf0
+#define SYSMGR_S10_BOOT_SCRATCH_COLD0 0x200
+#define SYSMGR_S10_BOOT_SCRATCH_COLD1 0x204
+#define SYSMGR_S10_BOOT_SCRATCH_COLD2 0x208
+#define SYSMGR_S10_BOOT_SCRATCH_COLD3 0x20c
+#define SYSMGR_S10_BOOT_SCRATCH_COLD4 0x210
+#define SYSMGR_S10_BOOT_SCRATCH_COLD5 0x214
+#define SYSMGR_S10_BOOT_SCRATCH_COLD6 0x218
+#define SYSMGR_S10_BOOT_SCRATCH_COLD7 0x21c
+#define SYSMGR_S10_BOOT_SCRATCH_COLD8 0x220
+#define SYSMGR_S10_BOOT_SCRATCH_COLD9 0x224
+#define SYSMGR_S10_PINSEL0 0x1000
+#define SYSMGR_S10_IOCTRL0 0x1130
+#define SYSMGR_S10_EMAC0_USEFPGA 0x1300
+#define SYSMGR_S10_EMAC1_USEFPGA 0x1304
+#define SYSMGR_S10_EMAC2_USEFPGA 0x1308
+#define SYSMGR_S10_I2C0_USEFPGA 0x130c
+#define SYSMGR_S10_I2C1_USEFPGA 0x1310
+#define SYSMGR_S10_I2C_EMAC0_USEFPGA 0x1314
+#define SYSMGR_S10_I2C_EMAC1_USEFPGA 0x1318
+#define SYSMGR_S10_I2C_EMAC2_USEFPGA 0x131c
+#define SYSMGR_S10_NAND_USEFPGA 0x1320
+#define SYSMGR_S10_SPIM0_USEFPGA 0x1328
+#define SYSMGR_S10_SPIM1_USEFPGA 0x132c
+#define SYSMGR_S10_SPIS0_USEFPGA 0x1330
+#define SYSMGR_S10_SPIS1_USEFPGA 0x1334
+#define SYSMGR_S10_UART0_USEFPGA 0x1338
+#define SYSMGR_S10_UART1_USEFPGA 0x133c
+#define SYSMGR_S10_MDIO0_USEFPGA 0x1340
+#define SYSMGR_S10_MDIO1_USEFPGA 0x1344
+#define SYSMGR_S10_MDIO2_USEFPGA 0x1348
+#define SYSMGR_S10_JTAG_USEFPGA 0x1350
+#define SYSMGR_S10_SDMMC_USEFPGA 0x1354
+#define SYSMGR_S10_HPS_OSC_CLK 0x1358
+#define SYSMGR_S10_IODELAY0 0x1400
-};
+#define SYSMGR_SDMMC SYSMGR_S10_SDMMC
#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX BIT(0)
#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO BIT(1)
diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c
index 4498ab55df..11b57361c7 100644
--- a/arch/arm/mach-socfpga/mailbox_s10.c
+++ b/arch/arm/mach-socfpga/mailbox_s10.c
@@ -287,9 +287,6 @@ int mbox_qspi_close(void)
int mbox_qspi_open(void)
{
- static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
int ret;
u32 resp_buf[1];
u32 resp_buf_len;
@@ -318,7 +315,8 @@ int mbox_qspi_open(void)
/* We are getting QSPI ref clock and set into sysmgr boot register */
printf("QSPI: Reference clock at %d Hz\n", resp_buf[0]);
- writel(resp_buf[0], &sysmgr_regs->boot_scratch_cold0);
+ writel(resp_buf[0],
+ socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
return 0;
diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
index 901c432f82..fcc53b6fbc 100644
--- a/arch/arm/mach-socfpga/misc.c
+++ b/arch/arm/mach-socfpga/misc.c
@@ -23,6 +23,7 @@
DECLARE_GLOBAL_DATA_PTR;
phys_addr_t socfpga_rstmgr_base __section(".data");
+phys_addr_t socfpga_sysmgr_base __section(".data");
#ifdef CONFIG_SYS_L2_PL310
static const struct pl310_regs *const pl310 =
@@ -233,4 +234,8 @@ void socfpga_get_manager_addr(void)
socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
if (!socfpga_rstmgr_base)
hang();
+
+ socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
+ if (!socfpga_sysmgr_base)
+ hang();
}
diff --git a/arch/arm/mach-socfpga/misc_arria10.c b/arch/arm/mach-socfpga/misc_arria10.c
index 2e2a40b65d..ff6ab83441 100644
--- a/arch/arm/mach-socfpga/misc_arria10.c
+++ b/arch/arm/mach-socfpga/misc_arria10.c
@@ -28,9 +28,6 @@
#define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q3_7 0x78
#define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q4_3 0x98
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
/*
* FPGA programming support for SoC FPGA Arria 10
*/
@@ -81,7 +78,7 @@ void socfpga_init_security_policies(void)
writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST);
writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST + 4);
- writel(0x0007FFFF, &sysmgr_regs->ecc_intmask_set);
+ writel(0x0007FFFF, socfpga_sysmgr_base + SYSMGR_A10_ECC_INTMASK_SET);
}
void socfpga_sdram_remap_zero(void)
@@ -105,8 +102,8 @@ int arch_early_init_r(void)
#if defined(CONFIG_DISPLAY_CPUINFO)
int print_cpuinfo(void)
{
- const u32 bsel =
- SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
+ u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
+ const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
puts("CPU: Altera SoCFPGA Arria 10\n");
diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
index b39a66562d..7735958e9c 100644
--- a/arch/arm/mach-socfpga/misc_gen5.c
+++ b/arch/arm/mach-socfpga/misc_gen5.c
@@ -28,8 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
static struct pl310_regs *const pl310 =
(struct pl310_regs *)CONFIG_SYS_PL310_BASE;
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
static struct nic301_registers *nic301_regs =
(struct nic301_registers *)SOCFPGA_L3REGS_ADDRESS;
static struct scu_registers *scu_regs =
@@ -118,8 +116,8 @@ static int socfpga_fpga_id(const bool print_id)
#if defined(CONFIG_DISPLAY_CPUINFO)
int print_cpuinfo(void)
{
- const u32 bsel =
- SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
+ u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
+ const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
puts("CPU: Altera SoCFPGA Platform\n");
socfpga_fpga_id(1);
@@ -132,7 +130,8 @@ int print_cpuinfo(void)
#ifdef CONFIG_ARCH_MISC_INIT
int arch_misc_init(void)
{
- const u32 bsel = readl(&sysmgr_regs->bootinfo) & 0x7;
+ const u32 bsel = readl(socfpga_sysmgr_base +
+ SYSMGR_GEN5_BOOTINFO) & 0x7;
const int fpga_id = socfpga_fpga_id(0);
env_set("bootmode", bsel_str[bsel].mode);
if (fpga_id >= 0)
@@ -190,10 +189,11 @@ int arch_early_init_r(void)
* to support that old code, we write it here instead of in the
* reset_cpu() function just before resetting the CPU.
*/
- writel(0xae9efebc, &sysmgr_regs->romcodegrp_warmramgrp_enable);
+ writel(0xae9efebc, socfpga_sysmgr_base + SYSMGR_GEN5_WARMRAMGRP_EN);
for (i = 0; i < 8; i++) /* Cache initial SW setting regs */
- iswgrp_handoff[i] = readl(&sysmgr_regs->iswgrp_handoff[i]);
+ iswgrp_handoff[i] = readl(socfpga_sysmgr_base +
+ SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
socfpga_bridges_reset(1);
@@ -219,16 +219,18 @@ void do_bridge_reset(int enable, unsigned int mask)
!(mask & BIT(2)));
for (i = 0; i < 2; i++) { /* Reload SW setting cache */
iswgrp_handoff[i] =
- readl(&sysmgr_regs->iswgrp_handoff[i]);
+ readl(socfpga_sysmgr_base +
+ SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
}
- writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
+ writel(iswgrp_handoff[2],
+ socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
writel(iswgrp_handoff[0],
socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
writel(iswgrp_handoff[1], &nic301_regs->remap);
} else {
- writel(0, &sysmgr_regs->fpgaintfgrp_module);
+ writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
writel(0, &sdr_ctrl->fpgaport_rst);
writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
writel(1, &nic301_regs->remap);
diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-socfpga/misc_s10.c
index 0a5fab11c0..16fbf71599 100644
--- a/arch/arm/mach-socfpga/misc_s10.c
+++ b/arch/arm/mach-socfpga/misc_s10.c
@@ -23,9 +23,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
/*
* FPGA programming support for SoC FPGA Stratix 10
*/
@@ -68,9 +65,9 @@ static u32 socfpga_phymode_setup(u32 gmac_index, const char *phymode)
else
return -EINVAL;
- clrsetbits_le32(&sysmgr_regs->emac0 + gmac_index,
- SYSMGR_EMACGRP_CTRL_PHYSEL_MASK,
- modereg);
+ clrsetbits_le32((unsigned long)(socfpga_sysmgr_base + SYSMGR_S10_EMAC0 +
+ gmac_index),
+ SYSMGR_EMACGRP_CTRL_PHYSEL_MASK, modereg);
return 0;
}
diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
index 4553653992..5611e784e6 100644
--- a/arch/arm/mach-socfpga/reset_manager_arria10.c
+++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
@@ -15,9 +15,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
struct bridge_cfg {
int compat_id;
u32 mask_noc;
@@ -98,14 +95,16 @@ int socfpga_reset_deassert_bridges_handoff(void)
}
/* clear idle request to all bridges */
- setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
+ setbits_le32(socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_CLR,
+ mask_noc);
/* Release bridges from reset state per handoff value */
clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
/* Poll until all idleack to 0, timeout at 1000ms */
- return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
- false, 1000, false);
+ return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
+ SYSMGR_A10_NOC_IDLEACK),
+ mask_noc, false, 1000, false);
}
/* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
@@ -195,13 +194,15 @@ int socfpga_bridges_reset(void)
ALT_SYSMGR_NOC_F2SDR0_SET_MSK |
ALT_SYSMGR_NOC_F2SDR1_SET_MSK |
ALT_SYSMGR_NOC_F2SDR2_SET_MSK,
- &sysmgr_regs->noc_idlereq_set);
+ socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_SET);
/* Enable the NOC timeout */
- writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK, &sysmgr_regs->noc_timeout);
+ writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK,
+ socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
/* Poll until all idleack to 1 */
- ret = wait_for_bit_le32(&sysmgr_regs->noc_idleack,
+ ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
+ SYSMGR_A10_NOC_IDLEACK),
ALT_SYSMGR_NOC_H2F_SET_MSK |
ALT_SYSMGR_NOC_LWH2F_SET_MSK |
ALT_SYSMGR_NOC_F2H_SET_MSK |
@@ -213,7 +214,8 @@ int socfpga_bridges_reset(void)
return ret;
/* Poll until all idlestatus to 1 */
- ret = wait_for_bit_le32(&sysmgr_regs->noc_idlestatus,
+ ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
+ SYSMGR_A10_NOC_IDLESTATUS),
ALT_SYSMGR_NOC_H2F_SET_MSK |
ALT_SYSMGR_NOC_LWH2F_SET_MSK |
ALT_SYSMGR_NOC_F2H_SET_MSK |
@@ -234,7 +236,7 @@ int socfpga_bridges_reset(void)
ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
/* Disable NOC timeout */
- writel(0, &sysmgr_regs->noc_timeout);
+ writel(0, socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
return 0;
}
diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
index ad31214711..6b617fd016 100644
--- a/arch/arm/mach-socfpga/reset_manager_gen5.c
+++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
@@ -10,9 +10,6 @@
#include <asm/arch/reset_manager.h>
#include <asm/arch/system_manager.h>
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
/* Assert or de-assert SoCFPGA reset manager reset. */
void socfpga_per_reset(u32 reset, int set)
{
@@ -83,8 +80,8 @@ void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h)
if (f2h)
brgmask |= BIT(2);
- writel(brgmask, &sysmgr_regs->iswgrp_handoff[0]);
- writel(l3rmask, &sysmgr_regs->iswgrp_handoff[1]);
+ writel(brgmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(0));
+ writel(l3rmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(1));
}
void socfpga_bridges_reset(int enable)
diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
index b196d58d3d..50a2d80930 100644
--- a/arch/arm/mach-socfpga/reset_manager_s10.c
+++ b/arch/arm/mach-socfpga/reset_manager_s10.c
@@ -12,9 +12,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_system_manager *system_manager_base =
- (void *)SOCFPGA_SYSMGR_ADDRESS;
-
/* Assert or de-assert SoCFPGA reset manager reset. */
void socfpga_per_reset(u32 reset, int set)
{
@@ -59,28 +56,29 @@ void socfpga_bridges_reset(int enable)
{
if (enable) {
/* clear idle request to all bridges */
- setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
+ setbits_le32(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_CLR,
+ ~0);
/* Release all bridges from reset state */
clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
/* Poll until all idleack to 0 */
- while (readl(&system_manager_base->noc_idleack))
+ while (readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK))
;
} else {
/* set idle request to all bridges */
- writel(~0, &system_manager_base->noc_idlereq_set);
+ writel(~0, socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_SET);
/* Enable the NOC timeout */
- writel(1, &system_manager_base->noc_timeout);
+ writel(1, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
/* Poll until all idleack to 1 */
- while ((readl(&system_manager_base->noc_idleack) ^
+ while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK) ^
(SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
;
/* Poll until all idlestatus to 1 */
- while ((readl(&system_manager_base->noc_idlestatus) ^
+ while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLESTATUS) ^
(SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
;
@@ -90,7 +88,7 @@ void socfpga_bridges_reset(int enable)
RSTMGR_BRGMODRST_FPGA2SOC_MASK));
/* Disable NOC timeout */
- writel(0, &system_manager_base->noc_timeout);
+ writel(0, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
}
}
diff --git a/arch/arm/mach-socfpga/scan_manager.c b/arch/arm/mach-socfpga/scan_manager.c
index 52175af48b..f1d5f69caa 100644
--- a/arch/arm/mach-socfpga/scan_manager.c
+++ b/arch/arm/mach-socfpga/scan_manager.c
@@ -31,8 +31,6 @@ static const struct socfpga_scan_manager *scan_manager_base =
(void *)(SOCFPGA_SCANMGR_ADDRESS);
static const struct socfpga_freeze_controller *freeze_controller_base =
(void *)(SOCFPGA_SYSMGR_ADDRESS + SYSMGR_FRZCTRL_ADDRESS);
-static struct socfpga_system_manager *sys_mgr_base =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
/**
* scan_chain_engine_is_idle() - Check if the JTAG scan chain is idle
@@ -218,7 +216,7 @@ u32 scan_mgr_get_fpga_id(void)
int ret;
/* Enable HPS to talk to JTAG in the FPGA through the System Manager */
- writel(0x1, &sys_mgr_base->scanmgrgrp_ctrl);
+ writel(0x1, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
/* Enable port 7 */
writel(0x80, &scan_manager_base->en);
@@ -253,7 +251,7 @@ u32 scan_mgr_get_fpga_id(void)
/* Disable all port */
writel(0, &scan_manager_base->en);
- writel(0, &sys_mgr_base->scanmgrgrp_ctrl);
+ writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
return id;
}
diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
index a0d80fd47e..ee811e4ee9 100644
--- a/arch/arm/mach-socfpga/spl_a10.c
+++ b/arch/arm/mach-socfpga/spl_a10.c
@@ -31,12 +31,9 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
u32 spl_boot_device(void)
{
- const u32 bsel = readl(&sysmgr_regs->bootinfo);
+ const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
case 0x1: /* FPGA (HPS2FPGA Bridge) */
diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
index 9ee053da3a..82d9fe0824 100644
--- a/arch/arm/mach-socfpga/spl_gen5.c
+++ b/arch/arm/mach-socfpga/spl_gen5.c
@@ -24,12 +24,9 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
u32 spl_boot_device(void)
{
- const u32 bsel = readl(&sysmgr_regs->bootinfo);
+ const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
case 0x1: /* FPGA (HPS2FPGA Bridge) */
@@ -77,13 +74,13 @@ void board_init_f(ulong dummy)
* First C code to run. Clear fake OCRAM ECC first as SBE
* and DBE might triggered during power on
*/
- reg = readl(&sysmgr_regs->eccgrp_ocram);
+ reg = readl(socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
if (reg & SYSMGR_ECC_OCRAM_SERR)
writel(SYSMGR_ECC_OCRAM_SERR | SYSMGR_ECC_OCRAM_EN,
- &sysmgr_regs->eccgrp_ocram);
+ socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
if (reg & SYSMGR_ECC_OCRAM_DERR)
writel(SYSMGR_ECC_OCRAM_DERR | SYSMGR_ECC_OCRAM_EN,
- &sysmgr_regs->eccgrp_ocram);
+ socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
socfpga_sdram_remap_zero();
socfpga_pl310_clear();
diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
index 9a97a84e1e..16f19f901d 100644
--- a/arch/arm/mach-socfpga/spl_s10.c
+++ b/arch/arm/mach-socfpga/spl_s10.c
@@ -22,9 +22,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
u32 spl_boot_device(void)
{
/* TODO: Get from SDM or handoff */
@@ -129,7 +126,8 @@ void board_init_f(ulong dummy)
#ifdef CONFIG_HW_WATCHDOG
/* Ensure watchdog is paused when debugging is happening */
- writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
+ writel(SYSMGR_WDDBG_PAUSE_ALL_CPU,
+ socfpga_sysmgr_base + SYSMGR_S10_WDDBG);
/* Enable watchdog before initializing the HW */
socfpga_per_reset(SOCFPGA_RESET(L4WD0), 1);
@@ -157,8 +155,10 @@ void board_init_f(ulong dummy)
cm_print_clock_quick_summary();
/* enable non-secure interface to DMA330 DMA and peripherals */
- writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS, &sysmgr_regs->dma);
- writel(SYSMGR_DMAPERIPH_ALL_NS, &sysmgr_regs->dma_periph);
+ writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS,
+ socfpga_sysmgr_base + SYSMGR_S10_DMA);
+ writel(SYSMGR_DMAPERIPH_ALL_NS,
+ socfpga_sysmgr_base + SYSMGR_S10_DMA_PERIPH);
spl_disable_firewall_l4_per();
diff --git a/arch/arm/mach-socfpga/system_manager_gen5.c b/arch/arm/mach-socfpga/system_manager_gen5.c
index 9d04aea2a8..1053a47201 100644
--- a/arch/arm/mach-socfpga/system_manager_gen5.c
+++ b/arch/arm/mach-socfpga/system_manager_gen5.c
@@ -8,9 +8,6 @@
#include <asm/arch/system_manager.h>
#include <asm/arch/fpga_manager.h>
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
/*
* Populate the value for SYSMGR.FPGAINTF.MODULE based on pinmux setting.
* The value is not wrote to SYSMGR.FPGAINTF.MODULE but
@@ -21,30 +18,39 @@ static void populate_sysmgr_fpgaintf_module(void)
u32 handoff_val = 0;
/* ISWGRP_HANDOFF_FPGAINTF */
- writel(0, &sysmgr_regs->iswgrp_handoff[2]);
+ writel(0, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
/* Enable the signal for those HPS peripherals that use FPGA. */
- if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_NAND_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_NAND;
- if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII1_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_EMAC1;
- if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SDMMC_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SDMMC;
- if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII0_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_EMAC0;
- if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM0_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SPIM0;
- if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM1_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SPIM1;
/* populate (not writing) the value for SYSMGR.FPGAINTF.MODULE
based on pinmux setting */
- setbits_le32(&sysmgr_regs->iswgrp_handoff[2], handoff_val);
+ setbits_le32(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2),
+ handoff_val);
- handoff_val = readl(&sysmgr_regs->iswgrp_handoff[2]);
+ handoff_val = readl(socfpga_sysmgr_base +
+ SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
if (fpgamgr_test_fpga_ready()) {
/* Enable the required signals only */
- writel(handoff_val, &sysmgr_regs->fpgaintfgrp_module);
+ writel(handoff_val,
+ socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
}
}
@@ -53,7 +59,7 @@ static void populate_sysmgr_fpgaintf_module(void)
*/
void sysmgr_pinmux_init(void)
{
- u32 regs = (u32)&sysmgr_regs->emacio[0];
+ u32 regs = (u32)socfpga_sysmgr_base + SYSMGR_GEN5_EMACIO;
const u8 *sys_mgr_init_table;
unsigned int len;
int i;
@@ -74,9 +80,9 @@ void sysmgr_pinmux_init(void)
void sysmgr_config_warmrstcfgio(int enable)
{
if (enable)
- setbits_le32(&sysmgr_regs->romcodegrp_ctrl,
+ setbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
else
- clrbits_le32(&sysmgr_regs->romcodegrp_ctrl,
+ clrbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
}
diff --git a/arch/arm/mach-socfpga/system_manager_s10.c b/arch/arm/mach-socfpga/system_manager_s10.c
index 122828c9ce..c046bb17c9 100644
--- a/arch/arm/mach-socfpga/system_manager_s10.c
+++ b/arch/arm/mach-socfpga/system_manager_s10.c
@@ -10,9 +10,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
/*
* Configure all the pin muxes
*/
@@ -32,24 +29,31 @@ void populate_sysmgr_fpgaintf_module(void)
u32 handoff_val = 0;
/* Enable the signal for those HPS peripherals that use FPGA. */
- if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_NAND_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_NAND;
- if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_SDMMC_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SDMMC;
- if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM0_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SPIM0;
- if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM1_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_SPIM1;
- writel(handoff_val, &sysmgr_regs->fpgaintf_en_2);
+ writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN2);
handoff_val = 0;
- if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_EMAC0;
- if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC1_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_EMAC1;
- if (readl(&sysmgr_regs->rgmii2usefpga) == SYSMGR_FPGAINTF_USEFPGA)
+ if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC2_USEFPGA) ==
+ SYSMGR_FPGAINTF_USEFPGA)
handoff_val |= SYSMGR_FPGAINTF_EMAC2;
- writel(handoff_val, &sysmgr_regs->fpgaintf_en_3);
+ writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN3);
}
/*
@@ -64,14 +68,16 @@ void populate_sysmgr_pinmux(void)
sysmgr_pinmux_table_sel(&sys_mgr_table_u32, &len);
for (i = 0; i < len; i = i + 2) {
writel(sys_mgr_table_u32[i + 1],
- sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->pinsel0[0]);
+ sys_mgr_table_u32[i] +
+ (u8 *)socfpga_sysmgr_base + SYSMGR_S10_PINSEL0);
}
/* setup the pin ctrl */
sysmgr_pinmux_table_ctrl(&sys_mgr_table_u32, &len);
for (i = 0; i < len; i = i + 2) {
writel(sys_mgr_table_u32[i + 1],
- sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->ioctrl0[0]);
+ sys_mgr_table_u32[i] +
+ (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IOCTRL0);
}
/* setup the fpga use */
@@ -79,13 +85,14 @@ void populate_sysmgr_pinmux(void)
for (i = 0; i < len; i = i + 2) {
writel(sys_mgr_table_u32[i + 1],
sys_mgr_table_u32[i] +
- (u8 *)&sysmgr_regs->rgmii0usefpga);
+ (u8 *)socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA);
}
/* setup the IO delay */
sysmgr_pinmux_table_delay(&sys_mgr_table_u32, &len);
for (i = 0; i < len; i = i + 2) {
writel(sys_mgr_table_u32[i + 1],
- sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->iodelay0[0]);
+ sys_mgr_table_u32[i] +
+ (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IODELAY0);
}
}
diff --git a/arch/arm/mach-socfpga/wrap_pll_config_s10.c b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
index 7cafc7dcfc..c9570fea38 100644
--- a/arch/arm/mach-socfpga/wrap_pll_config_s10.c
+++ b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
@@ -10,9 +10,6 @@
#include <asm/arch/handoff_s10.h>
#include <asm/arch/system_manager.h>
-static const struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
const struct cm_config * const cm_get_default_config(void)
{
struct cm_config *cm_handoff_cfg = (struct cm_config *)
@@ -38,9 +35,9 @@ const unsigned int cm_get_osc_clk_hz(void)
#ifdef CONFIG_SPL_BUILD
u32 clock = readl(S10_HANDOFF_CLOCK_OSC);
- writel(clock, &sysmgr_regs->boot_scratch_cold1);
+ writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
#endif
- return readl(&sysmgr_regs->boot_scratch_cold1);
+ return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
}
const unsigned int cm_get_intosc_clk_hz(void)
@@ -53,7 +50,7 @@ const unsigned int cm_get_fpga_clk_hz(void)
#ifdef CONFIG_SPL_BUILD
u32 clock = readl(S10_HANDOFF_CLOCK_FPGA);
- writel(clock, &sysmgr_regs->boot_scratch_cold2);
+ writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
#endif
- return readl(&sysmgr_regs->boot_scratch_cold2);
+ return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
}
diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
index fcd89b619d..46a5c466a7 100644
--- a/drivers/ddr/altera/sdram_gen5.c
+++ b/drivers/ddr/altera/sdram_gen5.c
@@ -40,9 +40,6 @@ struct sdram_prot_rule {
u32 hi_prot_id;
};
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
-
static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl);
/**
@@ -455,12 +452,13 @@ int sdram_mmr_init_full(struct socfpga_sdr_ctrl *sdr_ctrl,
SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB;
int ret;
- writel(rows, &sysmgr_regs->iswgrp_handoff[4]);
+ writel(rows, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
sdr_load_regs(sdr_ctrl, cfg);
/* saving this value to SYSMGR.ISWGRP.HANDOFF.FPGA2SDR */
- writel(cfg->fpgaport_rst, &sysmgr_regs->iswgrp_handoff[3]);
+ writel(cfg->fpgaport_rst,
+ socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(3));
/* only enable if the FPGA is programmed */
if (fpgamgr_test_fpga_ready()) {
@@ -516,7 +514,7 @@ static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl)
* since the FB specifies we modify ROWBITs to work around SDRAM
* controller issue.
*/
- row = readl(&sysmgr_regs->iswgrp_handoff[4]);
+ row = readl(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
if (row == 0)
row = rowbits;
/*
diff --git a/drivers/ddr/altera/sdram_s10.c b/drivers/ddr/altera/sdram_s10.c
index 56cbbac9fe..d5812f2fd7 100644
--- a/drivers/ddr/altera/sdram_s10.c
+++ b/drivers/ddr/altera/sdram_s10.c
@@ -32,9 +32,6 @@ struct altera_sdram_platdata {
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_system_manager *sysmgr_regs =
- (void *)SOCFPGA_SYSMGR_ADDRESS;
-
#define DDR_CONFIG(A, B, C, R) (((A) << 24) | ((B) << 16) | ((C) << 8) | (R))
#define PGTABLE_OFF 0x4000
@@ -150,7 +147,8 @@ static int emif_reset(struct altera_sdram_platdata *plat)
static int poll_hmc_clock_status(void)
{
- return wait_for_bit_le32(&sysmgr_regs->hmc_clk,
+ return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
+ SYSMGR_S10_HMC_CLK),
SYSMGR_HMC_CLK_STATUS_MSK, true, 1000, false);
}
diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
index 5fb9d6a191..743326cdb3 100644
--- a/drivers/fpga/socfpga_arria10.c
+++ b/drivers/fpga/socfpga_arria10.c
@@ -30,9 +30,6 @@ DECLARE_GLOBAL_DATA_PTR;
static const struct socfpga_fpga_manager *fpga_manager_base =
(void *)SOCFPGA_FPGAMGRREGS_ADDRESS;
-static const struct socfpga_system_manager *system_manager_base =
- (void *)SOCFPGA_SYSMGR_ADDRESS;
-
static void fpgamgr_set_cd_ratio(unsigned long ratio);
static uint32_t fpgamgr_get_msel(void)
@@ -818,7 +815,7 @@ int socfpga_loadfs(fpga_fs_info *fpga_fsinfo, const void *buf, size_t bsize,
}
/* Disable all signals from HPS peripheral controller to FPGA */
- writel(0, &system_manager_base->fpgaintf_en_global);
+ writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
/* Disable all axi bridges (hps2fpga, lwhps2fpga & fpga2hps) */
socfpga_bridges_reset();
@@ -910,7 +907,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
memset(&rbfinfo, 0, sizeof(rbfinfo));
/* Disable all signals from hps peripheral controller to fpga */
- writel(0, &system_manager_base->fpgaintf_en_global);
+ writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
/* Disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
socfpga_bridges_reset();
diff --git a/drivers/fpga/socfpga_gen5.c b/drivers/fpga/socfpga_gen5.c
index 6d16e0b37f..2b98572742 100644
--- a/drivers/fpga/socfpga_gen5.c
+++ b/drivers/fpga/socfpga_gen5.c
@@ -15,8 +15,6 @@
static struct socfpga_fpga_manager *fpgamgr_regs =
(struct socfpga_fpga_manager *)SOCFPGA_FPGAMGRREGS_ADDRESS;
-static struct socfpga_system_manager *sysmgr_regs =
- (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
/* Set CD ratio */
static void fpgamgr_set_cd_ratio(unsigned long ratio)
@@ -214,7 +212,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
/* Prior programming the FPGA, all bridges need to be shut off */
/* Disable all signals from hps peripheral controller to fpga */
- writel(0, &sysmgr_regs->fpgaintfgrp_module);
+ writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
/* Disable all signals from FPGA to HPS SDRAM */
#define SDR_CTRLGRP_FPGAPORTRST_ADDRESS 0x5080
diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
index 739c1629a2..bdcd568d60 100644
--- a/drivers/mmc/socfpga_dw_mmc.c
+++ b/drivers/mmc/socfpga_dw_mmc.c
@@ -20,8 +20,6 @@ DECLARE_GLOBAL_DATA_PTR;
static const struct socfpga_clock_manager *clock_manager_base =
(void *)SOCFPGA_CLKMGR_ADDRESS;
-static const struct socfpga_system_manager *system_manager_base =
- (void *)SOCFPGA_SYSMGR_ADDRESS;
struct socfpga_dwmci_plat {
struct mmc_config cfg;
@@ -61,10 +59,10 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
debug("%s: drvsel %d smplsel %d\n", __func__,
priv->drvsel, priv->smplsel);
- writel(sdmmc_mask, &system_manager_base->sdmmcgrp_ctrl);
+ writel(sdmmc_mask, socfpga_sysmgr_base + SYSMGR_SDMMC);
debug("%s: SYSMGR_SDMMCGRP_CTRL_REG = 0x%x\n", __func__,
- readl(&system_manager_base->sdmmcgrp_ctrl));
+ readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
/* Enable SDMMC clock */
setbits_le32(&clock_manager_base->per_pll.en,
--
2.19.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock manager from struct to defines
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
` (2 preceding siblings ...)
2019-09-10 8:38 ` [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system " Ley Foon Tan
@ 2019-09-10 8:38 ` Ley Foon Tan
2019-10-02 9:22 ` Simon Goldschmidt
2019-09-17 22:33 ` [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers " Dinh Nguyen
4 siblings, 1 reply; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-10 8:38 UTC (permalink / raw)
To: u-boot
Convert clock manager for Gen5, Arria 10 and Stratix 10 from struct
to defines.
No functional change.
Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
---
v2:
- Change to use writel(), readl() and etc.
- Get base address from DT.
- Add prefix to defines.
---
arch/arm/mach-socfpga/clock_manager.c | 12 +-
arch/arm/mach-socfpga/clock_manager_arria10.c | 156 +++++++------
arch/arm/mach-socfpga/clock_manager_gen5.c | 199 +++++++++--------
arch/arm/mach-socfpga/clock_manager_s10.c | 206 ++++++++++--------
.../mach-socfpga/include/mach/clock_manager.h | 2 +
.../include/mach/clock_manager_arria10.h | 133 +++++------
.../include/mach/clock_manager_gen5.h | 112 ++++------
.../include/mach/clock_manager_s10.h | 115 ++++------
arch/arm/mach-socfpga/misc.c | 5 +
drivers/mmc/socfpga_dw_mmc.c | 11 +-
10 files changed, 476 insertions(+), 475 deletions(-)
diff --git a/arch/arm/mach-socfpga/clock_manager.c b/arch/arm/mach-socfpga/clock_manager.c
index 9f3c643df8..09857dc37b 100644
--- a/arch/arm/mach-socfpga/clock_manager.c
+++ b/arch/arm/mach-socfpga/clock_manager.c
@@ -10,18 +10,15 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_clock_manager *clock_manager_base =
- (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
-
void cm_wait_for_lock(u32 mask)
{
u32 inter_val;
u32 retry = 0;
do {
#if defined(CONFIG_TARGET_SOCFPGA_GEN5)
- inter_val = readl(&clock_manager_base->inter) & mask;
+ inter_val = readl(socfpga_clkmgr_base + CLKMGR_INTER) & mask;
#else
- inter_val = readl(&clock_manager_base->stat) & mask;
+ inter_val = readl(socfpga_clkmgr_base + CLKMGR_STAT) & mask;
#endif
/* Wait for stable lock */
if (inter_val == mask)
@@ -36,8 +33,9 @@ void cm_wait_for_lock(u32 mask)
/* function to poll in the fsm busy bit */
int cm_wait_for_fsm(void)
{
- return wait_for_bit_le32(&clock_manager_base->stat,
- CLKMGR_STAT_BUSY, false, 20000, false);
+ return wait_for_bit_le32((const void *)(socfpga_clkmgr_base +
+ CLKMGR_STAT), CLKMGR_STAT_BUSY, false, 20000,
+ false);
}
int set_cpu_clk_info(void)
diff --git a/arch/arm/mach-socfpga/clock_manager_arria10.c b/arch/arm/mach-socfpga/clock_manager_arria10.c
index 334a79fd9c..33aebd4f47 100644
--- a/arch/arm/mach-socfpga/clock_manager_arria10.c
+++ b/arch/arm/mach-socfpga/clock_manager_arria10.c
@@ -231,9 +231,6 @@ static int of_get_clk_cfg(const void *blob, struct mainpll_cfg *main_cfg,
return 0;
}
-static const struct socfpga_clock_manager *clock_manager_base =
- (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
-
/* calculate the intended main VCO frequency based on handoff */
static unsigned int cm_calc_handoff_main_vco_clk_hz
(struct mainpll_cfg *main_cfg)
@@ -551,12 +548,13 @@ static void cm_pll_ramp_main(struct mainpll_cfg *main_cfg,
writel((main_cfg->vco1_denom <<
CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
cm_calc_safe_pll_numer(0, main_cfg, per_cfg, clk_hz),
- &clock_manager_base->main_pll.vco1);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
mdelay(1);
cm_wait_for_lock(LOCKED_MASK);
}
writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
- main_cfg->vco1_numer, &clock_manager_base->main_pll.vco1);
+ main_cfg->vco1_numer,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
mdelay(1);
cm_wait_for_lock(LOCKED_MASK);
}
@@ -579,14 +577,17 @@ static void cm_pll_ramp_periph(struct mainpll_cfg *main_cfg,
/* execute the ramping here */
for (clk_hz = pll_ramp_periph_hz + clk_incr_hz;
clk_hz < clk_final_hz; clk_hz += clk_incr_hz) {
- writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
- cm_calc_safe_pll_numer(1, main_cfg, per_cfg, clk_hz),
- &clock_manager_base->per_pll.vco1);
+ writel((per_cfg->vco1_denom <<
+ CLKMGR_PERPLL_VCO1_DENOM_LSB) |
+ cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
+ clk_hz),
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
mdelay(1);
cm_wait_for_lock(LOCKED_MASK);
}
writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
- per_cfg->vco1_numer, &clock_manager_base->per_pll.vco1);
+ per_cfg->vco1_numer,
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
mdelay(1);
cm_wait_for_lock(LOCKED_MASK);
}
@@ -638,16 +639,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
/* gate off all mainpll clock excpet HW managed clock */
writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
- &clock_manager_base->main_pll.enr);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENR);
/* now we can gate off the rest of the peripheral clocks */
- writel(0, &clock_manager_base->per_pll.en);
+ writel(0, socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EN);
/* Put all plls in external bypass */
writel(CLKMGR_MAINPLL_BYPASS_RESET,
- &clock_manager_base->main_pll.bypasss);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSS);
writel(CLKMGR_PERPLL_BYPASS_RESET,
- &clock_manager_base->per_pll.bypasss);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSS);
/*
* Put all plls VCO registers back to reset value.
@@ -657,15 +658,17 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
writel(CLKMGR_MAINPLL_VCO0_RESET |
CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK |
(main_cfg->vco0_psrc << CLKMGR_MAINPLL_VCO0_PSRC_LSB),
- &clock_manager_base->main_pll.vco0);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
writel(CLKMGR_PERPLL_VCO0_RESET |
CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK |
(per_cfg->vco0_psrc << CLKMGR_PERPLL_VCO0_PSRC_LSB),
- &clock_manager_base->per_pll.vco0);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
- writel(CLKMGR_MAINPLL_VCO1_RESET, &clock_manager_base->main_pll.vco1);
- writel(CLKMGR_PERPLL_VCO1_RESET, &clock_manager_base->per_pll.vco1);
+ writel(CLKMGR_MAINPLL_VCO1_RESET,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
+ writel(CLKMGR_PERPLL_VCO1_RESET,
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
/* clear the interrupt register status register */
writel(CLKMGR_CLKMGR_INTR_MAINPLLLOST_SET_MSK |
@@ -676,7 +679,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK |
CLKMGR_CLKMGR_INTR_MAINPLLACHIEVED_SET_MSK |
CLKMGR_CLKMGR_INTR_PERPLLACHIEVED_SET_MSK,
- &clock_manager_base->intr);
+ socfpga_clkmgr_base + CLKMGR_A10_INTR);
/* Program VCO Numerator and Denominator for main PLL */
ramp_required = cm_is_pll_ramp_required(0, main_cfg, per_cfg);
@@ -687,14 +690,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
else if (ramp_required == 2)
pll_ramp_main_hz = CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
- writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
+ writel((main_cfg->vco1_denom <<
+ CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
cm_calc_safe_pll_numer(0, main_cfg, per_cfg,
pll_ramp_main_hz),
- &clock_manager_base->main_pll.vco1);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
} else
- writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
- main_cfg->vco1_numer,
- &clock_manager_base->main_pll.vco1);
+ writel((main_cfg->vco1_denom <<
+ CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
+ main_cfg->vco1_numer,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
/* Program VCO Numerator and Denominator for periph PLL */
ramp_required = cm_is_pll_ramp_required(1, main_cfg, per_cfg);
@@ -707,23 +712,25 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
pll_ramp_periph_hz =
CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
- writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
+ writel((per_cfg->vco1_denom <<
+ CLKMGR_PERPLL_VCO1_DENOM_LSB) |
cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
pll_ramp_periph_hz),
- &clock_manager_base->per_pll.vco1);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
} else
- writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
+ writel((per_cfg->vco1_denom <<
+ CLKMGR_PERPLL_VCO1_DENOM_LSB) |
per_cfg->vco1_numer,
- &clock_manager_base->per_pll.vco1);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
/* Wait for at least 5 us */
udelay(5);
/* Now deassert BGPWRDN and PWRDN */
- clrbits_le32(&clock_manager_base->main_pll.vco0,
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
CLKMGR_MAINPLL_VCO0_BGPWRDN_SET_MSK |
CLKMGR_MAINPLL_VCO0_PWRDN_SET_MSK);
- clrbits_le32(&clock_manager_base->per_pll.vco0,
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
CLKMGR_PERPLL_VCO0_BGPWRDN_SET_MSK |
CLKMGR_PERPLL_VCO0_PWRDN_SET_MSK);
@@ -731,84 +738,90 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
udelay(7);
/* enable the VCO and disable the external regulator to PLL */
- writel((readl(&clock_manager_base->main_pll.vco0) &
+ writel((readl(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0) &
~CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK) |
CLKMGR_MAINPLL_VCO0_EN_SET_MSK,
- &clock_manager_base->main_pll.vco0);
- writel((readl(&clock_manager_base->per_pll.vco0) &
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
+ writel((readl(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0) &
~CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK) |
CLKMGR_PERPLL_VCO0_EN_SET_MSK,
- &clock_manager_base->per_pll.vco0);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
/* setup all the main PLL counter and clock source */
- writel(main_cfg->nocclk,
- SOCFPGA_CLKMGR_ADDRESS + CLKMGR_MAINPLL_NOC_CLK_OFFSET);
- writel(main_cfg->mpuclk,
- SOCFPGA_CLKMGR_ADDRESS + CLKMGR_ALTERAGRP_MPU_CLK_OFFSET);
+ writel(main_cfg->nocclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_NOCCLK);
+ writel(main_cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_MPUCLK);
/* main_emaca_clk divider */
- writel(main_cfg->cntr2clk_cnt, &clock_manager_base->main_pll.cntr2clk);
+ writel(main_cfg->cntr2clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR2CLK);
/* main_emacb_clk divider */
- writel(main_cfg->cntr3clk_cnt, &clock_manager_base->main_pll.cntr3clk);
+ writel(main_cfg->cntr3clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR3CLK);
/* main_emac_ptp_clk divider */
- writel(main_cfg->cntr4clk_cnt, &clock_manager_base->main_pll.cntr4clk);
+ writel(main_cfg->cntr4clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR4CLK);
/* main_gpio_db_clk divider */
- writel(main_cfg->cntr5clk_cnt, &clock_manager_base->main_pll.cntr5clk);
+ writel(main_cfg->cntr5clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR5CLK);
/* main_sdmmc_clk divider */
- writel(main_cfg->cntr6clk_cnt, &clock_manager_base->main_pll.cntr6clk);
+ writel(main_cfg->cntr6clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR6CLK);
/* main_s2f_user0_clk divider */
writel(main_cfg->cntr7clk_cnt |
(main_cfg->cntr7clk_src << CLKMGR_MAINPLL_CNTR7CLK_SRC_LSB),
- &clock_manager_base->main_pll.cntr7clk);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR7CLK);
/* main_s2f_user1_clk divider */
- writel(main_cfg->cntr8clk_cnt, &clock_manager_base->main_pll.cntr8clk);
+ writel(main_cfg->cntr8clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR8CLK);
/* main_hmc_pll_clk divider */
writel(main_cfg->cntr9clk_cnt |
(main_cfg->cntr9clk_src << CLKMGR_MAINPLL_CNTR9CLK_SRC_LSB),
- &clock_manager_base->main_pll.cntr9clk);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR9CLK);
/* main_periph_ref_clk divider */
writel(main_cfg->cntr15clk_cnt,
- &clock_manager_base->main_pll.cntr15clk);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR15CLK);
/* setup all the peripheral PLL counter and clock source */
/* peri_emaca_clk divider */
writel(per_cfg->cntr2clk_cnt |
(per_cfg->cntr2clk_src << CLKMGR_PERPLL_CNTR2CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr2clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR2CLK);
/* peri_emacb_clk divider */
writel(per_cfg->cntr3clk_cnt |
(per_cfg->cntr3clk_src << CLKMGR_PERPLL_CNTR3CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr3clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR3CLK);
/* peri_emac_ptp_clk divider */
writel(per_cfg->cntr4clk_cnt |
(per_cfg->cntr4clk_src << CLKMGR_PERPLL_CNTR4CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr4clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR4CLK);
/* peri_gpio_db_clk divider */
writel(per_cfg->cntr5clk_cnt |
(per_cfg->cntr5clk_src << CLKMGR_PERPLL_CNTR5CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr5clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR5CLK);
/* peri_sdmmc_clk divider */
writel(per_cfg->cntr6clk_cnt |
(per_cfg->cntr6clk_src << CLKMGR_PERPLL_CNTR6CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr6clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR6CLK);
/* peri_s2f_user0_clk divider */
- writel(per_cfg->cntr7clk_cnt, &clock_manager_base->per_pll.cntr7clk);
+ writel(per_cfg->cntr7clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR7CLK);
/* peri_s2f_user1_clk divider */
writel(per_cfg->cntr8clk_cnt |
(per_cfg->cntr8clk_src << CLKMGR_PERPLL_CNTR8CLK_SRC_LSB),
- &clock_manager_base->per_pll.cntr8clk);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR8CLK);
/* peri_hmc_pll_clk divider */
- writel(per_cfg->cntr9clk_cnt, &clock_manager_base->per_pll.cntr9clk);
+ writel(per_cfg->cntr9clk_cnt,
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR9CLK);
/* setup all the external PLL counter */
/* mpu wrapper / external divider */
writel(main_cfg->mpuclk_cnt |
(main_cfg->mpuclk_src << CLKMGR_MAINPLL_MPUCLK_SRC_LSB),
- &clock_manager_base->main_pll.mpuclk);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_MPUCLK);
/* NOC wrapper / external divider */
writel(main_cfg->nocclk_cnt |
(main_cfg->nocclk_src << CLKMGR_MAINPLL_NOCCLK_SRC_LSB),
- &clock_manager_base->main_pll.nocclk);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCCLK);
/* NOC subclock divider such as l4 */
writel(main_cfg->nocdiv_l4mainclk |
(main_cfg->nocdiv_l4mpclk <<
@@ -821,10 +834,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
CLKMGR_MAINPLL_NOCDIV_CSTRACECLK_LSB) |
(main_cfg->nocdiv_cspdbclk <<
CLKMGR_MAINPLL_NOCDIV_CSPDBGCLK_LSB),
- &clock_manager_base->main_pll.nocdiv);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCDIV);
/* gpio_db external divider */
writel(per_cfg->gpiodiv_gpiodbclk,
- &clock_manager_base->per_pll.gpiodiv);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_GPIOFIV);
/* setup the EMAC clock mux select */
writel((per_cfg->emacctl_emac0sel <<
@@ -833,7 +846,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
CLKMGR_PERPLL_EMACCTL_EMAC1SEL_LSB) |
(per_cfg->emacctl_emac2sel <<
CLKMGR_PERPLL_EMACCTL_EMAC2SEL_LSB),
- &clock_manager_base->per_pll.emacctl);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EMACCTL);
/* at this stage, check for PLL lock status */
cm_wait_for_lock(LOCKED_MASK);
@@ -843,33 +856,33 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
* assert/deassert outresetall
*/
/* assert mainpll outresetall */
- setbits_le32(&clock_manager_base->main_pll.vco0,
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
/* assert perpll outresetall */
- setbits_le32(&clock_manager_base->per_pll.vco0,
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
/* de-assert mainpll outresetall */
- clrbits_le32(&clock_manager_base->main_pll.vco0,
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
/* de-assert perpll outresetall */
- clrbits_le32(&clock_manager_base->per_pll.vco0,
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
/* Take all PLLs out of bypass when boot mode is cleared. */
/* release mainpll from bypass */
writel(CLKMGR_MAINPLL_BYPASS_RESET,
- &clock_manager_base->main_pll.bypassr);
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSR);
/* wait till Clock Manager is not busy */
cm_wait_for_fsm();
/* release perpll from bypass */
writel(CLKMGR_PERPLL_BYPASS_RESET,
- &clock_manager_base->per_pll.bypassr);
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSR);
/* wait till Clock Manager is not busy */
cm_wait_for_fsm();
/* clear boot mode */
- clrbits_le32(&clock_manager_base->ctrl,
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
CLKMGR_CLKMGR_CTL_BOOTMOD_SET_MSK);
/* wait till Clock Manager is not busy */
cm_wait_for_fsm();
@@ -882,9 +895,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
/* Now ungate non-hw-managed clocks */
writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
- CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
- &clock_manager_base->main_pll.ens);
- writel(CLKMGR_PERPLL_EN_RESET, &clock_manager_base->per_pll.ens);
+ CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
+ socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENS);
+ writel(CLKMGR_PERPLL_EN_RESET,
+ socfpga_clkmgr_base + CLKMGR_A10_PERPLL_ENS);
/* Clear the loss lock and slip bits as they might set during
clock reconfiguration */
@@ -894,14 +908,14 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
CLKMGR_CLKMGR_INTR_PERPLLRFSLIP_SET_MSK |
CLKMGR_CLKMGR_INTR_MAINPLLFBSLIP_SET_MSK |
CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK,
- &clock_manager_base->intr);
+ socfpga_clkmgr_base + CLKMGR_A10_INTR);
return 0;
}
static void cm_use_intosc(void)
{
- setbits_le32(&clock_manager_base->ctrl,
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
CLKMGR_CLKMGR_CTL_BOOTCLK_INTOSC_SET_MSK);
}
diff --git a/arch/arm/mach-socfpga/clock_manager_gen5.c b/arch/arm/mach-socfpga/clock_manager_gen5.c
index 3a64600861..c9990af46f 100644
--- a/arch/arm/mach-socfpga/clock_manager_gen5.c
+++ b/arch/arm/mach-socfpga/clock_manager_gen5.c
@@ -9,23 +9,20 @@
#include <asm/arch/clock_manager.h>
#include <wait_bit.h>
-static const struct socfpga_clock_manager *clock_manager_base =
- (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
-
/*
* function to write the bypass register which requires a poll of the
* busy bit
*/
static void cm_write_bypass(u32 val)
{
- writel(val, &clock_manager_base->bypass);
+ writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_BYPASS);
cm_wait_for_fsm();
}
/* function to write the ctrl register which requires a poll of the busy bit */
static void cm_write_ctrl(u32 val)
{
- writel(val, &clock_manager_base->ctrl);
+ writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_CTRL);
cm_wait_for_fsm();
}
@@ -79,8 +76,8 @@ int cm_basic_init(const struct cm_config * const cfg)
* gatting off the rest of the periperal clocks.
*/
writel(~CLKMGR_PERPLLGRP_EN_NANDCLK_MASK &
- readl(&clock_manager_base->per_pll.en),
- &clock_manager_base->per_pll.en);
+ readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN),
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
/* DO NOT GATE OFF DEBUG CLOCKS & BRIDGE CLOCKS */
writel(CLKMGR_MAINPLLGRP_EN_DBGTIMERCLK_MASK |
@@ -89,12 +86,12 @@ int cm_basic_init(const struct cm_config * const cfg)
CLKMGR_MAINPLLGRP_EN_DBGATCLK_MASK |
CLKMGR_MAINPLLGRP_EN_S2FUSER0CLK_MASK |
CLKMGR_MAINPLLGRP_EN_L4MPCLK_MASK,
- &clock_manager_base->main_pll.en);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
- writel(0, &clock_manager_base->sdr_pll.en);
+ writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
/* now we can gate off the rest of the peripheral clocks */
- writel(0, &clock_manager_base->per_pll.en);
+ writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
/* Put all plls in bypass */
cm_write_bypass(CLKMGR_BYPASS_PERPLL | CLKMGR_BYPASS_SDRPLL |
@@ -103,13 +100,13 @@ int cm_basic_init(const struct cm_config * const cfg)
/* Put all plls VCO registers back to reset value. */
writel(CLKMGR_MAINPLLGRP_VCO_RESET_VALUE &
~CLKMGR_MAINPLLGRP_VCO_REGEXTSEL_MASK,
- &clock_manager_base->main_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
writel(CLKMGR_PERPLLGRP_VCO_RESET_VALUE &
~CLKMGR_PERPLLGRP_VCO_REGEXTSEL_MASK,
- &clock_manager_base->per_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
writel(CLKMGR_SDRPLLGRP_VCO_RESET_VALUE &
~CLKMGR_SDRPLLGRP_VCO_REGEXTSEL_MASK,
- &clock_manager_base->sdr_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/*
* The clocks to the flash devices and the L4_MAIN clocks can
@@ -119,23 +116,26 @@ int cm_basic_init(const struct cm_config * const cfg)
* after exiting safe mode but before ungating the clocks.
*/
writel(CLKMGR_PERPLLGRP_SRC_RESET_VALUE,
- &clock_manager_base->per_pll.src);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
writel(CLKMGR_MAINPLLGRP_L4SRC_RESET_VALUE,
- &clock_manager_base->main_pll.l4src);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
/* read back for the required 5 us delay. */
- readl(&clock_manager_base->main_pll.vco);
- readl(&clock_manager_base->per_pll.vco);
- readl(&clock_manager_base->sdr_pll.vco);
+ readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
+ readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
+ readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/*
* We made sure bgpwr down was assert for 5 us. Now deassert BG PWR DN
* with numerator and denominator.
*/
- writel(cfg->main_vco_base, &clock_manager_base->main_pll.vco);
- writel(cfg->peri_vco_base, &clock_manager_base->per_pll.vco);
- writel(cfg->sdram_vco_base, &clock_manager_base->sdr_pll.vco);
+ writel(cfg->main_vco_base,
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
+ writel(cfg->peri_vco_base,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
+ writel(cfg->sdram_vco_base,
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/*
* Time starts here. Must wait 7 us from
@@ -144,44 +144,53 @@ int cm_basic_init(const struct cm_config * const cfg)
end = timer_get_us() + 7;
/* main mpu */
- writel(cfg->mpuclk, &clock_manager_base->main_pll.mpuclk);
+ writel(cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
/* altera group mpuclk */
- writel(cfg->altera_grp_mpuclk, &clock_manager_base->altera.mpuclk);
+ writel(cfg->altera_grp_mpuclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
/* main main clock */
- writel(cfg->mainclk, &clock_manager_base->main_pll.mainclk);
+ writel(cfg->mainclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
/* main for dbg */
- writel(cfg->dbgatclk, &clock_manager_base->main_pll.dbgatclk);
+ writel(cfg->dbgatclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGATCLK);
/* main for cfgs2fuser0clk */
writel(cfg->cfg2fuser0clk,
- &clock_manager_base->main_pll.cfgs2fuser0clk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK);
/* Peri emac0 50 MHz default to RMII */
- writel(cfg->emac0clk, &clock_manager_base->per_pll.emac0clk);
+ writel(cfg->emac0clk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC0CLK);
/* Peri emac1 50 MHz default to RMII */
- writel(cfg->emac1clk, &clock_manager_base->per_pll.emac1clk);
+ writel(cfg->emac1clk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC1CLK);
/* Peri QSPI */
- writel(cfg->mainqspiclk, &clock_manager_base->main_pll.mainqspiclk);
+ writel(cfg->mainqspiclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
- writel(cfg->perqspiclk, &clock_manager_base->per_pll.perqspiclk);
+ writel(cfg->perqspiclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERQSPICLK);
/* Peri pernandsdmmcclk */
writel(cfg->mainnandsdmmcclk,
- &clock_manager_base->main_pll.mainnandsdmmcclk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
writel(cfg->pernandsdmmcclk,
- &clock_manager_base->per_pll.pernandsdmmcclk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
/* Peri perbaseclk */
- writel(cfg->perbaseclk, &clock_manager_base->per_pll.perbaseclk);
+ writel(cfg->perbaseclk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
/* Peri s2fuser1clk */
- writel(cfg->s2fuser1clk, &clock_manager_base->per_pll.s2fuser1clk);
+ writel(cfg->s2fuser1clk,
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_S2FUSER1CLK);
/* 7 us must have elapsed before we can enable the VCO */
while (timer_get_us() < end)
@@ -190,101 +199,106 @@ int cm_basic_init(const struct cm_config * const cfg)
/* Enable vco */
/* main pll vco */
writel(cfg->main_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
- &clock_manager_base->main_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
/* periferal pll */
writel(cfg->peri_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
- &clock_manager_base->per_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
/* sdram pll vco */
writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
- &clock_manager_base->sdr_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/* L3 MP and L3 SP */
- writel(cfg->maindiv, &clock_manager_base->main_pll.maindiv);
+ writel(cfg->maindiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
- writel(cfg->dbgdiv, &clock_manager_base->main_pll.dbgdiv);
+ writel(cfg->dbgdiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGDIV);
- writel(cfg->tracediv, &clock_manager_base->main_pll.tracediv);
+ writel(cfg->tracediv,
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_TRACEDIV);
/* L4 MP, L4 SP, can0, and can1 */
- writel(cfg->perdiv, &clock_manager_base->per_pll.div);
+ writel(cfg->perdiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_DIV);
- writel(cfg->gpiodiv, &clock_manager_base->per_pll.gpiodiv);
+ writel(cfg->gpiodiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_GPIODIV);
cm_wait_for_lock(LOCKED_MASK);
/* write the sdram clock counters before toggling outreset all */
writel(cfg->ddrdqsclk & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK,
- &clock_manager_base->sdr_pll.ddrdqsclk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
writel(cfg->ddr2xdqsclk & CLKMGR_SDRPLLGRP_DDR2XDQSCLK_CNT_MASK,
- &clock_manager_base->sdr_pll.ddr2xdqsclk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK);
writel(cfg->ddrdqclk & CLKMGR_SDRPLLGRP_DDRDQCLK_CNT_MASK,
- &clock_manager_base->sdr_pll.ddrdqclk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQCLK);
writel(cfg->s2fuser2clk & CLKMGR_SDRPLLGRP_S2FUSER2CLK_CNT_MASK,
- &clock_manager_base->sdr_pll.s2fuser2clk);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_S2FUSER2CLK);
/*
* after locking, but before taking out of bypass
* assert/deassert outresetall
*/
- u32 mainvco = readl(&clock_manager_base->main_pll.vco);
+ u32 mainvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
/* assert main outresetall */
writel(mainvco | CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
- &clock_manager_base->main_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
- u32 periphvco = readl(&clock_manager_base->per_pll.vco);
+ u32 periphvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
/* assert pheriph outresetall */
writel(periphvco | CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
- &clock_manager_base->per_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
/* assert sdram outresetall */
- writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN|
- CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
- &clock_manager_base->sdr_pll.vco);
+ writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN |
+ CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/* deassert main outresetall */
writel(mainvco & ~CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
- &clock_manager_base->main_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
/* deassert pheriph outresetall */
writel(periphvco & ~CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
- &clock_manager_base->per_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
/* deassert sdram outresetall */
writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
- &clock_manager_base->sdr_pll.vco);
+ socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
/*
* now that we've toggled outreset all, all the clocks
* are aligned nicely; so we can change any phase.
*/
ret = cm_write_with_phase(cfg->ddrdqsclk,
- &clock_manager_base->sdr_pll.ddrdqsclk,
+ (const void *)(socfpga_clkmgr_base +
+ CLKMGR_GEN5_SDRPLL_DDRDQSCLK),
CLKMGR_SDRPLLGRP_DDRDQSCLK_PHASE_MASK);
if (ret)
return ret;
/* SDRAM DDR2XDQSCLK */
ret = cm_write_with_phase(cfg->ddr2xdqsclk,
- &clock_manager_base->sdr_pll.ddr2xdqsclk,
+ (const void *)(socfpga_clkmgr_base +
+ CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK),
CLKMGR_SDRPLLGRP_DDR2XDQSCLK_PHASE_MASK);
if (ret)
return ret;
ret = cm_write_with_phase(cfg->ddrdqclk,
- &clock_manager_base->sdr_pll.ddrdqclk,
+ (const void *)(socfpga_clkmgr_base +
+ CLKMGR_GEN5_SDRPLL_DDRDQCLK),
CLKMGR_SDRPLLGRP_DDRDQCLK_PHASE_MASK);
if (ret)
return ret;
ret = cm_write_with_phase(cfg->s2fuser2clk,
- &clock_manager_base->sdr_pll.s2fuser2clk,
+ (const void *)(socfpga_clkmgr_base +
+ CLKMGR_GEN5_SDRPLL_S2FUSER2CLK),
CLKMGR_SDRPLLGRP_S2FUSER2CLK_PHASE_MASK);
if (ret)
return ret;
@@ -293,24 +307,26 @@ int cm_basic_init(const struct cm_config * const cfg)
cm_write_bypass(0);
/* clear safe mode */
- cm_write_ctrl(readl(&clock_manager_base->ctrl) | CLKMGR_CTRL_SAFEMODE);
+ cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_GEN5_CTRL) |
+ CLKMGR_CTRL_SAFEMODE);
/*
* now that safe mode is clear with clocks gated
* it safe to change the source mux for the flashes the the L4_MAIN
*/
- writel(cfg->persrc, &clock_manager_base->per_pll.src);
- writel(cfg->l4src, &clock_manager_base->main_pll.l4src);
+ writel(cfg->persrc, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
+ writel(cfg->l4src, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
/* Now ungate non-hw-managed clocks */
- writel(~0, &clock_manager_base->main_pll.en);
- writel(~0, &clock_manager_base->per_pll.en);
- writel(~0, &clock_manager_base->sdr_pll.en);
+ writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
+ writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
+ writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
/* Clear the loss of lock bits (write 1 to clear) */
- writel(CLKMGR_INTER_SDRPLLLOST_MASK | CLKMGR_INTER_PERPLLLOST_MASK |
- CLKMGR_INTER_MAINPLLLOST_MASK,
- &clock_manager_base->inter);
+ writel(CLKMGR_INTER_SDRPLLLOST_MASK |
+ CLKMGR_INTER_PERPLLLOST_MASK |
+ CLKMGR_INTER_MAINPLLLOST_MASK,
+ socfpga_clkmgr_base + CLKMGR_GEN5_INTER);
return 0;
}
@@ -320,7 +336,7 @@ static unsigned int cm_get_main_vco_clk_hz(void)
u32 reg, clock;
/* get the main VCO clock */
- reg = readl(&clock_manager_base->main_pll.vco);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
clock = cm_get_osc_clk_hz(1);
clock /= ((reg & CLKMGR_MAINPLLGRP_VCO_DENOM_MASK) >>
CLKMGR_MAINPLLGRP_VCO_DENOM_OFFSET) + 1;
@@ -335,7 +351,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
u32 reg, clock = 0;
/* identify PER PLL clock source */
- reg = readl(&clock_manager_base->per_pll.vco);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
reg = (reg & CLKMGR_PERPLLGRP_VCO_SSRC_MASK) >>
CLKMGR_PERPLLGRP_VCO_SSRC_OFFSET;
if (reg == CLKMGR_VCO_SSRC_EOSC1)
@@ -346,7 +362,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
clock = cm_get_f2s_per_ref_clk_hz();
/* get the PER VCO clock */
- reg = readl(&clock_manager_base->per_pll.vco);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
clock /= ((reg & CLKMGR_PERPLLGRP_VCO_DENOM_MASK) >>
CLKMGR_PERPLLGRP_VCO_DENOM_OFFSET) + 1;
clock *= ((reg & CLKMGR_PERPLLGRP_VCO_NUMER_MASK) >>
@@ -362,9 +378,9 @@ unsigned long cm_get_mpu_clk_hz(void)
clock = cm_get_main_vco_clk_hz();
/* get the MPU clock */
- reg = readl(&clock_manager_base->altera.mpuclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
clock /= (reg + 1);
- reg = readl(&clock_manager_base->main_pll.mpuclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
clock /= (reg + 1);
return clock;
}
@@ -374,7 +390,7 @@ unsigned long cm_get_sdram_clk_hz(void)
u32 reg, clock = 0;
/* identify SDRAM PLL clock source */
- reg = readl(&clock_manager_base->sdr_pll.vco);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
reg = (reg & CLKMGR_SDRPLLGRP_VCO_SSRC_MASK) >>
CLKMGR_SDRPLLGRP_VCO_SSRC_OFFSET;
if (reg == CLKMGR_VCO_SSRC_EOSC1)
@@ -385,14 +401,14 @@ unsigned long cm_get_sdram_clk_hz(void)
clock = cm_get_f2s_sdr_ref_clk_hz();
/* get the SDRAM VCO clock */
- reg = readl(&clock_manager_base->sdr_pll.vco);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
clock /= ((reg & CLKMGR_SDRPLLGRP_VCO_DENOM_MASK) >>
CLKMGR_SDRPLLGRP_VCO_DENOM_OFFSET) + 1;
clock *= ((reg & CLKMGR_SDRPLLGRP_VCO_NUMER_MASK) >>
CLKMGR_SDRPLLGRP_VCO_NUMER_OFFSET) + 1;
/* get the SDRAM (DDR_DQS) clock */
- reg = readl(&clock_manager_base->sdr_pll.ddrdqsclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
reg = (reg & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK) >>
CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_OFFSET;
clock /= (reg + 1);
@@ -405,7 +421,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
u32 reg, clock = 0;
/* identify the source of L4 SP clock */
- reg = readl(&clock_manager_base->main_pll.l4src);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
reg = (reg & CLKMGR_MAINPLLGRP_L4SRC_L4SP) >>
CLKMGR_MAINPLLGRP_L4SRC_L4SP_OFFSET;
@@ -413,20 +429,21 @@ unsigned int cm_get_l4_sp_clk_hz(void)
clock = cm_get_main_vco_clk_hz();
/* get the clock prior L4 SP divider (main clk) */
- reg = readl(&clock_manager_base->altera.mainclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MAINCLK);
clock /= (reg + 1);
- reg = readl(&clock_manager_base->main_pll.mainclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
clock /= (reg + 1);
} else if (reg == CLKMGR_L4_SP_CLK_SRC_PERPLL) {
clock = cm_get_per_vco_clk_hz();
/* get the clock prior L4 SP divider (periph_base_clk) */
- reg = readl(&clock_manager_base->per_pll.perbaseclk);
+ reg = readl(socfpga_clkmgr_base +
+ CLKMGR_GEN5_PERPLL_PERBASECLK);
clock /= (reg + 1);
}
/* get the L4 SP clock which supplied to UART */
- reg = readl(&clock_manager_base->main_pll.maindiv);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
reg = (reg & CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_MASK) >>
CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_OFFSET;
clock = clock / (1 << reg);
@@ -439,7 +456,7 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
u32 reg, clock = 0;
/* identify the source of MMC clock */
- reg = readl(&clock_manager_base->per_pll.src);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
reg = (reg & CLKMGR_PERPLLGRP_SRC_SDMMC_MASK) >>
CLKMGR_PERPLLGRP_SRC_SDMMC_OFFSET;
@@ -449,13 +466,15 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
clock = cm_get_main_vco_clk_hz();
/* get the SDMMC clock */
- reg = readl(&clock_manager_base->main_pll.mainnandsdmmcclk);
+ reg = readl(socfpga_clkmgr_base +
+ CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
clock /= (reg + 1);
} else if (reg == CLKMGR_SDMMC_CLK_SRC_PER) {
clock = cm_get_per_vco_clk_hz();
/* get the SDMMC clock */
- reg = readl(&clock_manager_base->per_pll.pernandsdmmcclk);
+ reg = readl(socfpga_clkmgr_base +
+ CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
clock /= (reg + 1);
}
@@ -469,7 +488,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
u32 reg, clock = 0;
/* identify the source of QSPI clock */
- reg = readl(&clock_manager_base->per_pll.src);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
reg = (reg & CLKMGR_PERPLLGRP_SRC_QSPI_MASK) >>
CLKMGR_PERPLLGRP_SRC_QSPI_OFFSET;
@@ -479,13 +498,15 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
clock = cm_get_main_vco_clk_hz();
/* get the qspi clock */
- reg = readl(&clock_manager_base->main_pll.mainqspiclk);
+ reg = readl(socfpga_clkmgr_base +
+ CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
clock /= (reg + 1);
} else if (reg == CLKMGR_QSPI_CLK_SRC_PER) {
clock = cm_get_per_vco_clk_hz();
/* get the qspi clock */
- reg = readl(&clock_manager_base->per_pll.perqspiclk);
+ reg = readl(socfpga_clkmgr_base +
+ CLKMGR_GEN5_PERPLL_PERQSPICLK);
clock /= (reg + 1);
}
@@ -499,7 +520,7 @@ unsigned int cm_get_spi_controller_clk_hz(void)
clock = cm_get_per_vco_clk_hz();
/* get the clock prior L4 SP divider (periph_base_clk) */
- reg = readl(&clock_manager_base->per_pll.perbaseclk);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
clock /= (reg + 1);
return clock;
diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
index 6cbf07ac6f..c6269701f0 100644
--- a/arch/arm/mach-socfpga/clock_manager_s10.c
+++ b/arch/arm/mach-socfpga/clock_manager_s10.c
@@ -12,29 +12,26 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_clock_manager *clock_manager_base =
- (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
-
/*
* function to write the bypass register which requires a poll of the
* busy bit
*/
static void cm_write_bypass_mainpll(u32 val)
{
- writel(val, &clock_manager_base->main_pll.bypass);
+ writel(val, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_BYPASS);
cm_wait_for_fsm();
}
static void cm_write_bypass_perpll(u32 val)
{
- writel(val, &clock_manager_base->per_pll.bypass);
+ writel(val, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_BYPASS);
cm_wait_for_fsm();
}
/* function to write the ctrl register which requires a poll of the busy bit */
static void cm_write_ctrl(u32 val)
{
- writel(val, &clock_manager_base->ctrl);
+ writel(val, socfpga_clkmgr_base + CLKMGR_S10_CTRL);
cm_wait_for_fsm();
}
@@ -66,12 +63,17 @@ void cm_basic_init(const struct cm_config * const cfg)
writel((cfg->main_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
~CLKMGR_PLLGLOB_RST_MASK),
- &clock_manager_base->main_pll.pllglob);
- writel(cfg->main_pll_fdbck, &clock_manager_base->main_pll.fdbck);
- writel(vcocalib, &clock_manager_base->main_pll.vcocalib);
- writel(cfg->main_pll_pllc0, &clock_manager_base->main_pll.pllc0);
- writel(cfg->main_pll_pllc1, &clock_manager_base->main_pll.pllc1);
- writel(cfg->main_pll_nocdiv, &clock_manager_base->main_pll.nocdiv);
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
+ writel(cfg->main_pll_fdbck,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
+ writel(vcocalib,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_VCOCALIB);
+ writel(cfg->main_pll_pllc0,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC0);
+ writel(cfg->main_pll_pllc1,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC1);
+ writel(cfg->main_pll_nocdiv,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCDIV);
/* setup peripheral PLL dividers */
/* calculate the vcocalib value */
@@ -88,18 +90,23 @@ void cm_basic_init(const struct cm_config * const cfg)
writel((cfg->per_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
~CLKMGR_PLLGLOB_RST_MASK),
- &clock_manager_base->per_pll.pllglob);
- writel(cfg->per_pll_fdbck, &clock_manager_base->per_pll.fdbck);
- writel(vcocalib, &clock_manager_base->per_pll.vcocalib);
- writel(cfg->per_pll_pllc0, &clock_manager_base->per_pll.pllc0);
- writel(cfg->per_pll_pllc1, &clock_manager_base->per_pll.pllc1);
- writel(cfg->per_pll_emacctl, &clock_manager_base->per_pll.emacctl);
- writel(cfg->per_pll_gpiodiv, &clock_manager_base->per_pll.gpiodiv);
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
+ writel(cfg->per_pll_fdbck,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
+ writel(vcocalib, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_VCOCALIB);
+ writel(cfg->per_pll_pllc0,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC0);
+ writel(cfg->per_pll_pllc1,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1);
+ writel(cfg->per_pll_emacctl,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EMACCTL);
+ writel(cfg->per_pll_gpiodiv,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_GPIODIV);
/* Take both PLL out of reset and power up */
- setbits_le32(&clock_manager_base->main_pll.pllglob,
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB,
CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
- setbits_le32(&clock_manager_base->per_pll.pllglob,
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB,
CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
#define LOCKED_MASK \
@@ -113,66 +120,85 @@ void cm_basic_init(const struct cm_config * const cfg)
* only take effect upon value change, we shall set a maximum value as
* default value.
*/
- writel(0xff, &clock_manager_base->main_pll.mpuclk);
- writel(0xff, &clock_manager_base->main_pll.nocclk);
- writel(0xff, &clock_manager_base->main_pll.cntr2clk);
- writel(0xff, &clock_manager_base->main_pll.cntr3clk);
- writel(0xff, &clock_manager_base->main_pll.cntr4clk);
- writel(0xff, &clock_manager_base->main_pll.cntr5clk);
- writel(0xff, &clock_manager_base->main_pll.cntr6clk);
- writel(0xff, &clock_manager_base->main_pll.cntr7clk);
- writel(0xff, &clock_manager_base->main_pll.cntr8clk);
- writel(0xff, &clock_manager_base->main_pll.cntr9clk);
- writel(0xff, &clock_manager_base->per_pll.cntr2clk);
- writel(0xff, &clock_manager_base->per_pll.cntr3clk);
- writel(0xff, &clock_manager_base->per_pll.cntr4clk);
- writel(0xff, &clock_manager_base->per_pll.cntr5clk);
- writel(0xff, &clock_manager_base->per_pll.cntr6clk);
- writel(0xff, &clock_manager_base->per_pll.cntr7clk);
- writel(0xff, &clock_manager_base->per_pll.cntr8clk);
- writel(0xff, &clock_manager_base->per_pll.cntr9clk);
-
- writel(cfg->main_pll_mpuclk, &clock_manager_base->main_pll.mpuclk);
- writel(cfg->main_pll_nocclk, &clock_manager_base->main_pll.nocclk);
- writel(cfg->main_pll_cntr2clk, &clock_manager_base->main_pll.cntr2clk);
- writel(cfg->main_pll_cntr3clk, &clock_manager_base->main_pll.cntr3clk);
- writel(cfg->main_pll_cntr4clk, &clock_manager_base->main_pll.cntr4clk);
- writel(cfg->main_pll_cntr5clk, &clock_manager_base->main_pll.cntr5clk);
- writel(cfg->main_pll_cntr6clk, &clock_manager_base->main_pll.cntr6clk);
- writel(cfg->main_pll_cntr7clk, &clock_manager_base->main_pll.cntr7clk);
- writel(cfg->main_pll_cntr8clk, &clock_manager_base->main_pll.cntr8clk);
- writel(cfg->main_pll_cntr9clk, &clock_manager_base->main_pll.cntr9clk);
- writel(cfg->per_pll_cntr2clk, &clock_manager_base->per_pll.cntr2clk);
- writel(cfg->per_pll_cntr3clk, &clock_manager_base->per_pll.cntr3clk);
- writel(cfg->per_pll_cntr4clk, &clock_manager_base->per_pll.cntr4clk);
- writel(cfg->per_pll_cntr5clk, &clock_manager_base->per_pll.cntr5clk);
- writel(cfg->per_pll_cntr6clk, &clock_manager_base->per_pll.cntr6clk);
- writel(cfg->per_pll_cntr7clk, &clock_manager_base->per_pll.cntr7clk);
- writel(cfg->per_pll_cntr8clk, &clock_manager_base->per_pll.cntr8clk);
- writel(cfg->per_pll_cntr9clk, &clock_manager_base->per_pll.cntr9clk);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
+ writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
+
+ writel(cfg->main_pll_mpuclk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
+ writel(cfg->main_pll_nocclk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
+ writel(cfg->main_pll_cntr2clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
+ writel(cfg->main_pll_cntr3clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
+ writel(cfg->main_pll_cntr4clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
+ writel(cfg->main_pll_cntr5clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
+ writel(cfg->main_pll_cntr6clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
+ writel(cfg->main_pll_cntr7clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
+ writel(cfg->main_pll_cntr8clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
+ writel(cfg->main_pll_cntr9clk,
+ socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
+ writel(cfg->per_pll_cntr2clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
+ writel(cfg->per_pll_cntr3clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
+ writel(cfg->per_pll_cntr4clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
+ writel(cfg->per_pll_cntr5clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
+ writel(cfg->per_pll_cntr6clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
+ writel(cfg->per_pll_cntr7clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
+ writel(cfg->per_pll_cntr8clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
+ writel(cfg->per_pll_cntr9clk,
+ socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
/* Take all PLLs out of bypass */
cm_write_bypass_mainpll(0);
cm_write_bypass_perpll(0);
/* clear safe mode / out of boot mode */
- cm_write_ctrl(readl(&clock_manager_base->ctrl)
- & ~(CLKMGR_CTRL_SAFEMODE));
+ cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_S10_CTRL) &
+ ~(CLKMGR_CTRL_SAFEMODE));
/* Now ungate non-hw-managed clocks */
- writel(~0, &clock_manager_base->main_pll.en);
- writel(~0, &clock_manager_base->per_pll.en);
+ writel(~0, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_EN);
+ writel(~0, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EN);
/* Clear the loss of lock bits (write 1 to clear) */
- writel(CLKMGR_INTER_PERPLLLOST_MASK | CLKMGR_INTER_MAINPLLLOST_MASK,
- &clock_manager_base->intrclr);
+ writel(CLKMGR_INTER_PERPLLLOST_MASK |
+ CLKMGR_INTER_MAINPLLLOST_MASK,
+ socfpga_clkmgr_base + CLKMGR_S10_INTRCLR);
}
static unsigned long cm_get_main_vco_clk_hz(void)
{
unsigned long fref, refdiv, mdiv, reg, vco;
- reg = readl(&clock_manager_base->main_pll.pllglob);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
CLKMGR_PLLGLOB_VCO_PSRC_MASK;
@@ -191,7 +217,7 @@ static unsigned long cm_get_main_vco_clk_hz(void)
refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
CLKMGR_PLLGLOB_REFCLKDIV_MASK;
- reg = readl(&clock_manager_base->main_pll.fdbck);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
vco = fref / refdiv;
@@ -203,7 +229,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
{
unsigned long fref, refdiv, mdiv, reg, vco;
- reg = readl(&clock_manager_base->per_pll.pllglob);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
CLKMGR_PLLGLOB_VCO_PSRC_MASK;
@@ -222,7 +248,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
CLKMGR_PLLGLOB_REFCLKDIV_MASK;
- reg = readl(&clock_manager_base->per_pll.fdbck);
+ reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
vco = fref / refdiv;
@@ -232,20 +258,23 @@ static unsigned long cm_get_per_vco_clk_hz(void)
unsigned long cm_get_mpu_clk_hz(void)
{
- unsigned long clock = readl(&clock_manager_base->main_pll.mpuclk);
+ unsigned long clock = readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_MPUCLK);
clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
switch (clock) {
case CLKMGR_CLKSRC_MAIN:
clock = cm_get_main_vco_clk_hz();
- clock /= (readl(&clock_manager_base->main_pll.pllc0) &
+ clock /= (readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_PLLC0) &
CLKMGR_PLLC0_DIV_MASK);
break;
case CLKMGR_CLKSRC_PER:
clock = cm_get_per_vco_clk_hz();
- clock /= (readl(&clock_manager_base->per_pll.pllc0) &
+ clock /= (readl(socfpga_clkmgr_base +
+ CLKMGR_S10_PERPLL_PLLC0) &
CLKMGR_CLKCNT_MSK);
break;
@@ -262,27 +291,28 @@ unsigned long cm_get_mpu_clk_hz(void)
break;
}
- clock /= 1 + (readl(&clock_manager_base->main_pll.mpuclk) &
- CLKMGR_CLKCNT_MSK);
+ clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK) &
+ CLKMGR_CLKCNT_MSK);
return clock;
}
unsigned int cm_get_l3_main_clk_hz(void)
{
- u32 clock = readl(&clock_manager_base->main_pll.nocclk);
+ u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
switch (clock) {
case CLKMGR_CLKSRC_MAIN:
clock = cm_get_main_vco_clk_hz();
- clock /= (readl(&clock_manager_base->main_pll.pllc1) &
+ clock /= (readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_PLLC1) &
CLKMGR_PLLC0_DIV_MASK);
break;
case CLKMGR_CLKSRC_PER:
clock = cm_get_per_vco_clk_hz();
- clock /= (readl(&clock_manager_base->per_pll.pllc1) &
+ clock /= (readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1) &
CLKMGR_CLKCNT_MSK);
break;
@@ -299,28 +329,30 @@ unsigned int cm_get_l3_main_clk_hz(void)
break;
}
- clock /= 1 + (readl(&clock_manager_base->main_pll.nocclk) &
+ clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK) &
CLKMGR_CLKCNT_MSK);
return clock;
}
unsigned int cm_get_mmc_controller_clk_hz(void)
{
- u32 clock = readl(&clock_manager_base->per_pll.cntr6clk);
+ u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
switch (clock) {
case CLKMGR_CLKSRC_MAIN:
clock = cm_get_l3_main_clk_hz();
- clock /= 1 + (readl(&clock_manager_base->main_pll.cntr6clk) &
- CLKMGR_CLKCNT_MSK);
+ clock /= 1 + (readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_CNTR6CLK) &
+ CLKMGR_CLKCNT_MSK);
break;
case CLKMGR_CLKSRC_PER:
clock = cm_get_l3_main_clk_hz();
- clock /= 1 + (readl(&clock_manager_base->per_pll.cntr6clk) &
- CLKMGR_CLKCNT_MSK);
+ clock /= 1 + (readl(socfpga_clkmgr_base +
+ CLKMGR_S10_PERPLL_CNTR6CLK) &
+ CLKMGR_CLKCNT_MSK);
break;
case CLKMGR_CLKSRC_OSC1:
@@ -342,8 +374,9 @@ unsigned int cm_get_l4_sp_clk_hz(void)
{
u32 clock = cm_get_l3_main_clk_hz();
- clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
- CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
+ clock /= (1 << ((readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_NOCDIV) >>
+ CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
return clock;
}
@@ -356,8 +389,9 @@ unsigned int cm_get_spi_controller_clk_hz(void)
{
u32 clock = cm_get_l3_main_clk_hz();
- clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
- CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
+ clock /= (1 << ((readl(socfpga_clkmgr_base +
+ CLKMGR_S10_MAINPLL_NOCDIV) >>
+ CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
return clock;
}
diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager.h b/arch/arm/mach-socfpga/include/mach/clock_manager.h
index dd80e3a767..4f9d10dd78 100644
--- a/arch/arm/mach-socfpga/include/mach/clock_manager.h
+++ b/arch/arm/mach-socfpga/include/mach/clock_manager.h
@@ -6,6 +6,8 @@
#ifndef _CLOCK_MANAGER_H_
#define _CLOCK_MANAGER_H_
+extern phys_addr_t socfpga_clkmgr_base;
+
#ifndef __ASSEMBLER__
void cm_wait_for_lock(u32 mask);
int cm_wait_for_fsm(void);
diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
index de8c22540f..52b579e6e1 100644
--- a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
+++ b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
@@ -8,86 +8,57 @@
#ifndef __ASSEMBLER__
-struct socfpga_clock_manager_main_pll {
- u32 vco0;
- u32 vco1;
- u32 en;
- u32 ens;
- u32 enr;
- u32 bypass;
- u32 bypasss;
- u32 bypassr;
- u32 mpuclk;
- u32 nocclk;
- u32 cntr2clk;
- u32 cntr3clk;
- u32 cntr4clk;
- u32 cntr5clk;
- u32 cntr6clk;
- u32 cntr7clk;
- u32 cntr8clk;
- u32 cntr9clk;
- u32 pad_0x48_0x5b[5];
- u32 cntr15clk;
- u32 outrst;
- u32 outrststat;
- u32 nocdiv;
- u32 pad_0x6c_0x80[5];
-};
-
-struct socfpga_clock_manager_per_pll {
- u32 vco0;
- u32 vco1;
- u32 en;
- u32 ens;
- u32 enr;
- u32 bypass;
- u32 bypasss;
- u32 bypassr;
- u32 pad_0x20_0x27[2];
- u32 cntr2clk;
- u32 cntr3clk;
- u32 cntr4clk;
- u32 cntr5clk;
- u32 cntr6clk;
- u32 cntr7clk;
- u32 cntr8clk;
- u32 cntr9clk;
- u32 pad_0x48_0x5f[6];
- u32 outrst;
- u32 outrststat;
- u32 emacctl;
- u32 gpiodiv;
- u32 pad_0x70_0x80[4];
-};
-
-struct socfpga_clock_manager_altera {
- u32 mpuclk;
- u32 nocclk;
- u32 mainmisc0;
- u32 mainmisc1;
- u32 perimisc0;
- u32 perimisc1;
-};
-
-struct socfpga_clock_manager {
- /* clkmgr */
- u32 ctrl;
- u32 intr;
- u32 intrs;
- u32 intrr;
- u32 intren;
- u32 intrens;
- u32 intrenr;
- u32 stat;
- u32 testioctrl;
- u32 _pad_0x24_0x40[7];
- /* mainpllgrp */
- struct socfpga_clock_manager_main_pll main_pll;
- /* perpllgrp */
- struct socfpga_clock_manager_per_pll per_pll;
- struct socfpga_clock_manager_altera altera;
-};
+/* Clock manager group */
+#define CLKMGR_A10_CTRL 0
+#define CLKMGR_A10_INTR 4
+#define CLKMGR_A10_STAT 0x1c
+/* MainPLL group */
+#define CLKMGR_A10_MAINPLL_VCO0 0x40
+#define CLKMGR_A10_MAINPLL_VCO1 0x44
+#define CLKMGR_A10_MAINPLL_EN 0x48
+#define CLKMGR_A10_MAINPLL_ENS 0x4c
+#define CLKMGR_A10_MAINPLL_ENR 0x50
+#define CLKMGR_A10_MAINPLL_BYPASS 0x54
+#define CLKMGR_A10_MAINPLL_BYPASSS 0x58
+#define CLKMGR_A10_MAINPLL_BYPASSR 0x5c
+#define CLKMGR_A10_MAINPLL_MPUCLK 0x60
+#define CLKMGR_A10_MAINPLL_NOCCLK 0x64
+#define CLKMGR_A10_MAINPLL_CNTR2CLK 0x68
+#define CLKMGR_A10_MAINPLL_CNTR3CLK 0x6c
+#define CLKMGR_A10_MAINPLL_CNTR4CLK 0x70
+#define CLKMGR_A10_MAINPLL_CNTR5CLK 0x74
+#define CLKMGR_A10_MAINPLL_CNTR6CLK 0x78
+#define CLKMGR_A10_MAINPLL_CNTR7CLK 0x7c
+#define CLKMGR_A10_MAINPLL_CNTR8CLK 0x80
+#define CLKMGR_A10_MAINPLL_CNTR9CLK 0x84
+#define CLKMGR_A10_MAINPLL_CNTR15CLK 0x9c
+#define CLKMGR_A10_MAINPLL_NOCDIV 0xa8
+/* Peripheral PLL group */
+#define CLKMGR_A10_PERPLL_VCO0 0xc0
+#define CLKMGR_A10_PERPLL_VCO1 0xc4
+#define CLKMGR_A10_PERPLL_EN 0xc8
+#define CLKMGR_A10_PERPLL_ENS 0xcc
+#define CLKMGR_A10_PERPLL_ENR 0xd0
+#define CLKMGR_A10_PERPLL_BYPASS 0xd4
+#define CLKMGR_A10_PERPLL_BYPASSS 0xd8
+#define CLKMGR_A10_PERPLL_BYPASSR 0xdc
+#define CLKMGR_A10_PERPLL_CNTR2CLK 0xe8
+#define CLKMGR_A10_PERPLL_CNTR3CLK 0xec
+#define CLKMGR_A10_PERPLL_CNTR4CLK 0xf0
+#define CLKMGR_A10_PERPLL_CNTR5CLK 0xf4
+#define CLKMGR_A10_PERPLL_CNTR6CLK 0xf8
+#define CLKMGR_A10_PERPLL_CNTR7CLK 0xfc
+#define CLKMGR_A10_PERPLL_CNTR8CLK 0x100
+#define CLKMGR_A10_PERPLL_CNTR9CLK 0x104
+#define CLKMGR_A10_PERPLL_EMACCTL 0x128
+#define CLKMGR_A10_PERPLL_GPIOFIV 0x12c
+/* Altera group */
+#define CLKMGR_A10_ALTR_MPUCLK 0x140
+#define CLKMGR_A10_ALTR_NOCCLK 0x144
+
+#define CLKMGR_STAT CLKMGR_A10_STAT
+#define CLKMGR_INTER CLKMGR_A10_INTER
+#define CLKMGR_PERPLL_EN CLKMGR_A10_PERPLL_EN
#ifdef CONFIG_SPL_BUILD
int cm_basic_init(const void *blob);
@@ -100,8 +71,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
#endif /* __ASSEMBLER__ */
-#define CLKMGR_ALTERAGRP_MPU_CLK_OFFSET 0x140
-#define CLKMGR_MAINPLL_NOC_CLK_OFFSET 0x144
#define LOCKED_MASK (CLKMGR_CLKMGR_STAT_MAINPLLLOCKED_SET_MSK | \
CLKMGR_CLKMGR_STAT_PERPLLLOCKED_SET_MSK)
diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
index 5bedf28cf1..caa1231c69 100644
--- a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
+++ b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
@@ -45,71 +45,53 @@ struct cm_config {
u32 altera_grp_mpuclk;
};
-struct socfpga_clock_manager_main_pll {
- u32 vco;
- u32 misc;
- u32 mpuclk;
- u32 mainclk;
- u32 dbgatclk;
- u32 mainqspiclk;
- u32 mainnandsdmmcclk;
- u32 cfgs2fuser0clk;
- u32 en;
- u32 maindiv;
- u32 dbgdiv;
- u32 tracediv;
- u32 l4src;
- u32 stat;
- u32 _pad_0x38_0x40[2];
-};
-
-struct socfpga_clock_manager_per_pll {
- u32 vco;
- u32 misc;
- u32 emac0clk;
- u32 emac1clk;
- u32 perqspiclk;
- u32 pernandsdmmcclk;
- u32 perbaseclk;
- u32 s2fuser1clk;
- u32 en;
- u32 div;
- u32 gpiodiv;
- u32 src;
- u32 stat;
- u32 _pad_0x34_0x40[3];
-};
-
-struct socfpga_clock_manager_sdr_pll {
- u32 vco;
- u32 ctrl;
- u32 ddrdqsclk;
- u32 ddr2xdqsclk;
- u32 ddrdqclk;
- u32 s2fuser2clk;
- u32 en;
- u32 stat;
-};
-
-struct socfpga_clock_manager_altera {
- u32 mpuclk;
- u32 mainclk;
-};
-
-struct socfpga_clock_manager {
- u32 ctrl;
- u32 bypass;
- u32 inter;
- u32 intren;
- u32 dbctrl;
- u32 stat;
- u32 _pad_0x18_0x3f[10];
- struct socfpga_clock_manager_main_pll main_pll;
- struct socfpga_clock_manager_per_pll per_pll;
- struct socfpga_clock_manager_sdr_pll sdr_pll;
- struct socfpga_clock_manager_altera altera;
- u32 _pad_0xe8_0x200[70];
-};
+/* Clock manager group */
+#define CLKMGR_GEN5_CTRL 0
+#define CLKMGR_GEN5_BYPASS 4
+#define CLKMGR_GEN5_INTER 8
+#define CLKMGR_GEN5_STAT 0x14
+/* MainPLL group */
+#define CLKMGR_GEN5_MAINPLL_VCO 0x40
+#define CLKMGR_GEN5_MAINPLL_MISC 0x44
+#define CLKMGR_GEN5_MAINPLL_MPUCLK 0x48
+#define CLKMGR_GEN5_MAINPLL_MAINCLK 0x4c
+#define CLKMGR_GEN5_MAINPLL_DBGATCLK 0x50
+#define CLKMGR_GEN5_MAINPLL_MAINQSPICLK 0x54
+#define CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK 0x58
+#define CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK 0x5c
+#define CLKMGR_GEN5_MAINPLL_EN 0x60
+#define CLKMGR_GEN5_MAINPLL_MAINDIV 0x64
+#define CLKMGR_GEN5_MAINPLL_DBGDIV 0x68
+#define CLKMGR_GEN5_MAINPLL_TRACEDIV 0x6c
+#define CLKMGR_GEN5_MAINPLL_L4SRC 0x70
+/* Peripheral PLL group */
+#define CLKMGR_GEN5_PERPLL_VCO 0x80
+#define CLKMGR_GEN5_PERPLL_MISC 0x84
+#define CLKMGR_GEN5_PERPLL_EMAC0CLK 0x88
+#define CLKMGR_GEN5_PERPLL_EMAC1CLK 0x8c
+#define CLKMGR_GEN5_PERPLL_PERQSPICLK 0x90
+#define CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK 0x94
+#define CLKMGR_GEN5_PERPLL_PERBASECLK 0x98
+#define CLKMGR_GEN5_PERPLL_S2FUSER1CLK 0x9c
+#define CLKMGR_GEN5_PERPLL_EN 0xa0
+#define CLKMGR_GEN5_PERPLL_DIV 0xa4
+#define CLKMGR_GEN5_PERPLL_GPIODIV 0xa8
+#define CLKMGR_GEN5_PERPLL_SRC 0xac
+/* SDRAM PLL group */
+#define CLKMGR_GEN5_SDRPLL_VCO 0xc0
+#define CLKMGR_GEN5_SDRPLL_CTRL 0xc4
+#define CLKMGR_GEN5_SDRPLL_DDRDQSCLK 0xc8
+#define CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK 0xcc
+#define CLKMGR_GEN5_SDRPLL_DDRDQCLK 0xd0
+#define CLKMGR_GEN5_SDRPLL_S2FUSER2CLK 0xd4
+#define CLKMGR_GEN5_SDRPLL_EN 0xd8
+/* Altera group */
+#define CLKMGR_GEN5_ALTR_MPUCLK 0xe0
+#define CLKMGR_GEN5_ALTR_MAINCLK 0xe4
+
+#define CLKMGR_STAT CLKMGR_GEN5_STAT
+#define CLKMGR_INTER CLKMGR_GEN5_INTER
+#define CLKMGR_PERPLL_EN CLKMGR_GEN5_PERPLL_EN
/* Clock speed accessors */
unsigned long cm_get_mpu_clk_hz(void);
diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
index 24b20de011..fa0ba26f09 100644
--- a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
+++ b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
@@ -69,75 +69,54 @@ struct cm_config {
void cm_basic_init(const struct cm_config * const cfg);
-struct socfpga_clock_manager_main_pll {
- u32 en;
- u32 ens;
- u32 enr;
- u32 bypass;
- u32 bypasss;
- u32 bypassr;
- u32 mpuclk;
- u32 nocclk;
- u32 cntr2clk;
- u32 cntr3clk;
- u32 cntr4clk;
- u32 cntr5clk;
- u32 cntr6clk;
- u32 cntr7clk;
- u32 cntr8clk;
- u32 cntr9clk;
- u32 nocdiv;
- u32 pllglob;
- u32 fdbck;
- u32 mem;
- u32 memstat;
- u32 pllc0;
- u32 pllc1;
- u32 vcocalib;
- u32 _pad_0x90_0xA0[5];
-};
-
-struct socfpga_clock_manager_per_pll {
- u32 en;
- u32 ens;
- u32 enr;
- u32 bypass;
- u32 bypasss;
- u32 bypassr;
- u32 cntr2clk;
- u32 cntr3clk;
- u32 cntr4clk;
- u32 cntr5clk;
- u32 cntr6clk;
- u32 cntr7clk;
- u32 cntr8clk;
- u32 cntr9clk;
- u32 emacctl;
- u32 gpiodiv;
- u32 pllglob;
- u32 fdbck;
- u32 mem;
- u32 memstat;
- u32 pllc0;
- u32 pllc1;
- u32 vcocalib;
- u32 _pad_0x100_0x124[10];
-};
+/* Control status */
+#define CLKMGR_S10_CTRL 0
+#define CLKMGR_S10_STAT 4
+#define CLKMGR_S10_INTRCLR 0x14
+/* Mainpll group */
+#define CLKMGR_S10_MAINPLL_EN 0x30
+#define CLKMGR_S10_MAINPLL_BYPASS 0x3c
+#define CLKMGR_S10_MAINPLL_MPUCLK 0x48
+#define CLKMGR_S10_MAINPLL_NOCCLK 0x4c
+#define CLKMGR_S10_MAINPLL_CNTR2CLK 0x50
+#define CLKMGR_S10_MAINPLL_CNTR3CLK 0x54
+#define CLKMGR_S10_MAINPLL_CNTR4CLK 0x58
+#define CLKMGR_S10_MAINPLL_CNTR5CLK 0x5c
+#define CLKMGR_S10_MAINPLL_CNTR6CLK 0x60
+#define CLKMGR_S10_MAINPLL_CNTR7CLK 0x64
+#define CLKMGR_S10_MAINPLL_CNTR8CLK 0x68
+#define CLKMGR_S10_MAINPLL_CNTR9CLK 0x6c
+#define CLKMGR_S10_MAINPLL_NOCDIV 0x70
+#define CLKMGR_S10_MAINPLL_PLLGLOB 0x74
+#define CLKMGR_S10_MAINPLL_FDBCK 0x78
+#define CLKMGR_S10_MAINPLL_MEMSTAT 0x80
+#define CLKMGR_S10_MAINPLL_PLLC0 0x84
+#define CLKMGR_S10_MAINPLL_PLLC1 0x88
+#define CLKMGR_S10_MAINPLL_VCOCALIB 0x8c
+/* Periphpll group */
+#define CLKMGR_S10_PERPLL_EN 0xa4
+#define CLKMGR_S10_PERPLL_BYPASS 0xac
+#define CLKMGR_S10_PERPLL_CNTR2CLK 0xbc
+#define CLKMGR_S10_PERPLL_CNTR3CLK 0xc0
+#define CLKMGR_S10_PERPLL_CNTR4CLK 0xc4
+#define CLKMGR_S10_PERPLL_CNTR5CLK 0xc8
+#define CLKMGR_S10_PERPLL_CNTR6CLK 0xcc
+#define CLKMGR_S10_PERPLL_CNTR7CLK 0xd0
+#define CLKMGR_S10_PERPLL_CNTR8CLK 0xd4
+#define CLKMGR_S10_PERPLL_CNTR9CLK 0xd8
+#define CLKMGR_S10_PERPLL_EMACCTL 0xdc
+#define CLKMGR_S10_PERPLL_GPIODIV 0xe0
+#define CLKMGR_S10_PERPLL_PLLGLOB 0xe4
+#define CLKMGR_S10_PERPLL_FDBCK 0xe8
+#define CLKMGR_S10_PERPLL_MEMSTAT 0xf0
+#define CLKMGR_S10_PERPLL_PLLC0 0xf4
+#define CLKMGR_S10_PERPLL_PLLC1 0xf8
+#define CLKMGR_S10_PERPLL_VCOCALIB 0xfc
+
+#define CLKMGR_STAT CLKMGR_S10_STAT
+#define CLKMGR_INTER CLKMGR_S10_INTER
+#define CLKMGR_PERPLL_EN CLKMGR_S10_PERPLL_EN
-struct socfpga_clock_manager {
- u32 ctrl;
- u32 stat;
- u32 testioctrl;
- u32 intrgen;
- u32 intrmsk;
- u32 intrclr;
- u32 intrsts;
- u32 intrstk;
- u32 intrraw;
- u32 _pad_0x24_0x2c[3];
- struct socfpga_clock_manager_main_pll main_pll;
- struct socfpga_clock_manager_per_pll per_pll;
-};
#define CLKMGR_CTRL_SAFEMODE BIT(0)
#define CLKMGR_BYPASS_MAINPLL_ALL 0x00000007
diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
index fcc53b6fbc..dffd1b2e41 100644
--- a/arch/arm/mach-socfpga/misc.c
+++ b/arch/arm/mach-socfpga/misc.c
@@ -22,6 +22,7 @@
DECLARE_GLOBAL_DATA_PTR;
+phys_addr_t socfpga_clkmgr_base __section(".data");
phys_addr_t socfpga_rstmgr_base __section(".data");
phys_addr_t socfpga_sysmgr_base __section(".data");
@@ -238,4 +239,8 @@ void socfpga_get_manager_addr(void)
socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
if (!socfpga_sysmgr_base)
hang();
+
+ socfpga_clkmgr_base = socfpga_get_base_addr("altr,clk-mgr");
+ if (!socfpga_clkmgr_base)
+ hang();
}
diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
index bdcd568d60..aefcae8fb6 100644
--- a/drivers/mmc/socfpga_dw_mmc.c
+++ b/drivers/mmc/socfpga_dw_mmc.c
@@ -18,9 +18,6 @@
DECLARE_GLOBAL_DATA_PTR;
-static const struct socfpga_clock_manager *clock_manager_base =
- (void *)SOCFPGA_CLKMGR_ADDRESS;
-
struct socfpga_dwmci_plat {
struct mmc_config cfg;
struct mmc mmc;
@@ -54,8 +51,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
((priv->drvsel & 0x7) << SYSMGR_SDMMC_DRVSEL_SHIFT);
/* Disable SDMMC clock. */
- clrbits_le32(&clock_manager_base->per_pll.en,
- CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
+ clrbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
+ CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
debug("%s: drvsel %d smplsel %d\n", __func__,
priv->drvsel, priv->smplsel);
@@ -65,8 +62,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
/* Enable SDMMC clock */
- setbits_le32(&clock_manager_base->per_pll.en,
- CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
+ setbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
+ CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
}
static int socfpga_dwmmc_get_clk_rate(struct udevice *dev)
--
2.19.0
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
@ 2019-09-16 14:09 ` Dinh Nguyen
2019-09-18 2:32 ` Ley Foon Tan
2019-10-02 9:18 ` Simon Goldschmidt
1 sibling, 1 reply; 21+ messages in thread
From: Dinh Nguyen @ 2019-09-16 14:09 UTC (permalink / raw)
To: u-boot
On 9/10/19 3:38 AM, Ley Foon Tan wrote:
> Add u-boot,dm-pre-reloc for sysmgr and clkmgr nodes to use it in SPL.
> In preparation to get base address from DT.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> ---
> arch/arm/dts/socfpga-common-u-boot.dtsi | 8 ++++++++
> arch/arm/dts/socfpga.dtsi | 2 +-
> arch/arm/dts/socfpga_arria10.dtsi | 2 +-
> arch/arm/dts/socfpga_arria10_socdk.dtsi | 8 ++++++++
> arch/arm/dts/socfpga_stratix10.dtsi | 2 +-
> arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi | 8 ++++++++
> 6 files changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/dts/socfpga-common-u-boot.dtsi b/arch/arm/dts/socfpga-common-u-boot.dtsi
> index 322c858c4b..d55460755f 100644
> --- a/arch/arm/dts/socfpga-common-u-boot.dtsi
> +++ b/arch/arm/dts/socfpga-common-u-boot.dtsi
> @@ -10,6 +10,10 @@
> };
> };
>
> +&clkmgr {
> + u-boot,dm-pre-reloc;
> +};
> +
> &rst {
> u-boot,dm-pre-reloc;
> };
> @@ -17,3 +21,7 @@
> &sdr {
> u-boot,dm-pre-reloc;
> };
> +
> +&sysmgr {
> + u-boot,dm-pre-reloc;
> +};
> diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi
> index 51a6a51b53..eda558f2fe 100644
> --- a/arch/arm/dts/socfpga.dtsi
> +++ b/arch/arm/dts/socfpga.dtsi
> @@ -114,7 +114,7 @@
> status = "disabled";
> };
>
> - clkmgr at ffd04000 {
> + clkmgr: clkmgr at ffd04000 {
> compatible = "altr,clk-mgr";
> reg = <0xffd04000 0x1000>;
>
> diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi
> index c11a5c0cc1..cc529bcd11 100644
> --- a/arch/arm/dts/socfpga_arria10.dtsi
> +++ b/arch/arm/dts/socfpga_arria10.dtsi
> @@ -96,7 +96,7 @@
> fpga-mgr = <&fpga_mgr>;
> };
>
> - clkmgr at ffd04000 {
> + clkmgr: clkmgr at ffd04000 {
> compatible = "altr,clk-mgr";
> reg = <0xffd04000 0x1000>;
> u-boot,dm-pre-reloc;
> diff --git a/arch/arm/dts/socfpga_arria10_socdk.dtsi b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> index 6e5578d7bd..ef10708ee8 100644
> --- a/arch/arm/dts/socfpga_arria10_socdk.dtsi
> +++ b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> @@ -180,3 +180,11 @@
> &l4_sp_clk {
> u-boot,dm-pre-reloc;
> };
> +
> +&clkmgr {
> + u-boot,dm-pre-reloc;
> +};
> +
> +&sysmgr {
> + u-boot,dm-pre-reloc;
> +};
> diff --git a/arch/arm/dts/socfpga_stratix10.dtsi b/arch/arm/dts/socfpga_stratix10.dtsi
> index bd68a78a37..91f4e27ef5 100755
> --- a/arch/arm/dts/socfpga_stratix10.dtsi
> +++ b/arch/arm/dts/socfpga_stratix10.dtsi
> @@ -82,7 +82,7 @@
> ranges = <0 0 0 0xffffffff>;
> u-boot,dm-pre-reloc;
>
> - clkmgr at ffd1000 {
> + clkmgr: clkmgr at ffd1000 {
Missing another zero in the address.
Dinh
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
` (3 preceding siblings ...)
2019-09-10 8:38 ` [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock " Ley Foon Tan
@ 2019-09-17 22:33 ` Dinh Nguyen
2019-09-18 2:32 ` Ley Foon Tan
4 siblings, 1 reply; 21+ messages in thread
From: Dinh Nguyen @ 2019-09-17 22:33 UTC (permalink / raw)
To: u-boot
On 9/10/19 3:37 AM, Ley Foon Tan wrote:
> This is 2nd version of patchset to convert reset, system and clock manager
> drivers to use #define instead of struct.
>
> Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
>
> Patch 1 is new one, patch 2 to 4 have changes.
>
> Main changes in this version are:
> - Get base address from DT
> - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> - Add prefix to defines.
> - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
>
> History:
> v1: https://patchwork.ozlabs.org/cover/1149731/
>
I think you also need to Simon Goldschmidt to this series.
Beside the minor incorrect address missing a zero in patch 1, I've
tested this series on the Sockit.
Tested-by: Dinh Nguyen <dinguyen@kernel.org>
Dinh
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-09-17 22:33 ` [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers " Dinh Nguyen
@ 2019-09-18 2:32 ` Ley Foon Tan
2019-09-18 4:22 ` Simon Goldschmidt
0 siblings, 1 reply; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-18 2:32 UTC (permalink / raw)
To: u-boot
On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
>
>
>
> On 9/10/19 3:37 AM, Ley Foon Tan wrote:
> > This is 2nd version of patchset to convert reset, system and clock manager
> > drivers to use #define instead of struct.
> >
> > Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
> >
> > Patch 1 is new one, patch 2 to 4 have changes.
> >
> > Main changes in this version are:
> > - Get base address from DT
> > - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> > - Add prefix to defines.
> > - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
> >
> > History:
> > v1: https://patchwork.ozlabs.org/cover/1149731/
> >
>
> I think you also need to Simon Goldschmidt to this series.
Simon is in the CC list in my original email.
>
> Beside the minor incorrect address missing a zero in patch 1, I've
> tested this series on the Sockit.
>
> Tested-by: Dinh Nguyen <dinguyen@kernel.org>
>
Regards
Ley Foon
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes
2019-09-16 14:09 ` Dinh Nguyen
@ 2019-09-18 2:32 ` Ley Foon Tan
0 siblings, 0 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-09-18 2:32 UTC (permalink / raw)
To: u-boot
On Mon, Sep 16, 2019 at 10:12 PM Dinh Nguyen <dinguyen@kernel.org> wrote:
>
>
>
> On 9/10/19 3:38 AM, Ley Foon Tan wrote:
> > Add u-boot,dm-pre-reloc for sysmgr and clkmgr nodes to use it in SPL.
> > In preparation to get base address from DT.
> >
> > Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> > ---
> > arch/arm/dts/socfpga-common-u-boot.dtsi | 8 ++++++++
> > arch/arm/dts/socfpga.dtsi | 2 +-
> > arch/arm/dts/socfpga_arria10.dtsi | 2 +-
> > arch/arm/dts/socfpga_arria10_socdk.dtsi | 8 ++++++++
> > arch/arm/dts/socfpga_stratix10.dtsi | 2 +-
> > arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi | 8 ++++++++
> > 6 files changed, 27 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/arm/dts/socfpga-common-u-boot.dtsi b/arch/arm/dts/socfpga-common-u-boot.dtsi
> > index 322c858c4b..d55460755f 100644
> > --- a/arch/arm/dts/socfpga-common-u-boot.dtsi
> > +++ b/arch/arm/dts/socfpga-common-u-boot.dtsi
> > @@ -10,6 +10,10 @@
> > };
> > };
> >
> > +&clkmgr {
> > + u-boot,dm-pre-reloc;
> > +};
> > +
> > &rst {
> > u-boot,dm-pre-reloc;
> > };
> > @@ -17,3 +21,7 @@
> > &sdr {
> > u-boot,dm-pre-reloc;
> > };
> > +
> > +&sysmgr {
> > + u-boot,dm-pre-reloc;
> > +};
> > diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi
> > index 51a6a51b53..eda558f2fe 100644
> > --- a/arch/arm/dts/socfpga.dtsi
> > +++ b/arch/arm/dts/socfpga.dtsi
> > @@ -114,7 +114,7 @@
> > status = "disabled";
> > };
> >
> > - clkmgr at ffd04000 {
> > + clkmgr: clkmgr at ffd04000 {
> > compatible = "altr,clk-mgr";
> > reg = <0xffd04000 0x1000>;
> >
> > diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi
> > index c11a5c0cc1..cc529bcd11 100644
> > --- a/arch/arm/dts/socfpga_arria10.dtsi
> > +++ b/arch/arm/dts/socfpga_arria10.dtsi
> > @@ -96,7 +96,7 @@
> > fpga-mgr = <&fpga_mgr>;
> > };
> >
> > - clkmgr at ffd04000 {
> > + clkmgr: clkmgr at ffd04000 {
> > compatible = "altr,clk-mgr";
> > reg = <0xffd04000 0x1000>;
> > u-boot,dm-pre-reloc;
> > diff --git a/arch/arm/dts/socfpga_arria10_socdk.dtsi b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> > index 6e5578d7bd..ef10708ee8 100644
> > --- a/arch/arm/dts/socfpga_arria10_socdk.dtsi
> > +++ b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> > @@ -180,3 +180,11 @@
> > &l4_sp_clk {
> > u-boot,dm-pre-reloc;
> > };
> > +
> > +&clkmgr {
> > + u-boot,dm-pre-reloc;
> > +};
> > +
> > +&sysmgr {
> > + u-boot,dm-pre-reloc;
> > +};
> > diff --git a/arch/arm/dts/socfpga_stratix10.dtsi b/arch/arm/dts/socfpga_stratix10.dtsi
> > index bd68a78a37..91f4e27ef5 100755
> > --- a/arch/arm/dts/socfpga_stratix10.dtsi
> > +++ b/arch/arm/dts/socfpga_stratix10.dtsi
> > @@ -82,7 +82,7 @@
> > ranges = <0 0 0 0xffffffff>;
> > u-boot,dm-pre-reloc;
> >
> > - clkmgr at ffd1000 {
> > + clkmgr: clkmgr at ffd1000 {
>
> Missing another zero in the address.
Noted.
Regards
Ley Foon
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-09-18 2:32 ` Ley Foon Tan
@ 2019-09-18 4:22 ` Simon Goldschmidt
2019-10-02 8:13 ` Ley Foon Tan
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-09-18 4:22 UTC (permalink / raw)
To: u-boot
Ley Foon Tan <lftan.linux@gmail.com> schrieb am Mi., 18. Sep. 2019, 04:32:
> On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
> >
> >
> >
> > On 9/10/19 3:37 AM, Ley Foon Tan wrote:
> > > This is 2nd version of patchset to convert reset, system and clock
> manager
> > > drivers to use #define instead of struct.
> > >
> > > Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
> > >
> > > Patch 1 is new one, patch 2 to 4 have changes.
> > >
> > > Main changes in this version are:
> > > - Get base address from DT
> > > - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> > > - Add prefix to defines.
> > > - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
> > >
> > > History:
> > > v1: https://patchwork.ozlabs.org/cover/1149731/
> > >
> >
> > I think you also need to Simon Goldschmidt to this series.
> Simon is in the CC list in my original email.
>
And I'm trying my best to catch up with u-boot mails and patches. I already
read it through but failed to find the time to review and test it. Next
week, hopefully...
Regards,
Simon
>
> > Beside the minor incorrect address missing a zero in patch 1, I've
> > tested this series on the Sockit.
> >
> > Tested-by: Dinh Nguyen <dinguyen@kernel.org>
> >
> Regards
> Ley Foon
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-09-18 4:22 ` Simon Goldschmidt
@ 2019-10-02 8:13 ` Ley Foon Tan
2019-10-02 9:23 ` Simon Goldschmidt
0 siblings, 1 reply; 21+ messages in thread
From: Ley Foon Tan @ 2019-10-02 8:13 UTC (permalink / raw)
To: u-boot
On Wed, Sep 18, 2019 at 12:23 PM Simon Goldschmidt
<simon.k.r.goldschmidt@gmail.com> wrote:
>
>
>
> Ley Foon Tan <lftan.linux@gmail.com> schrieb am Mi., 18. Sep. 2019, 04:32:
>>
>> On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
>> >
>> >
>> >
>> > On 9/10/19 3:37 AM, Ley Foon Tan wrote:
>> > > This is 2nd version of patchset to convert reset, system and clock manager
>> > > drivers to use #define instead of struct.
>> > >
>> > > Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
>> > >
>> > > Patch 1 is new one, patch 2 to 4 have changes.
>> > >
>> > > Main changes in this version are:
>> > > - Get base address from DT
>> > > - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
>> > > - Add prefix to defines.
>> > > - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
>> > >
>> > > History:
>> > > v1: https://patchwork.ozlabs.org/cover/1149731/
>> > >
>> >
>> > I think you also need to Simon Goldschmidt to this series.
>> Simon is in the CC list in my original email.
>
>
> And I'm trying my best to catch up with u-boot mails and patches. I already read it through but failed to find the time to review and test it. Next week, hopefully...
>
> Regards,
> Simon
>
>> >
>> > Beside the minor incorrect address missing a zero in patch 1, I've
>> > tested this series on the Sockit.
>> >
>> > Tested-by: Dinh Nguyen <dinguyen@kernel.org>
Hi Marek and Simon
Any further comment for this series? Otherwise, I will send v3 with
minor change for Dinh's comment.
Thanks.
Regards
Ley Foon
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
2019-09-16 14:09 ` Dinh Nguyen
@ 2019-10-02 9:18 ` Simon Goldschmidt
1 sibling, 0 replies; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-02 9:18 UTC (permalink / raw)
To: u-boot
On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
>
> Add u-boot,dm-pre-reloc for sysmgr and clkmgr nodes to use it in SPL.
> In preparation to get base address from DT.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
I'm OK with this change as long as it doesn't blow SPL size limits because of
the additional DT nodes.
Reviewed-by: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
> ---
> arch/arm/dts/socfpga-common-u-boot.dtsi | 8 ++++++++
> arch/arm/dts/socfpga.dtsi | 2 +-
> arch/arm/dts/socfpga_arria10.dtsi | 2 +-
> arch/arm/dts/socfpga_arria10_socdk.dtsi | 8 ++++++++
> arch/arm/dts/socfpga_stratix10.dtsi | 2 +-
> arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi | 8 ++++++++
> 6 files changed, 27 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/dts/socfpga-common-u-boot.dtsi b/arch/arm/dts/socfpga-common-u-boot.dtsi
> index 322c858c4b..d55460755f 100644
> --- a/arch/arm/dts/socfpga-common-u-boot.dtsi
> +++ b/arch/arm/dts/socfpga-common-u-boot.dtsi
> @@ -10,6 +10,10 @@
> };
> };
>
> +&clkmgr {
> + u-boot,dm-pre-reloc;
> +};
> +
> &rst {
> u-boot,dm-pre-reloc;
> };
> @@ -17,3 +21,7 @@
> &sdr {
> u-boot,dm-pre-reloc;
> };
> +
> +&sysmgr {
> + u-boot,dm-pre-reloc;
> +};
> diff --git a/arch/arm/dts/socfpga.dtsi b/arch/arm/dts/socfpga.dtsi
> index 51a6a51b53..eda558f2fe 100644
> --- a/arch/arm/dts/socfpga.dtsi
> +++ b/arch/arm/dts/socfpga.dtsi
> @@ -114,7 +114,7 @@
> status = "disabled";
> };
>
> - clkmgr at ffd04000 {
> + clkmgr: clkmgr at ffd04000 {
> compatible = "altr,clk-mgr";
> reg = <0xffd04000 0x1000>;
>
> diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi
> index c11a5c0cc1..cc529bcd11 100644
> --- a/arch/arm/dts/socfpga_arria10.dtsi
> +++ b/arch/arm/dts/socfpga_arria10.dtsi
> @@ -96,7 +96,7 @@
> fpga-mgr = <&fpga_mgr>;
> };
>
> - clkmgr at ffd04000 {
> + clkmgr: clkmgr at ffd04000 {
> compatible = "altr,clk-mgr";
> reg = <0xffd04000 0x1000>;
> u-boot,dm-pre-reloc;
> diff --git a/arch/arm/dts/socfpga_arria10_socdk.dtsi b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> index 6e5578d7bd..ef10708ee8 100644
> --- a/arch/arm/dts/socfpga_arria10_socdk.dtsi
> +++ b/arch/arm/dts/socfpga_arria10_socdk.dtsi
> @@ -180,3 +180,11 @@
> &l4_sp_clk {
> u-boot,dm-pre-reloc;
> };
> +
> +&clkmgr {
> + u-boot,dm-pre-reloc;
> +};
> +
> +&sysmgr {
> + u-boot,dm-pre-reloc;
> +};
> diff --git a/arch/arm/dts/socfpga_stratix10.dtsi b/arch/arm/dts/socfpga_stratix10.dtsi
> index bd68a78a37..91f4e27ef5 100755
> --- a/arch/arm/dts/socfpga_stratix10.dtsi
> +++ b/arch/arm/dts/socfpga_stratix10.dtsi
> @@ -82,7 +82,7 @@
> ranges = <0 0 0 0xffffffff>;
> u-boot,dm-pre-reloc;
>
> - clkmgr at ffd1000 {
> + clkmgr: clkmgr at ffd1000 {
> compatible = "altr,clk-mgr";
> reg = <0xffd10000 0x1000>;
> };
> diff --git a/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi b/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
> index e1cfb522bf..38855aecd7 100755
> --- a/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
> +++ b/arch/arm/dts/socfpga_stratix10_socdk-u-boot.dtsi
> @@ -11,6 +11,10 @@
> };
> };
>
> +&clkmgr {
> + u-boot,dm-pre-reloc;
> +};
> +
> &qspi {
> status = "okay";
> u-boot,dm-pre-reloc;
> @@ -23,3 +27,7 @@
> spi-rx-bus-width = <4>;
> u-boot,dm-pre-reloc;
> };
> +
> +&sysmgr {
> + u-boot,dm-pre-reloc;
> +};
> --
> 2.19.0
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines
2019-09-10 8:38 ` [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines Ley Foon Tan
@ 2019-10-02 9:20 ` Simon Goldschmidt
2019-10-04 3:03 ` Ley Foon Tan
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-02 9:20 UTC (permalink / raw)
To: u-boot
On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
>
> Convert reset manager for Gen5, Arria 10 and Stratix 10 from struct
> to defines.
> No functional change.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
>
> ---
> v2:
> - Get base address from DT
Wait, "no functional change", yet you now read the base address from DT?
I think that's a good idea, but could you do it in a separate patch?
Regards,
Simon
> - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> - Add prefix to defines.
> ---
> arch/arm/mach-socfpga/include/mach/misc.h | 1 +
> .../mach-socfpga/include/mach/reset_manager.h | 2 +
> .../include/mach/reset_manager_arria10.h | 43 ++++-------------
> .../include/mach/reset_manager_gen5.h | 22 ++++-----
> .../include/mach/reset_manager_s10.h | 33 ++-----------
> arch/arm/mach-socfpga/misc.c | 32 +++++++++++++
> arch/arm/mach-socfpga/misc_gen5.c | 7 ++-
> arch/arm/mach-socfpga/reset_manager_arria10.c | 47 ++++++++++---------
> arch/arm/mach-socfpga/reset_manager_gen5.c | 28 +++++------
> arch/arm/mach-socfpga/reset_manager_s10.c | 34 +++++++-------
> arch/arm/mach-socfpga/spl_a10.c | 7 ++-
> arch/arm/mach-socfpga/spl_gen5.c | 12 ++---
> arch/arm/mach-socfpga/spl_s10.c | 12 +++--
> drivers/sysreset/sysreset_socfpga.c | 6 +--
> 14 files changed, 137 insertions(+), 149 deletions(-)
>
> diff --git a/arch/arm/mach-socfpga/include/mach/misc.h b/arch/arm/mach-socfpga/include/mach/misc.h
> index 27d0b6a370..a29b049742 100644
> --- a/arch/arm/mach-socfpga/include/mach/misc.h
> +++ b/arch/arm/mach-socfpga/include/mach/misc.h
> @@ -41,5 +41,6 @@ void socfpga_sdram_remap_zero(void);
>
> void do_bridge_reset(int enable, unsigned int mask);
> void socfpga_pl310_clear(void);
> +void socfpga_get_manager_addr(void);
>
> #endif /* _MISC_H_ */
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager.h b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> index 6ad037e325..a5b6931350 100644
> --- a/arch/arm/mach-socfpga/include/mach/reset_manager.h
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> @@ -6,6 +6,8 @@
> #ifndef _RESET_MANAGER_H_
> #define _RESET_MANAGER_H_
>
> +extern phys_addr_t socfpga_rstmgr_base;
> +
> void reset_cpu(ulong addr);
>
> void socfpga_per_reset(u32 reset, int set);
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> index 6623ebee65..41169aa677 100644
> --- a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> @@ -14,40 +14,15 @@ int socfpga_reset_deassert_bridges_handoff(void);
> void socfpga_reset_deassert_osc1wd0(void);
> int socfpga_bridges_reset(void);
>
> -struct socfpga_reset_manager {
> - u32 stat;
> - u32 ramstat;
> - u32 miscstat;
> - u32 ctrl;
> - u32 hdsken;
> - u32 hdskreq;
> - u32 hdskack;
> - u32 counts;
> - u32 mpumodrst;
> - u32 per0modrst;
> - u32 per1modrst;
> - u32 brgmodrst;
> - u32 sysmodrst;
> - u32 coldmodrst;
> - u32 nrstmodrst;
> - u32 dbgmodrst;
> - u32 mpuwarmmask;
> - u32 per0warmmask;
> - u32 per1warmmask;
> - u32 brgwarmmask;
> - u32 syswarmmask;
> - u32 nrstwarmmask;
> - u32 l3warmmask;
> - u32 tststa;
> - u32 tstscratch;
> - u32 hdsktimeout;
> - u32 hmcintr;
> - u32 hmcintren;
> - u32 hmcintrens;
> - u32 hmcintrenr;
> - u32 hmcgpout;
> - u32 hmcgpin;
> -};
> +#define RSTMGR_A10_STATUS 0
> +#define RSTMGR_A10_CTRL 0xc
> +#define RSTMGR_A10_MPUMODRST 0x20
> +#define RSTMGR_A10_PER0MODRST 0x24
> +#define RSTMGR_A10_PER1MODRST 0x28
> +#define RSTMGR_A10_BRGMODRST 0x2c
> +#define RSTMGR_A10_SYSMODRST 0x30
> +
> +#define RSTMGR_CTRL RSTMGR_A10_CTRL
>
> /*
> * SocFPGA Arria10 reset IDs, bank mapping is as follows:
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> index f4dcb14623..e51ebfd08f 100644
> --- a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> @@ -11,19 +11,15 @@
> void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h);
> void socfpga_bridges_reset(int enable);
>
> -struct socfpga_reset_manager {
> - u32 status;
> - u32 ctrl;
> - u32 counts;
> - u32 padding1;
> - u32 mpu_mod_reset;
> - u32 per_mod_reset;
> - u32 per2_mod_reset;
> - u32 brg_mod_reset;
> - u32 misc_mod_reset;
> - u32 padding2[12];
> - u32 tstscratch;
> -};
> +#define RSTMGR_GEN5_STATUS 0
> +#define RSTMGR_GEN5_CTRL 4
> +#define RSTMGR_GEN5_MPUMODRST 0x10
> +#define RSTMGR_GEN5_PERMODRST 0x14
> +#define RSTMGR_GEN5_PER2MODRST 0x18
> +#define RSTMGR_GEN5_BRGMODRST 0x1c
> +#define RSTMGR_GEN5_MISCMODRST 0x20
> +
> +#define RSTMGR_CTRL RSTMGR_GEN5_CTRL
>
> /*
> * SocFPGA Cyclone V/Arria V reset IDs, bank mapping is as follows:
> diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> index 452147b017..b602129656 100644
> --- a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> @@ -15,34 +15,11 @@ void socfpga_bridges_reset(int enable);
> void socfpga_per_reset(u32 reset, int set);
> void socfpga_per_reset_all(void);
>
> -struct socfpga_reset_manager {
> - u32 status;
> - u32 mpu_rst_stat;
> - u32 misc_stat;
> - u32 padding1;
> - u32 hdsk_en;
> - u32 hdsk_req;
> - u32 hdsk_ack;
> - u32 hdsk_stall;
> - u32 mpumodrst;
> - u32 per0modrst;
> - u32 per1modrst;
> - u32 brgmodrst;
> - u32 padding2;
> - u32 cold_mod_reset;
> - u32 padding3;
> - u32 dbg_mod_reset;
> - u32 tap_mod_reset;
> - u32 padding4;
> - u32 padding5;
> - u32 brg_warm_mask;
> - u32 padding6[3];
> - u32 tst_stat;
> - u32 padding7;
> - u32 hdsk_timeout;
> - u32 mpul2flushtimeout;
> - u32 dbghdsktimeout;
> -};
> +#define RSTMGR_S10_STATUS 0
> +#define RSTMGR_S10_MPUMODRST 0x20
> +#define RSTMGR_S10_PER0MODRST 0x24
> +#define RSTMGR_S10_PER1MODRST 0x28
> +#define RSTMGR_S10_BRGMODRST 0x2c
>
> #define RSTMGR_MPUMODRST_CORE0 0
> #define RSTMGR_PER0MODRST_OCP_MASK 0x0020bf00
> diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> index 49dadd4c3d..901c432f82 100644
> --- a/arch/arm/mach-socfpga/misc.c
> +++ b/arch/arm/mach-socfpga/misc.c
> @@ -22,6 +22,8 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> +phys_addr_t socfpga_rstmgr_base __section(".data");
> +
> #ifdef CONFIG_SYS_L2_PL310
> static const struct pl310_regs *const pl310 =
> (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
> @@ -145,6 +147,8 @@ void socfpga_fpga_add(void *fpga_desc)
>
> int arch_cpu_init(void)
> {
> + socfpga_get_manager_addr();
> +
> #ifdef CONFIG_HW_WATCHDOG
> /*
> * In case the watchdog is enabled, make sure to (re-)configure it
> @@ -202,3 +206,31 @@ U_BOOT_CMD(bridge, 3, 1, do_bridge,
> );
>
> #endif
> +
> +static phys_addr_t socfpga_get_base_addr(const char *compat)
> +{
> + const void *blob = gd->fdt_blob;
> + struct fdt_resource r;
> + int node;
> + int ret;
> +
> + node = fdt_node_offset_by_compatible(blob, -1, compat);
> + if (node < 0)
> + return 0;
> +
> + if (!fdtdec_get_is_enabled(blob, node))
> + return 0;
> +
> + ret = fdt_get_resource(blob, node, "reg", 0, &r);
> + if (ret)
> + return 0;
> +
> + return (phys_addr_t)r.start;
> +}
> +
> +void socfpga_get_manager_addr(void)
> +{
> + socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
> + if (!socfpga_rstmgr_base)
> + hang();
> +}
> diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
> index 31681b799d..b39a66562d 100644
> --- a/arch/arm/mach-socfpga/misc_gen5.c
> +++ b/arch/arm/mach-socfpga/misc_gen5.c
> @@ -206,8 +206,6 @@ int arch_early_init_r(void)
> }
>
> #ifndef CONFIG_SPL_BUILD
> -static struct socfpga_reset_manager *reset_manager_base =
> - (struct socfpga_reset_manager *)SOCFPGA_RSTMGR_ADDRESS;
> static struct socfpga_sdr_ctrl *sdr_ctrl =
> (struct socfpga_sdr_ctrl *)SDR_CTRLGRP_ADDRESS;
>
> @@ -226,12 +224,13 @@ void do_bridge_reset(int enable, unsigned int mask)
>
> writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
> writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
> - writel(iswgrp_handoff[0], &reset_manager_base->brg_mod_reset);
> + writel(iswgrp_handoff[0],
> + socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> writel(iswgrp_handoff[1], &nic301_regs->remap);
> } else {
> writel(0, &sysmgr_regs->fpgaintfgrp_module);
> writel(0, &sdr_ctrl->fpgaport_rst);
> - writel(0, &reset_manager_base->brg_mod_reset);
> + writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> writel(1, &nic301_regs->remap);
> }
> }
> diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
> index 471a3045af..4553653992 100644
> --- a/arch/arm/mach-socfpga/reset_manager_arria10.c
> +++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
> @@ -15,8 +15,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_reset_manager *reset_manager_base =
> - (void *)SOCFPGA_RSTMGR_ADDRESS;
> static const struct socfpga_system_manager *sysmgr_regs =
> (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
>
> @@ -63,14 +61,14 @@ static const struct bridge_cfg bridge_cfg_tbl[] = {
> void socfpga_watchdog_disable(void)
> {
> /* assert reset for watchdog */
> - setbits_le32(&reset_manager_base->per1modrst,
> + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
> ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
> }
>
> /* Release NOC ddr scheduler from reset */
> void socfpga_reset_deassert_noc_ddr_scheduler(void)
> {
> - clrbits_le32(&reset_manager_base->brgmodrst,
> + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
> ALT_RSTMGR_BRGMODRST_DDRSCH_SET_MSK);
> }
>
> @@ -103,7 +101,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
> setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
>
> /* Release bridges from reset state per handoff value */
> - clrbits_le32(&reset_manager_base->brgmodrst, mask_rstmgr);
> + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
>
> /* Poll until all idleack to 0, timeout at 1000ms */
> return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
> @@ -113,7 +111,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
> /* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
> void socfpga_reset_deassert_osc1wd0(void)
> {
> - clrbits_le32(&reset_manager_base->per1modrst,
> + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
> ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
> }
>
> @@ -122,24 +120,24 @@ void socfpga_reset_deassert_osc1wd0(void)
> */
> void socfpga_per_reset(u32 reset, int set)
> {
> - const u32 *reg;
> + unsigned long reg;
> u32 rstmgr_bank = RSTMGR_BANK(reset);
>
> switch (rstmgr_bank) {
> case 0:
> - reg = &reset_manager_base->mpumodrst;
> + reg = RSTMGR_A10_MPUMODRST;
> break;
> case 1:
> - reg = &reset_manager_base->per0modrst;
> + reg = RSTMGR_A10_PER0MODRST;
> break;
> case 2:
> - reg = &reset_manager_base->per1modrst;
> + reg = RSTMGR_A10_PER1MODRST;
> break;
> case 3:
> - reg = &reset_manager_base->brgmodrst;
> + reg = RSTMGR_A10_BRGMODRST;
> break;
> case 4:
> - reg = &reset_manager_base->sysmodrst;
> + reg = RSTMGR_A10_SYSMODRST;
> break;
>
> default:
> @@ -147,9 +145,11 @@ void socfpga_per_reset(u32 reset, int set)
> }
>
> if (set)
> - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + setbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> else
> - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + clrbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> }
>
> /*
> @@ -174,11 +174,12 @@ void socfpga_per_reset_all(void)
> ALT_RSTMGR_PER0MODRST_SDMMCECC_SET_MSK;
>
> /* disable all components except ECC_OCP, L4 Timer0 and L4 WD0 */
> - writel(~l4wd0, &reset_manager_base->per1modrst);
> - setbits_le32(&reset_manager_base->per0modrst, ~mask_ecc_ocp);
> + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST);
> + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST,
> + ~mask_ecc_ocp);
>
> /* Finally disable the ECC_OCP */
> - setbits_le32(&reset_manager_base->per0modrst, mask_ecc_ocp);
> + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST, mask_ecc_ocp);
> }
>
> int socfpga_bridges_reset(void)
> @@ -224,13 +225,13 @@ int socfpga_bridges_reset(void)
> return ret;
>
> /* Put all bridges (except NOR DDR scheduler) into reset state */
> - setbits_le32(&reset_manager_base->brgmodrst,
> + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
> (ALT_RSTMGR_BRGMODRST_H2F_SET_MSK |
> - ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
> - ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
> - ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
> - ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
> - ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
> + ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
> + ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
> + ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
> + ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
> + ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
>
> /* Disable NOC timeout */
> writel(0, &sysmgr_regs->noc_timeout);
> diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
> index 9a32f5abfe..ad31214711 100644
> --- a/arch/arm/mach-socfpga/reset_manager_gen5.c
> +++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
> @@ -10,32 +10,30 @@
> #include <asm/arch/reset_manager.h>
> #include <asm/arch/system_manager.h>
>
> -static const struct socfpga_reset_manager *reset_manager_base =
> - (void *)SOCFPGA_RSTMGR_ADDRESS;
> static const struct socfpga_system_manager *sysmgr_regs =
> (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
>
> /* Assert or de-assert SoCFPGA reset manager reset. */
> void socfpga_per_reset(u32 reset, int set)
> {
> - const u32 *reg;
> + unsigned long reg;
> u32 rstmgr_bank = RSTMGR_BANK(reset);
>
> switch (rstmgr_bank) {
> case 0:
> - reg = &reset_manager_base->mpu_mod_reset;
> + reg = RSTMGR_GEN5_MPUMODRST;
> break;
> case 1:
> - reg = &reset_manager_base->per_mod_reset;
> + reg = RSTMGR_GEN5_PERMODRST;
> break;
> case 2:
> - reg = &reset_manager_base->per2_mod_reset;
> + reg = RSTMGR_GEN5_PER2MODRST;
> break;
> case 3:
> - reg = &reset_manager_base->brg_mod_reset;
> + reg = RSTMGR_GEN5_BRGMODRST;
> break;
> case 4:
> - reg = &reset_manager_base->misc_mod_reset;
> + reg = RSTMGR_GEN5_MISCMODRST;
> break;
>
> default:
> @@ -43,9 +41,11 @@ void socfpga_per_reset(u32 reset, int set)
> }
>
> if (set)
> - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + setbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> else
> - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + clrbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> }
>
> /*
> @@ -57,8 +57,8 @@ void socfpga_per_reset_all(void)
> {
> const u32 l4wd0 = 1 << RSTMGR_RESET(SOCFPGA_RESET(L4WD0));
>
> - writel(~l4wd0, &reset_manager_base->per_mod_reset);
> - writel(0xffffffff, &reset_manager_base->per2_mod_reset);
> + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_GEN5_PERMODRST);
> + writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_GEN5_PER2MODRST);
> }
>
> #define L3REGS_REMAP_LWHPS2FPGA_MASK 0x10
> @@ -95,7 +95,7 @@ void socfpga_bridges_reset(int enable)
>
> if (enable) {
> /* brdmodrst */
> - writel(0x7, &reset_manager_base->brg_mod_reset);
> + writel(0x7, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> writel(L3REGS_REMAP_OCRAM_MASK, SOCFPGA_L3REGS_ADDRESS);
> } else {
> socfpga_bridges_set_handoff_regs(false, false, false);
> @@ -109,7 +109,7 @@ void socfpga_bridges_reset(int enable)
> }
>
> /* brdmodrst */
> - writel(0, &reset_manager_base->brg_mod_reset);
> + writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
>
> /* Remap the bridges into memory map */
> writel(l3mask, SOCFPGA_L3REGS_ADDRESS);
> diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
> index 499a84aff5..b196d58d3d 100644
> --- a/arch/arm/mach-socfpga/reset_manager_s10.c
> +++ b/arch/arm/mach-socfpga/reset_manager_s10.c
> @@ -12,31 +12,31 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_reset_manager *reset_manager_base =
> - (void *)SOCFPGA_RSTMGR_ADDRESS;
> static const struct socfpga_system_manager *system_manager_base =
> (void *)SOCFPGA_SYSMGR_ADDRESS;
>
> /* Assert or de-assert SoCFPGA reset manager reset. */
> void socfpga_per_reset(u32 reset, int set)
> {
> - const void *reg;
> + unsigned long reg;
>
> if (RSTMGR_BANK(reset) == 0)
> - reg = &reset_manager_base->mpumodrst;
> + reg = RSTMGR_S10_MPUMODRST;
> else if (RSTMGR_BANK(reset) == 1)
> - reg = &reset_manager_base->per0modrst;
> + reg = RSTMGR_S10_PER0MODRST;
> else if (RSTMGR_BANK(reset) == 2)
> - reg = &reset_manager_base->per1modrst;
> + reg = RSTMGR_S10_PER1MODRST;
> else if (RSTMGR_BANK(reset) == 3)
> - reg = &reset_manager_base->brgmodrst;
> + reg = RSTMGR_S10_BRGMODRST;
> else /* Invalid reset register, do nothing */
> return;
>
> if (set)
> - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + setbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> else
> - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> + clrbits_le32(socfpga_rstmgr_base + reg,
> + 1 << RSTMGR_RESET(reset));
> }
>
> /*
> @@ -50,9 +50,9 @@ void socfpga_per_reset_all(void)
>
> /* disable all except OCP and l4wd0. OCP disable later */
> writel(~(l4wd0 | RSTMGR_PER0MODRST_OCP_MASK),
> - &reset_manager_base->per0modrst);
> - writel(~l4wd0, &reset_manager_base->per0modrst);
> - writel(0xffffffff, &reset_manager_base->per1modrst);
> + socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
> + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
> + writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_S10_PER1MODRST);
> }
>
> void socfpga_bridges_reset(int enable)
> @@ -62,7 +62,7 @@ void socfpga_bridges_reset(int enable)
> setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
>
> /* Release all bridges from reset state */
> - clrbits_le32(&reset_manager_base->brgmodrst, ~0);
> + clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
>
> /* Poll until all idleack to 0 */
> while (readl(&system_manager_base->noc_idleack))
> @@ -85,9 +85,9 @@ void socfpga_bridges_reset(int enable)
> ;
>
> /* Reset all bridges (except NOR DDR scheduler & F2S) */
> - setbits_le32(&reset_manager_base->brgmodrst,
> + setbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST,
> ~(RSTMGR_BRGMODRST_DDRSCH_MASK |
> - RSTMGR_BRGMODRST_FPGA2SOC_MASK));
> + RSTMGR_BRGMODRST_FPGA2SOC_MASK));
>
> /* Disable NOC timeout */
> writel(0, &system_manager_base->noc_timeout);
> @@ -99,6 +99,6 @@ void socfpga_bridges_reset(int enable)
> */
> int cpu_has_been_warmreset(void)
> {
> - return readl(&reset_manager_base->status) &
> - RSTMGR_L4WD_MPU_WARMRESET_MASK;
> + return readl(socfpga_rstmgr_base + RSTMGR_S10_STATUS) &
> + RSTMGR_L4WD_MPU_WARMRESET_MASK;
> }
> diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> index b820cb0673..a0d80fd47e 100644
> --- a/arch/arm/mach-socfpga/spl_a10.c
> +++ b/arch/arm/mach-socfpga/spl_a10.c
> @@ -106,6 +106,11 @@ void spl_board_init(void)
>
> void board_init_f(ulong dummy)
> {
> + if (spl_early_init())
> + hang();
> +
> + socfpga_get_manager_addr();
> +
> dcache_disable();
>
> socfpga_init_security_policies();
> @@ -116,8 +121,6 @@ void board_init_f(ulong dummy)
> socfpga_per_reset_all();
> socfpga_watchdog_disable();
>
> - spl_early_init();
> -
> /* Configure the clock based on handoff */
> cm_basic_init(gd->fdt_blob);
>
> diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
> index 47e63709ad..9ee053da3a 100644
> --- a/arch/arm/mach-socfpga/spl_gen5.c
> +++ b/arch/arm/mach-socfpga/spl_gen5.c
> @@ -67,6 +67,12 @@ void board_init_f(ulong dummy)
> int ret;
> struct udevice *dev;
>
> + ret = spl_early_init();
> + if (ret)
> + hang();
> +
> + socfpga_get_manager_addr();
> +
> /*
> * First C code to run. Clear fake OCRAM ECC first as SBE
> * and DBE might triggered during power on
> @@ -128,12 +134,6 @@ void board_init_f(ulong dummy)
> debug_uart_init();
> #endif
>
> - ret = spl_early_init();
> - if (ret) {
> - debug("spl_early_init() failed: %d\n", ret);
> - hang();
> - }
> -
> ret = uclass_get_device(UCLASS_RESET, 0, &dev);
> if (ret)
> debug("Reset init failed: %d\n", ret);
> diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
> index ec65e1ce64..9a97a84e1e 100644
> --- a/arch/arm/mach-socfpga/spl_s10.c
> +++ b/arch/arm/mach-socfpga/spl_s10.c
> @@ -14,6 +14,7 @@
> #include <asm/arch/clock_manager.h>
> #include <asm/arch/firewall_s10.h>
> #include <asm/arch/mailbox_s10.h>
> +#include <asm/arch/misc.h>
> #include <asm/arch/reset_manager.h>
> #include <asm/arch/system_manager.h>
> #include <watchdog.h>
> @@ -120,6 +121,12 @@ void board_init_f(ulong dummy)
> const struct cm_config *cm_default_cfg = cm_get_default_config();
> int ret;
>
> + ret = spl_early_init();
> + if (ret)
> + hang();
> +
> + socfpga_get_manager_addr();
> +
> #ifdef CONFIG_HW_WATCHDOG
> /* Ensure watchdog is paused when debugging is happening */
> writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
> @@ -145,11 +152,6 @@ void board_init_f(ulong dummy)
> socfpga_per_reset(SOCFPGA_RESET(UART0), 0);
> debug_uart_init();
> #endif
> - ret = spl_early_init();
> - if (ret) {
> - debug("spl_early_init() failed: %d\n", ret);
> - hang();
> - }
>
> preloader_console_init();
> cm_print_clock_quick_summary();
> diff --git a/drivers/sysreset/sysreset_socfpga.c b/drivers/sysreset/sysreset_socfpga.c
> index d6c26a5b23..3390b7bdc2 100644
> --- a/drivers/sysreset/sysreset_socfpga.c
> +++ b/drivers/sysreset/sysreset_socfpga.c
> @@ -12,7 +12,7 @@
> #include <asm/arch/reset_manager.h>
>
> struct socfpga_sysreset_data {
> - struct socfpga_reset_manager *rstmgr_base;
> + void __iomem *rstmgr_base;
> };
>
> static int socfpga_sysreset_request(struct udevice *dev,
> @@ -23,11 +23,11 @@ static int socfpga_sysreset_request(struct udevice *dev,
> switch (type) {
> case SYSRESET_WARM:
> writel(BIT(RSTMGR_CTRL_SWWARMRSTREQ_LSB),
> - &data->rstmgr_base->ctrl);
> + data->rstmgr_base + RSTMGR_CTRL);
> break;
> case SYSRESET_COLD:
> writel(BIT(RSTMGR_CTRL_SWCOLDRSTREQ_LSB),
> - &data->rstmgr_base->ctrl);
> + data->rstmgr_base + RSTMGR_CTRL);
> break;
> default:
> return -EPROTONOSUPPORT;
> --
> 2.19.0
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system manager from struct to defines
2019-09-10 8:38 ` [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system " Ley Foon Tan
@ 2019-10-02 9:20 ` Simon Goldschmidt
2019-10-04 3:05 ` Ley Foon Tan
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-02 9:20 UTC (permalink / raw)
To: u-boot
On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
>
> Convert system manager for Gen5, Arria 10 and Stratix 10 from struct
> to defines.
> No functional change.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
>
> ---
> v2:
> - Change to use writel(), readl() and etc.
> - Get base address from DT.
Same as 2/4: separate patch please.
Regards,
Simon
> - Add prefix to defines.
> ---
> arch/arm/mach-socfpga/clock_manager_s10.c | 4 +-
> .../include/mach/system_manager.h | 2 +
> .../include/mach/system_manager_arria10.h | 94 +++------
> .../include/mach/system_manager_gen5.h | 123 +++---------
> .../include/mach/system_manager_s10.h | 184 +++++++-----------
> arch/arm/mach-socfpga/mailbox_s10.c | 6 +-
> arch/arm/mach-socfpga/misc.c | 5 +
> arch/arm/mach-socfpga/misc_arria10.c | 9 +-
> arch/arm/mach-socfpga/misc_gen5.c | 22 ++-
> arch/arm/mach-socfpga/misc_s10.c | 9 +-
> arch/arm/mach-socfpga/reset_manager_arria10.c | 24 +--
> arch/arm/mach-socfpga/reset_manager_gen5.c | 7 +-
> arch/arm/mach-socfpga/reset_manager_s10.c | 18 +-
> arch/arm/mach-socfpga/scan_manager.c | 6 +-
> arch/arm/mach-socfpga/spl_a10.c | 5 +-
> arch/arm/mach-socfpga/spl_gen5.c | 11 +-
> arch/arm/mach-socfpga/spl_s10.c | 12 +-
> arch/arm/mach-socfpga/system_manager_gen5.c | 38 ++--
> arch/arm/mach-socfpga/system_manager_s10.c | 39 ++--
> arch/arm/mach-socfpga/wrap_pll_config_s10.c | 11 +-
> drivers/ddr/altera/sdram_gen5.c | 10 +-
> drivers/ddr/altera/sdram_s10.c | 6 +-
> drivers/fpga/socfpga_arria10.c | 7 +-
> drivers/fpga/socfpga_gen5.c | 4 +-
> drivers/mmc/socfpga_dw_mmc.c | 6 +-
> 25 files changed, 240 insertions(+), 422 deletions(-)
>
> diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
> index 3ba2a00c02..6cbf07ac6f 100644
> --- a/arch/arm/mach-socfpga/clock_manager_s10.c
> +++ b/arch/arm/mach-socfpga/clock_manager_s10.c
> @@ -14,8 +14,6 @@ DECLARE_GLOBAL_DATA_PTR;
>
> static const struct socfpga_clock_manager *clock_manager_base =
> (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
>
> /*
> * function to write the bypass register which requires a poll of the
> @@ -351,7 +349,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
>
> unsigned int cm_get_qspi_controller_clk_hz(void)
> {
> - return readl(&sysmgr_regs->boot_scratch_cold0);
> + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
> }
>
> unsigned int cm_get_spi_controller_clk_hz(void)
> diff --git a/arch/arm/mach-socfpga/include/mach/system_manager.h b/arch/arm/mach-socfpga/include/mach/system_manager.h
> index 7e76df74b7..803305eb35 100644
> --- a/arch/arm/mach-socfpga/include/mach/system_manager.h
> +++ b/arch/arm/mach-socfpga/include/mach/system_manager.h
> @@ -6,6 +6,8 @@
> #ifndef _SYSTEM_MANAGER_H_
> #define _SYSTEM_MANAGER_H_
>
> +extern phys_addr_t socfpga_sysmgr_base;
> +
> #if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> #include <asm/arch/system_manager_s10.h>
> #else
> diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> index 14052b957c..1a45c0f134 100644
> --- a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> +++ b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> @@ -6,73 +6,33 @@
> #ifndef _SYSTEM_MANAGER_ARRIA10_H_
> #define _SYSTEM_MANAGER_ARRIA10_H_
>
> -struct socfpga_system_manager {
> - u32 siliconid1;
> - u32 siliconid2;
> - u32 wddbg;
> - u32 bootinfo;
> - u32 mpu_ctrl_l2_ecc;
> - u32 _pad_0x14_0x1f[3];
> - u32 dma;
> - u32 dma_periph;
> - u32 sdmmcgrp_ctrl;
> - u32 sdmmc_l3master;
> - u32 nand_bootstrap;
> - u32 nand_l3master;
> - u32 usb0_l3master;
> - u32 usb1_l3master;
> - u32 emac_global;
> - u32 emac[3];
> - u32 _pad_0x50_0x5f[4];
> - u32 fpgaintf_en_global;
> - u32 fpgaintf_en_0;
> - u32 fpgaintf_en_1;
> - u32 fpgaintf_en_2;
> - u32 fpgaintf_en_3;
> - u32 _pad_0x74_0x7f[3];
> - u32 noc_addr_remap_value;
> - u32 noc_addr_remap_set;
> - u32 noc_addr_remap_clear;
> - u32 _pad_0x8c_0x8f;
> - u32 ecc_intmask_value;
> - u32 ecc_intmask_set;
> - u32 ecc_intmask_clr;
> - u32 ecc_intstatus_serr;
> - u32 ecc_intstatus_derr;
> - u32 mpu_status_l2_ecc;
> - u32 mpu_clear_l2_ecc;
> - u32 mpu_status_l1_parity;
> - u32 mpu_clear_l1_parity;
> - u32 mpu_set_l1_parity;
> - u32 _pad_0xb8_0xbf[2];
> - u32 noc_timeout;
> - u32 noc_idlereq_set;
> - u32 noc_idlereq_clr;
> - u32 noc_idlereq_value;
> - u32 noc_idleack;
> - u32 noc_idlestatus;
> - u32 fpga2soc_ctrl;
> - u32 _pad_0xdc_0xff[9];
> - u32 tsmc_tsel_0;
> - u32 tsmc_tsel_1;
> - u32 tsmc_tsel_2;
> - u32 tsmc_tsel_3;
> - u32 _pad_0x110_0x200[60];
> - u32 romhw_ctrl;
> - u32 romcode_ctrl;
> - u32 romcode_cpu1startaddr;
> - u32 romcode_initswstate;
> - u32 romcode_initswlastld;
> - u32 _pad_0x214_0x217;
> - u32 warmram_enable;
> - u32 warmram_datastart;
> - u32 warmram_length;
> - u32 warmram_execution;
> - u32 warmram_crc;
> - u32 _pad_0x22c_0x22f;
> - u32 isw_handoff[8];
> - u32 romcode_bootromswstate[8];
> -};
> +#define SYSMGR_A10_WDDBG 0x8
> +#define SYSMGR_A10_BOOTINFO 0xc
> +#define SYSMGR_A10_DMA 0x20
> +#define SYSMGR_A10_DMA_PERIPH 0x24
> +#define SYSMGR_A10_SDMMC 0x28
> +#define SYSMGR_A10_SDMMC_L3MASTER 0x2c
> +#define SYSMGR_A10_EMAC_GLOBAL 0x40
> +#define SYSMGR_A10_EMAC0 0x44
> +#define SYSMGR_A10_EMAC1 0x48
> +#define SYSMGR_A10_EMAC2 0x4c
> +#define SYSMGR_A10_FPGAINTF_EN_GLOBAL 0x60
> +#define SYSMGR_A10_FPGAINTF_EN0 0x64
> +#define SYSMGR_A10_FPGAINTF_EN1 0x68
> +#define SYSMGR_A10_FPGAINTF_EN2 0x6c
> +#define SYSMGR_A10_FPGAINTF_EN3 0x70
> +#define SYSMGR_A10_ECC_INTMASK_VAL 0x90
> +#define SYSMGR_A10_ECC_INTMASK_SET 0x94
> +#define SYSMGR_A10_ECC_INTMASK_CLR 0x98
> +#define SYSMGR_A10_NOC_TIMEOUT 0xc0
> +#define SYSMGR_A10_NOC_IDLEREQ_SET 0xc4
> +#define SYSMGR_A10_NOC_IDLEREQ_CLR 0xc8
> +#define SYSMGR_A10_NOC_IDLEREQ_VAL 0xcc
> +#define SYSMGR_A10_NOC_IDLEACK 0xd0
> +#define SYSMGR_A10_NOC_IDLESTATUS 0xd4
> +#define SYSMGR_A10_FPGA2SOC_CTRL 0xd8
> +
> +#define SYSMGR_SDMMC SYSMGR_A10_SDMMC
>
> #define SYSMGR_SDMMC_SMPLSEL_SHIFT 4
> #define SYSMGR_BOOTINFO_BSEL_SHIFT 12
> diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> index 52e59df513..90cb465d13 100644
> --- a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> +++ b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> @@ -13,106 +13,29 @@ void sysmgr_config_warmrstcfgio(int enable);
>
> void sysmgr_get_pinmux_table(const u8 **table, unsigned int *table_len);
>
> -struct socfpga_system_manager {
> - /* System Manager Module */
> - u32 siliconid1; /* 0x00 */
> - u32 siliconid2;
> - u32 _pad_0x8_0xf[2];
> - u32 wddbg; /* 0x10 */
> - u32 bootinfo;
> - u32 hpsinfo;
> - u32 parityinj;
> - /* FPGA Interface Group */
> - u32 fpgaintfgrp_gbl; /* 0x20 */
> - u32 fpgaintfgrp_indiv;
> - u32 fpgaintfgrp_module;
> - u32 _pad_0x2c_0x2f;
> - /* Scan Manager Group */
> - u32 scanmgrgrp_ctrl; /* 0x30 */
> - u32 _pad_0x34_0x3f[3];
> - /* Freeze Control Group */
> - u32 frzctrl_vioctrl; /* 0x40 */
> - u32 _pad_0x44_0x4f[3];
> - u32 frzctrl_hioctrl; /* 0x50 */
> - u32 frzctrl_src;
> - u32 frzctrl_hwctrl;
> - u32 _pad_0x5c_0x5f;
> - /* EMAC Group */
> - u32 emacgrp_ctrl; /* 0x60 */
> - u32 emacgrp_l3master;
> - u32 _pad_0x68_0x6f[2];
> - /* DMA Controller Group */
> - u32 dmagrp_ctrl; /* 0x70 */
> - u32 dmagrp_persecurity;
> - u32 _pad_0x78_0x7f[2];
> - /* Preloader (initial software) Group */
> - u32 iswgrp_handoff[8]; /* 0x80 */
> - u32 _pad_0xa0_0xbf[8]; /* 0xa0 */
> - /* Boot ROM Code Register Group */
> - u32 romcodegrp_ctrl; /* 0xc0 */
> - u32 romcodegrp_cpu1startaddr;
> - u32 romcodegrp_initswstate;
> - u32 romcodegrp_initswlastld;
> - u32 romcodegrp_bootromswstate; /* 0xd0 */
> - u32 __pad_0xd4_0xdf[3];
> - /* Warm Boot from On-Chip RAM Group */
> - u32 romcodegrp_warmramgrp_enable; /* 0xe0 */
> - u32 romcodegrp_warmramgrp_datastart;
> - u32 romcodegrp_warmramgrp_length;
> - u32 romcodegrp_warmramgrp_execution;
> - u32 romcodegrp_warmramgrp_crc; /* 0xf0 */
> - u32 __pad_0xf4_0xff[3];
> - /* Boot ROM Hardware Register Group */
> - u32 romhwgrp_ctrl; /* 0x100 */
> - u32 _pad_0x104_0x107;
> - /* SDMMC Controller Group */
> - u32 sdmmcgrp_ctrl;
> - u32 sdmmcgrp_l3master;
> - /* NAND Flash Controller Register Group */
> - u32 nandgrp_bootstrap; /* 0x110 */
> - u32 nandgrp_l3master;
> - /* USB Controller Group */
> - u32 usbgrp_l3master;
> - u32 _pad_0x11c_0x13f[9];
> - /* ECC Management Register Group */
> - u32 eccgrp_l2; /* 0x140 */
> - u32 eccgrp_ocram;
> - u32 eccgrp_usb0;
> - u32 eccgrp_usb1;
> - u32 eccgrp_emac0; /* 0x150 */
> - u32 eccgrp_emac1;
> - u32 eccgrp_dma;
> - u32 eccgrp_can0;
> - u32 eccgrp_can1; /* 0x160 */
> - u32 eccgrp_nand;
> - u32 eccgrp_qspi;
> - u32 eccgrp_sdmmc;
> - u32 _pad_0x170_0x3ff[164];
> - /* Pin Mux Control Group */
> - u32 emacio[20]; /* 0x400 */
> - u32 flashio[12]; /* 0x450 */
> - u32 generalio[28]; /* 0x480 */
> - u32 _pad_0x4f0_0x4ff[4];
> - u32 mixed1io[22]; /* 0x500 */
> - u32 mixed2io[8]; /* 0x558 */
> - u32 gplinmux[23]; /* 0x578 */
> - u32 gplmux[71]; /* 0x5d4 */
> - u32 nandusefpga; /* 0x6f0 */
> - u32 _pad_0x6f4;
> - u32 rgmii1usefpga; /* 0x6f8 */
> - u32 _pad_0x6fc_0x700[2];
> - u32 i2c0usefpga; /* 0x704 */
> - u32 sdmmcusefpga; /* 0x708 */
> - u32 _pad_0x70c_0x710[2];
> - u32 rgmii0usefpga; /* 0x714 */
> - u32 _pad_0x718_0x720[3];
> - u32 i2c3usefpga; /* 0x724 */
> - u32 i2c2usefpga; /* 0x728 */
> - u32 i2c1usefpga; /* 0x72c */
> - u32 spim1usefpga; /* 0x730 */
> - u32 _pad_0x734;
> - u32 spim0usefpga; /* 0x738 */
> -};
> +#define SYSMGR_GEN5_WDDBG 0x10
> +#define SYSMGR_GEN5_BOOTINFO 0x14
> +#define SYSMGR_GEN5_FPGAINFGRP_GBL 0x20
> +#define SYSMGR_GEN5_FPGAINFGRP_INDIV 0x24
> +#define SYSMGR_GEN5_FPGAINFGRP_MODULE 0x28
> +#define SYSMGR_GEN5_SCANMGRGRP_CTRL 0x30
> +#define SYSMGR_GEN5_ISWGRP_HANDOFF 0x80
> +#define SYSMGR_GEN5_ROMCODEGRP_CTRL 0xc0
> +#define SYSMGR_GEN5_WARMRAMGRP_EN 0xe0
> +#define SYSMGR_GEN5_SDMMC 0x108
> +#define SYSMGR_GEN5_ECCGRP_OCRAM 0x144
> +#define SYSMGR_GEN5_EMACIO 0x400
> +#define SYSMGR_GEN5_NAND_USEFPGA 0x6f0
> +#define SYSMGR_GEN5_RGMII0_USEFPGA 0x6f8
> +#define SYSMGR_GEN5_SDMMC_USEFPGA 0x708
> +#define SYSMGR_GEN5_RGMII1_USEFPGA 0x704
> +#define SYSMGR_GEN5_SPIM1_USEFPGA 0x730
> +#define SYSMGR_GEN5_SPIM0_USEFPGA 0x738
> +
> +#define SYSMGR_SDMMC SYSMGR_GEN5_SDMMC
> +
> +#define SYSMGR_ISWGRP_HANDOFF_OFFSET(i) \
> + SYSMGR_GEN5_ISWGRP_HANDOFF + ((i) * sizeof(u32))
> #endif
>
> #define SYSMGR_SDMMC_SMPLSEL_SHIFT 3
> diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> index 297f9e1999..e68a8e730e 100644
> --- a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> +++ b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> @@ -15,125 +15,73 @@ void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len);
> void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len);
> void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len);
>
> -struct socfpga_system_manager {
> - /* System Manager Module */
> - u32 siliconid1; /* 0x00 */
> - u32 siliconid2;
> - u32 wddbg;
> - u32 _pad_0xc;
> - u32 mpu_status; /* 0x10 */
> - u32 mpu_ace;
> - u32 _pad_0x18_0x1c[2];
> - u32 dma; /* 0x20 */
> - u32 dma_periph;
> - /* SDMMC Controller Group */
> - u32 sdmmcgrp_ctrl;
> - u32 sdmmcgrp_l3master;
> - /* NAND Flash Controller Register Group */
> - u32 nandgrp_bootstrap; /* 0x30 */
> - u32 nandgrp_l3master;
> - /* USB Controller Group */
> - u32 usb0_l3master;
> - u32 usb1_l3master;
> - /* EMAC Group */
> - u32 emac_gbl; /* 0x40 */
> - u32 emac0;
> - u32 emac1;
> - u32 emac2;
> - u32 emac0_ace; /* 0x50 */
> - u32 emac1_ace;
> - u32 emac2_ace;
> - u32 nand_axuser;
> - u32 _pad_0x60_0x64[2]; /* 0x60 */
> - /* FPGA interface Group */
> - u32 fpgaintf_en_1;
> - u32 fpgaintf_en_2;
> - u32 fpgaintf_en_3; /* 0x70 */
> - u32 dma_l3master;
> - u32 etr_l3master;
> - u32 _pad_0x7c;
> - u32 sec_ctrl_slt; /* 0x80 */
> - u32 osc_trim;
> - u32 _pad_0x88_0x8c[2];
> - /* ECC Group */
> - u32 ecc_intmask_value; /* 0x90 */
> - u32 ecc_intmask_set;
> - u32 ecc_intmask_clr;
> - u32 ecc_intstatus_serr;
> - u32 ecc_intstatus_derr; /* 0xa0 */
> - u32 _pad_0xa4_0xac[3];
> - u32 noc_addr_remap; /* 0xb0 */
> - u32 hmc_clk;
> - u32 io_pa_ctrl;
> - u32 _pad_0xbc;
> - /* NOC Group */
> - u32 noc_timeout; /* 0xc0 */
> - u32 noc_idlereq_set;
> - u32 noc_idlereq_clr;
> - u32 noc_idlereq_value;
> - u32 noc_idleack; /* 0xd0 */
> - u32 noc_idlestatus;
> - u32 fpga2soc_ctrl;
> - u32 fpga_config;
> - u32 iocsrclk_gate; /* 0xe0 */
> - u32 gpo;
> - u32 gpi;
> - u32 _pad_0xec;
> - u32 mpu; /* 0xf0 */
> - u32 sdm_hps_spare;
> - u32 hps_sdm_spare;
> - u32 _pad_0xfc_0x1fc[65];
> - /* Boot scratch register group */
> - u32 boot_scratch_cold0; /* 0x200 */
> - u32 boot_scratch_cold1;
> - u32 boot_scratch_cold2;
> - u32 boot_scratch_cold3;
> - u32 boot_scratch_cold4; /* 0x210 */
> - u32 boot_scratch_cold5;
> - u32 boot_scratch_cold6;
> - u32 boot_scratch_cold7;
> - u32 boot_scratch_cold8; /* 0x220 */
> - u32 boot_scratch_cold9;
> - u32 _pad_0x228_0xffc[886];
> - /* Pin select and pin control group */
> - u32 pinsel0[40]; /* 0x1000 */
> - u32 _pad_0x10a0_0x10fc[24];
> - u32 pinsel40[8];
> - u32 _pad_0x1120_0x112c[4];
> - u32 ioctrl0[28];
> - u32 _pad_0x11a0_0x11fc[24];
> - u32 ioctrl28[20];
> - u32 _pad_0x1250_0x12fc[44];
> - /* Use FPGA mux */
> - u32 rgmii0usefpga; /* 0x1300 */
> - u32 rgmii1usefpga;
> - u32 rgmii2usefpga;
> - u32 i2c0usefpga;
> - u32 i2c1usefpga;
> - u32 i2c_emac0_usefpga;
> - u32 i2c_emac1_usefpga;
> - u32 i2c_emac2_usefpga;
> - u32 nandusefpga;
> - u32 _pad_0x1324;
> - u32 spim0usefpga;
> - u32 spim1usefpga;
> - u32 spis0usefpga;
> - u32 spis1usefpga;
> - u32 uart0usefpga;
> - u32 uart1usefpga;
> - u32 mdio0usefpga;
> - u32 mdio1usefpga;
> - u32 mdio2usefpga;
> - u32 _pad_0x134c;
> - u32 jtagusefpga;
> - u32 sdmmcusefpga;
> - u32 hps_osc_clk;
> - u32 _pad_0x135c_0x13fc[41];
> - u32 iodelay0[40];
> - u32 _pad_0x14a0_0x14fc[24];
> - u32 iodelay40[8];
> +#define SYSMGR_S10_WDDBG 0x8
> +#define SYSMGR_S10_DMA 0x20
> +#define SYSMGR_S10_DMA_PERIPH 0x24
> +#define SYSMGR_S10_SDMMC 0x28
> +#define SYSMGR_S10_SDMMC_L3MASTER 0x2c
> +#define SYSMGR_S10_EMAC_GLOBAL 0x40
> +#define SYSMGR_S10_EMAC0 0x44
> +#define SYSMGR_S10_EMAC1 0x48
> +#define SYSMGR_S10_EMAC2 0x4c
> +#define SYSMGR_S10_EMAC0_ACE 0x50
> +#define SYSMGR_S10_EMAC1_ACE 0x54
> +#define SYSMGR_S10_EMAC2_ACE 0x58
> +#define SYSMGR_S10_NAND_AXUSER 0x5c
> +#define SYSMGR_S10_FPGAINTF_EN1 0x68
> +#define SYSMGR_S10_FPGAINTF_EN2 0x6c
> +#define SYSMGR_S10_FPGAINTF_EN3 0x70
> +#define SYSMGR_S10_DMA_L3MASTER 0x74
> +#define SYSMGR_S10_HMC_CLK 0xb4
> +#define SYSMGR_S10_IO_PA_CTRL 0xb8
> +#define SYSMGR_S10_NOC_TIMEOUT 0xc0
> +#define SYSMGR_S10_NOC_IDLEREQ_SET 0xc4
> +#define SYSMGR_S10_NOC_IDLEREQ_CLR 0xc8
> +#define SYSMGR_S10_NOC_IDLEREQ_VAL 0xcc
> +#define SYSMGR_S10_NOC_IDLEACK 0xd0
> +#define SYSMGR_S10_NOC_IDLESTATUS 0xd4
> +#define SYSMGR_S10_FPGA2SOC_CTRL 0xd8
> +#define SYSMGR_S10_FPGA_CONFIG 0xdc
> +#define SYSMGR_S10_IOCSRCLK_GATE 0xe0
> +#define SYSMGR_S10_GPO 0xe4
> +#define SYSMGR_S10_GPI 0xe8
> +#define SYSMGR_S10_MPU 0xf0
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD0 0x200
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD1 0x204
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD2 0x208
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD3 0x20c
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD4 0x210
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD5 0x214
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD6 0x218
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD7 0x21c
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD8 0x220
> +#define SYSMGR_S10_BOOT_SCRATCH_COLD9 0x224
> +#define SYSMGR_S10_PINSEL0 0x1000
> +#define SYSMGR_S10_IOCTRL0 0x1130
> +#define SYSMGR_S10_EMAC0_USEFPGA 0x1300
> +#define SYSMGR_S10_EMAC1_USEFPGA 0x1304
> +#define SYSMGR_S10_EMAC2_USEFPGA 0x1308
> +#define SYSMGR_S10_I2C0_USEFPGA 0x130c
> +#define SYSMGR_S10_I2C1_USEFPGA 0x1310
> +#define SYSMGR_S10_I2C_EMAC0_USEFPGA 0x1314
> +#define SYSMGR_S10_I2C_EMAC1_USEFPGA 0x1318
> +#define SYSMGR_S10_I2C_EMAC2_USEFPGA 0x131c
> +#define SYSMGR_S10_NAND_USEFPGA 0x1320
> +#define SYSMGR_S10_SPIM0_USEFPGA 0x1328
> +#define SYSMGR_S10_SPIM1_USEFPGA 0x132c
> +#define SYSMGR_S10_SPIS0_USEFPGA 0x1330
> +#define SYSMGR_S10_SPIS1_USEFPGA 0x1334
> +#define SYSMGR_S10_UART0_USEFPGA 0x1338
> +#define SYSMGR_S10_UART1_USEFPGA 0x133c
> +#define SYSMGR_S10_MDIO0_USEFPGA 0x1340
> +#define SYSMGR_S10_MDIO1_USEFPGA 0x1344
> +#define SYSMGR_S10_MDIO2_USEFPGA 0x1348
> +#define SYSMGR_S10_JTAG_USEFPGA 0x1350
> +#define SYSMGR_S10_SDMMC_USEFPGA 0x1354
> +#define SYSMGR_S10_HPS_OSC_CLK 0x1358
> +#define SYSMGR_S10_IODELAY0 0x1400
>
> -};
> +#define SYSMGR_SDMMC SYSMGR_S10_SDMMC
>
> #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX BIT(0)
> #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO BIT(1)
> diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c
> index 4498ab55df..11b57361c7 100644
> --- a/arch/arm/mach-socfpga/mailbox_s10.c
> +++ b/arch/arm/mach-socfpga/mailbox_s10.c
> @@ -287,9 +287,6 @@ int mbox_qspi_close(void)
>
> int mbox_qspi_open(void)
> {
> - static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> int ret;
> u32 resp_buf[1];
> u32 resp_buf_len;
> @@ -318,7 +315,8 @@ int mbox_qspi_open(void)
>
> /* We are getting QSPI ref clock and set into sysmgr boot register */
> printf("QSPI: Reference clock at %d Hz\n", resp_buf[0]);
> - writel(resp_buf[0], &sysmgr_regs->boot_scratch_cold0);
> + writel(resp_buf[0],
> + socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
>
> return 0;
>
> diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> index 901c432f82..fcc53b6fbc 100644
> --- a/arch/arm/mach-socfpga/misc.c
> +++ b/arch/arm/mach-socfpga/misc.c
> @@ -23,6 +23,7 @@
> DECLARE_GLOBAL_DATA_PTR;
>
> phys_addr_t socfpga_rstmgr_base __section(".data");
> +phys_addr_t socfpga_sysmgr_base __section(".data");
>
> #ifdef CONFIG_SYS_L2_PL310
> static const struct pl310_regs *const pl310 =
> @@ -233,4 +234,8 @@ void socfpga_get_manager_addr(void)
> socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
> if (!socfpga_rstmgr_base)
> hang();
> +
> + socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
> + if (!socfpga_sysmgr_base)
> + hang();
> }
> diff --git a/arch/arm/mach-socfpga/misc_arria10.c b/arch/arm/mach-socfpga/misc_arria10.c
> index 2e2a40b65d..ff6ab83441 100644
> --- a/arch/arm/mach-socfpga/misc_arria10.c
> +++ b/arch/arm/mach-socfpga/misc_arria10.c
> @@ -28,9 +28,6 @@
> #define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q3_7 0x78
> #define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q4_3 0x98
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /*
> * FPGA programming support for SoC FPGA Arria 10
> */
> @@ -81,7 +78,7 @@ void socfpga_init_security_policies(void)
> writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST);
> writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST + 4);
>
> - writel(0x0007FFFF, &sysmgr_regs->ecc_intmask_set);
> + writel(0x0007FFFF, socfpga_sysmgr_base + SYSMGR_A10_ECC_INTMASK_SET);
> }
>
> void socfpga_sdram_remap_zero(void)
> @@ -105,8 +102,8 @@ int arch_early_init_r(void)
> #if defined(CONFIG_DISPLAY_CPUINFO)
> int print_cpuinfo(void)
> {
> - const u32 bsel =
> - SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
> + u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
> + const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
>
> puts("CPU: Altera SoCFPGA Arria 10\n");
>
> diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
> index b39a66562d..7735958e9c 100644
> --- a/arch/arm/mach-socfpga/misc_gen5.c
> +++ b/arch/arm/mach-socfpga/misc_gen5.c
> @@ -28,8 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
>
> static struct pl310_regs *const pl310 =
> (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> static struct nic301_registers *nic301_regs =
> (struct nic301_registers *)SOCFPGA_L3REGS_ADDRESS;
> static struct scu_registers *scu_regs =
> @@ -118,8 +116,8 @@ static int socfpga_fpga_id(const bool print_id)
> #if defined(CONFIG_DISPLAY_CPUINFO)
> int print_cpuinfo(void)
> {
> - const u32 bsel =
> - SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
> + u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
> + const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
>
> puts("CPU: Altera SoCFPGA Platform\n");
> socfpga_fpga_id(1);
> @@ -132,7 +130,8 @@ int print_cpuinfo(void)
> #ifdef CONFIG_ARCH_MISC_INIT
> int arch_misc_init(void)
> {
> - const u32 bsel = readl(&sysmgr_regs->bootinfo) & 0x7;
> + const u32 bsel = readl(socfpga_sysmgr_base +
> + SYSMGR_GEN5_BOOTINFO) & 0x7;
> const int fpga_id = socfpga_fpga_id(0);
> env_set("bootmode", bsel_str[bsel].mode);
> if (fpga_id >= 0)
> @@ -190,10 +189,11 @@ int arch_early_init_r(void)
> * to support that old code, we write it here instead of in the
> * reset_cpu() function just before resetting the CPU.
> */
> - writel(0xae9efebc, &sysmgr_regs->romcodegrp_warmramgrp_enable);
> + writel(0xae9efebc, socfpga_sysmgr_base + SYSMGR_GEN5_WARMRAMGRP_EN);
>
> for (i = 0; i < 8; i++) /* Cache initial SW setting regs */
> - iswgrp_handoff[i] = readl(&sysmgr_regs->iswgrp_handoff[i]);
> + iswgrp_handoff[i] = readl(socfpga_sysmgr_base +
> + SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
>
> socfpga_bridges_reset(1);
>
> @@ -219,16 +219,18 @@ void do_bridge_reset(int enable, unsigned int mask)
> !(mask & BIT(2)));
> for (i = 0; i < 2; i++) { /* Reload SW setting cache */
> iswgrp_handoff[i] =
> - readl(&sysmgr_regs->iswgrp_handoff[i]);
> + readl(socfpga_sysmgr_base +
> + SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
> }
>
> - writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
> + writel(iswgrp_handoff[2],
> + socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
> writel(iswgrp_handoff[0],
> socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> writel(iswgrp_handoff[1], &nic301_regs->remap);
> } else {
> - writel(0, &sysmgr_regs->fpgaintfgrp_module);
> + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> writel(0, &sdr_ctrl->fpgaport_rst);
> writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> writel(1, &nic301_regs->remap);
> diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-socfpga/misc_s10.c
> index 0a5fab11c0..16fbf71599 100644
> --- a/arch/arm/mach-socfpga/misc_s10.c
> +++ b/arch/arm/mach-socfpga/misc_s10.c
> @@ -23,9 +23,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /*
> * FPGA programming support for SoC FPGA Stratix 10
> */
> @@ -68,9 +65,9 @@ static u32 socfpga_phymode_setup(u32 gmac_index, const char *phymode)
> else
> return -EINVAL;
>
> - clrsetbits_le32(&sysmgr_regs->emac0 + gmac_index,
> - SYSMGR_EMACGRP_CTRL_PHYSEL_MASK,
> - modereg);
> + clrsetbits_le32((unsigned long)(socfpga_sysmgr_base + SYSMGR_S10_EMAC0 +
> + gmac_index),
> + SYSMGR_EMACGRP_CTRL_PHYSEL_MASK, modereg);
>
> return 0;
> }
> diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
> index 4553653992..5611e784e6 100644
> --- a/arch/arm/mach-socfpga/reset_manager_arria10.c
> +++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
> @@ -15,9 +15,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> struct bridge_cfg {
> int compat_id;
> u32 mask_noc;
> @@ -98,14 +95,16 @@ int socfpga_reset_deassert_bridges_handoff(void)
> }
>
> /* clear idle request to all bridges */
> - setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
> + setbits_le32(socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_CLR,
> + mask_noc);
>
> /* Release bridges from reset state per handoff value */
> clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
>
> /* Poll until all idleack to 0, timeout at 1000ms */
> - return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
> - false, 1000, false);
> + return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> + SYSMGR_A10_NOC_IDLEACK),
> + mask_noc, false, 1000, false);
> }
>
> /* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
> @@ -195,13 +194,15 @@ int socfpga_bridges_reset(void)
> ALT_SYSMGR_NOC_F2SDR0_SET_MSK |
> ALT_SYSMGR_NOC_F2SDR1_SET_MSK |
> ALT_SYSMGR_NOC_F2SDR2_SET_MSK,
> - &sysmgr_regs->noc_idlereq_set);
> + socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_SET);
>
> /* Enable the NOC timeout */
> - writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK, &sysmgr_regs->noc_timeout);
> + writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK,
> + socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
>
> /* Poll until all idleack to 1 */
> - ret = wait_for_bit_le32(&sysmgr_regs->noc_idleack,
> + ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> + SYSMGR_A10_NOC_IDLEACK),
> ALT_SYSMGR_NOC_H2F_SET_MSK |
> ALT_SYSMGR_NOC_LWH2F_SET_MSK |
> ALT_SYSMGR_NOC_F2H_SET_MSK |
> @@ -213,7 +214,8 @@ int socfpga_bridges_reset(void)
> return ret;
>
> /* Poll until all idlestatus to 1 */
> - ret = wait_for_bit_le32(&sysmgr_regs->noc_idlestatus,
> + ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> + SYSMGR_A10_NOC_IDLESTATUS),
> ALT_SYSMGR_NOC_H2F_SET_MSK |
> ALT_SYSMGR_NOC_LWH2F_SET_MSK |
> ALT_SYSMGR_NOC_F2H_SET_MSK |
> @@ -234,7 +236,7 @@ int socfpga_bridges_reset(void)
> ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
>
> /* Disable NOC timeout */
> - writel(0, &sysmgr_regs->noc_timeout);
> + writel(0, socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
>
> return 0;
> }
> diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
> index ad31214711..6b617fd016 100644
> --- a/arch/arm/mach-socfpga/reset_manager_gen5.c
> +++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
> @@ -10,9 +10,6 @@
> #include <asm/arch/reset_manager.h>
> #include <asm/arch/system_manager.h>
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /* Assert or de-assert SoCFPGA reset manager reset. */
> void socfpga_per_reset(u32 reset, int set)
> {
> @@ -83,8 +80,8 @@ void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h)
> if (f2h)
> brgmask |= BIT(2);
>
> - writel(brgmask, &sysmgr_regs->iswgrp_handoff[0]);
> - writel(l3rmask, &sysmgr_regs->iswgrp_handoff[1]);
> + writel(brgmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(0));
> + writel(l3rmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(1));
> }
>
> void socfpga_bridges_reset(int enable)
> diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
> index b196d58d3d..50a2d80930 100644
> --- a/arch/arm/mach-socfpga/reset_manager_s10.c
> +++ b/arch/arm/mach-socfpga/reset_manager_s10.c
> @@ -12,9 +12,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_system_manager *system_manager_base =
> - (void *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /* Assert or de-assert SoCFPGA reset manager reset. */
> void socfpga_per_reset(u32 reset, int set)
> {
> @@ -59,28 +56,29 @@ void socfpga_bridges_reset(int enable)
> {
> if (enable) {
> /* clear idle request to all bridges */
> - setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
> + setbits_le32(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_CLR,
> + ~0);
>
> /* Release all bridges from reset state */
> clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
>
> /* Poll until all idleack to 0 */
> - while (readl(&system_manager_base->noc_idleack))
> + while (readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK))
> ;
> } else {
> /* set idle request to all bridges */
> - writel(~0, &system_manager_base->noc_idlereq_set);
> + writel(~0, socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_SET);
>
> /* Enable the NOC timeout */
> - writel(1, &system_manager_base->noc_timeout);
> + writel(1, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
>
> /* Poll until all idleack to 1 */
> - while ((readl(&system_manager_base->noc_idleack) ^
> + while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK) ^
> (SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
> ;
>
> /* Poll until all idlestatus to 1 */
> - while ((readl(&system_manager_base->noc_idlestatus) ^
> + while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLESTATUS) ^
> (SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
> ;
>
> @@ -90,7 +88,7 @@ void socfpga_bridges_reset(int enable)
> RSTMGR_BRGMODRST_FPGA2SOC_MASK));
>
> /* Disable NOC timeout */
> - writel(0, &system_manager_base->noc_timeout);
> + writel(0, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
> }
> }
>
> diff --git a/arch/arm/mach-socfpga/scan_manager.c b/arch/arm/mach-socfpga/scan_manager.c
> index 52175af48b..f1d5f69caa 100644
> --- a/arch/arm/mach-socfpga/scan_manager.c
> +++ b/arch/arm/mach-socfpga/scan_manager.c
> @@ -31,8 +31,6 @@ static const struct socfpga_scan_manager *scan_manager_base =
> (void *)(SOCFPGA_SCANMGR_ADDRESS);
> static const struct socfpga_freeze_controller *freeze_controller_base =
> (void *)(SOCFPGA_SYSMGR_ADDRESS + SYSMGR_FRZCTRL_ADDRESS);
> -static struct socfpga_system_manager *sys_mgr_base =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
>
> /**
> * scan_chain_engine_is_idle() - Check if the JTAG scan chain is idle
> @@ -218,7 +216,7 @@ u32 scan_mgr_get_fpga_id(void)
> int ret;
>
> /* Enable HPS to talk to JTAG in the FPGA through the System Manager */
> - writel(0x1, &sys_mgr_base->scanmgrgrp_ctrl);
> + writel(0x1, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
>
> /* Enable port 7 */
> writel(0x80, &scan_manager_base->en);
> @@ -253,7 +251,7 @@ u32 scan_mgr_get_fpga_id(void)
>
> /* Disable all port */
> writel(0, &scan_manager_base->en);
> - writel(0, &sys_mgr_base->scanmgrgrp_ctrl);
> + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
>
> return id;
> }
> diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> index a0d80fd47e..ee811e4ee9 100644
> --- a/arch/arm/mach-socfpga/spl_a10.c
> +++ b/arch/arm/mach-socfpga/spl_a10.c
> @@ -31,12 +31,9 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> u32 spl_boot_device(void)
> {
> - const u32 bsel = readl(&sysmgr_regs->bootinfo);
> + const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
>
> switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
> case 0x1: /* FPGA (HPS2FPGA Bridge) */
> diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
> index 9ee053da3a..82d9fe0824 100644
> --- a/arch/arm/mach-socfpga/spl_gen5.c
> +++ b/arch/arm/mach-socfpga/spl_gen5.c
> @@ -24,12 +24,9 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> u32 spl_boot_device(void)
> {
> - const u32 bsel = readl(&sysmgr_regs->bootinfo);
> + const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
>
> switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
> case 0x1: /* FPGA (HPS2FPGA Bridge) */
> @@ -77,13 +74,13 @@ void board_init_f(ulong dummy)
> * First C code to run. Clear fake OCRAM ECC first as SBE
> * and DBE might triggered during power on
> */
> - reg = readl(&sysmgr_regs->eccgrp_ocram);
> + reg = readl(socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
> if (reg & SYSMGR_ECC_OCRAM_SERR)
> writel(SYSMGR_ECC_OCRAM_SERR | SYSMGR_ECC_OCRAM_EN,
> - &sysmgr_regs->eccgrp_ocram);
> + socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
> if (reg & SYSMGR_ECC_OCRAM_DERR)
> writel(SYSMGR_ECC_OCRAM_DERR | SYSMGR_ECC_OCRAM_EN,
> - &sysmgr_regs->eccgrp_ocram);
> + socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
>
> socfpga_sdram_remap_zero();
> socfpga_pl310_clear();
> diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
> index 9a97a84e1e..16f19f901d 100644
> --- a/arch/arm/mach-socfpga/spl_s10.c
> +++ b/arch/arm/mach-socfpga/spl_s10.c
> @@ -22,9 +22,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> u32 spl_boot_device(void)
> {
> /* TODO: Get from SDM or handoff */
> @@ -129,7 +126,8 @@ void board_init_f(ulong dummy)
>
> #ifdef CONFIG_HW_WATCHDOG
> /* Ensure watchdog is paused when debugging is happening */
> - writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
> + writel(SYSMGR_WDDBG_PAUSE_ALL_CPU,
> + socfpga_sysmgr_base + SYSMGR_S10_WDDBG);
>
> /* Enable watchdog before initializing the HW */
> socfpga_per_reset(SOCFPGA_RESET(L4WD0), 1);
> @@ -157,8 +155,10 @@ void board_init_f(ulong dummy)
> cm_print_clock_quick_summary();
>
> /* enable non-secure interface to DMA330 DMA and peripherals */
> - writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS, &sysmgr_regs->dma);
> - writel(SYSMGR_DMAPERIPH_ALL_NS, &sysmgr_regs->dma_periph);
> + writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS,
> + socfpga_sysmgr_base + SYSMGR_S10_DMA);
> + writel(SYSMGR_DMAPERIPH_ALL_NS,
> + socfpga_sysmgr_base + SYSMGR_S10_DMA_PERIPH);
>
> spl_disable_firewall_l4_per();
>
> diff --git a/arch/arm/mach-socfpga/system_manager_gen5.c b/arch/arm/mach-socfpga/system_manager_gen5.c
> index 9d04aea2a8..1053a47201 100644
> --- a/arch/arm/mach-socfpga/system_manager_gen5.c
> +++ b/arch/arm/mach-socfpga/system_manager_gen5.c
> @@ -8,9 +8,6 @@
> #include <asm/arch/system_manager.h>
> #include <asm/arch/fpga_manager.h>
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /*
> * Populate the value for SYSMGR.FPGAINTF.MODULE based on pinmux setting.
> * The value is not wrote to SYSMGR.FPGAINTF.MODULE but
> @@ -21,30 +18,39 @@ static void populate_sysmgr_fpgaintf_module(void)
> u32 handoff_val = 0;
>
> /* ISWGRP_HANDOFF_FPGAINTF */
> - writel(0, &sysmgr_regs->iswgrp_handoff[2]);
> + writel(0, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
>
> /* Enable the signal for those HPS peripherals that use FPGA. */
> - if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_NAND_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_NAND;
> - if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII1_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_EMAC1;
> - if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SDMMC_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SDMMC;
> - if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII0_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_EMAC0;
> - if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM0_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SPIM0;
> - if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM1_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SPIM1;
>
> /* populate (not writing) the value for SYSMGR.FPGAINTF.MODULE
> based on pinmux setting */
> - setbits_le32(&sysmgr_regs->iswgrp_handoff[2], handoff_val);
> + setbits_le32(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2),
> + handoff_val);
>
> - handoff_val = readl(&sysmgr_regs->iswgrp_handoff[2]);
> + handoff_val = readl(socfpga_sysmgr_base +
> + SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
> if (fpgamgr_test_fpga_ready()) {
> /* Enable the required signals only */
> - writel(handoff_val, &sysmgr_regs->fpgaintfgrp_module);
> + writel(handoff_val,
> + socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> }
> }
>
> @@ -53,7 +59,7 @@ static void populate_sysmgr_fpgaintf_module(void)
> */
> void sysmgr_pinmux_init(void)
> {
> - u32 regs = (u32)&sysmgr_regs->emacio[0];
> + u32 regs = (u32)socfpga_sysmgr_base + SYSMGR_GEN5_EMACIO;
> const u8 *sys_mgr_init_table;
> unsigned int len;
> int i;
> @@ -74,9 +80,9 @@ void sysmgr_pinmux_init(void)
> void sysmgr_config_warmrstcfgio(int enable)
> {
> if (enable)
> - setbits_le32(&sysmgr_regs->romcodegrp_ctrl,
> + setbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
> SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
> else
> - clrbits_le32(&sysmgr_regs->romcodegrp_ctrl,
> + clrbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
> SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
> }
> diff --git a/arch/arm/mach-socfpga/system_manager_s10.c b/arch/arm/mach-socfpga/system_manager_s10.c
> index 122828c9ce..c046bb17c9 100644
> --- a/arch/arm/mach-socfpga/system_manager_s10.c
> +++ b/arch/arm/mach-socfpga/system_manager_s10.c
> @@ -10,9 +10,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> /*
> * Configure all the pin muxes
> */
> @@ -32,24 +29,31 @@ void populate_sysmgr_fpgaintf_module(void)
> u32 handoff_val = 0;
>
> /* Enable the signal for those HPS peripherals that use FPGA. */
> - if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_NAND_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_NAND;
> - if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SDMMC_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SDMMC;
> - if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM0_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SPIM0;
> - if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM1_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_SPIM1;
> - writel(handoff_val, &sysmgr_regs->fpgaintf_en_2);
> + writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN2);
>
> handoff_val = 0;
> - if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_EMAC0;
> - if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC1_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_EMAC1;
> - if (readl(&sysmgr_regs->rgmii2usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC2_USEFPGA) ==
> + SYSMGR_FPGAINTF_USEFPGA)
> handoff_val |= SYSMGR_FPGAINTF_EMAC2;
> - writel(handoff_val, &sysmgr_regs->fpgaintf_en_3);
> + writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN3);
> }
>
> /*
> @@ -64,14 +68,16 @@ void populate_sysmgr_pinmux(void)
> sysmgr_pinmux_table_sel(&sys_mgr_table_u32, &len);
> for (i = 0; i < len; i = i + 2) {
> writel(sys_mgr_table_u32[i + 1],
> - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->pinsel0[0]);
> + sys_mgr_table_u32[i] +
> + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_PINSEL0);
> }
>
> /* setup the pin ctrl */
> sysmgr_pinmux_table_ctrl(&sys_mgr_table_u32, &len);
> for (i = 0; i < len; i = i + 2) {
> writel(sys_mgr_table_u32[i + 1],
> - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->ioctrl0[0]);
> + sys_mgr_table_u32[i] +
> + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IOCTRL0);
> }
>
> /* setup the fpga use */
> @@ -79,13 +85,14 @@ void populate_sysmgr_pinmux(void)
> for (i = 0; i < len; i = i + 2) {
> writel(sys_mgr_table_u32[i + 1],
> sys_mgr_table_u32[i] +
> - (u8 *)&sysmgr_regs->rgmii0usefpga);
> + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA);
> }
>
> /* setup the IO delay */
> sysmgr_pinmux_table_delay(&sys_mgr_table_u32, &len);
> for (i = 0; i < len; i = i + 2) {
> writel(sys_mgr_table_u32[i + 1],
> - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->iodelay0[0]);
> + sys_mgr_table_u32[i] +
> + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IODELAY0);
> }
> }
> diff --git a/arch/arm/mach-socfpga/wrap_pll_config_s10.c b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> index 7cafc7dcfc..c9570fea38 100644
> --- a/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> +++ b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> @@ -10,9 +10,6 @@
> #include <asm/arch/handoff_s10.h>
> #include <asm/arch/system_manager.h>
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> const struct cm_config * const cm_get_default_config(void)
> {
> struct cm_config *cm_handoff_cfg = (struct cm_config *)
> @@ -38,9 +35,9 @@ const unsigned int cm_get_osc_clk_hz(void)
> #ifdef CONFIG_SPL_BUILD
> u32 clock = readl(S10_HANDOFF_CLOCK_OSC);
>
> - writel(clock, &sysmgr_regs->boot_scratch_cold1);
> + writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
> #endif
> - return readl(&sysmgr_regs->boot_scratch_cold1);
> + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
> }
>
> const unsigned int cm_get_intosc_clk_hz(void)
> @@ -53,7 +50,7 @@ const unsigned int cm_get_fpga_clk_hz(void)
> #ifdef CONFIG_SPL_BUILD
> u32 clock = readl(S10_HANDOFF_CLOCK_FPGA);
>
> - writel(clock, &sysmgr_regs->boot_scratch_cold2);
> + writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
> #endif
> - return readl(&sysmgr_regs->boot_scratch_cold2);
> + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
> }
> diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
> index fcd89b619d..46a5c466a7 100644
> --- a/drivers/ddr/altera/sdram_gen5.c
> +++ b/drivers/ddr/altera/sdram_gen5.c
> @@ -40,9 +40,6 @@ struct sdram_prot_rule {
> u32 hi_prot_id;
> };
>
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> -
> static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl);
>
> /**
> @@ -455,12 +452,13 @@ int sdram_mmr_init_full(struct socfpga_sdr_ctrl *sdr_ctrl,
> SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB;
> int ret;
>
> - writel(rows, &sysmgr_regs->iswgrp_handoff[4]);
> + writel(rows, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
>
> sdr_load_regs(sdr_ctrl, cfg);
>
> /* saving this value to SYSMGR.ISWGRP.HANDOFF.FPGA2SDR */
> - writel(cfg->fpgaport_rst, &sysmgr_regs->iswgrp_handoff[3]);
> + writel(cfg->fpgaport_rst,
> + socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(3));
>
> /* only enable if the FPGA is programmed */
> if (fpgamgr_test_fpga_ready()) {
> @@ -516,7 +514,7 @@ static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl)
> * since the FB specifies we modify ROWBITs to work around SDRAM
> * controller issue.
> */
> - row = readl(&sysmgr_regs->iswgrp_handoff[4]);
> + row = readl(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
> if (row == 0)
> row = rowbits;
> /*
> diff --git a/drivers/ddr/altera/sdram_s10.c b/drivers/ddr/altera/sdram_s10.c
> index 56cbbac9fe..d5812f2fd7 100644
> --- a/drivers/ddr/altera/sdram_s10.c
> +++ b/drivers/ddr/altera/sdram_s10.c
> @@ -32,9 +32,6 @@ struct altera_sdram_platdata {
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_system_manager *sysmgr_regs =
> - (void *)SOCFPGA_SYSMGR_ADDRESS;
> -
> #define DDR_CONFIG(A, B, C, R) (((A) << 24) | ((B) << 16) | ((C) << 8) | (R))
>
> #define PGTABLE_OFF 0x4000
> @@ -150,7 +147,8 @@ static int emif_reset(struct altera_sdram_platdata *plat)
>
> static int poll_hmc_clock_status(void)
> {
> - return wait_for_bit_le32(&sysmgr_regs->hmc_clk,
> + return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> + SYSMGR_S10_HMC_CLK),
> SYSMGR_HMC_CLK_STATUS_MSK, true, 1000, false);
> }
>
> diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
> index 5fb9d6a191..743326cdb3 100644
> --- a/drivers/fpga/socfpga_arria10.c
> +++ b/drivers/fpga/socfpga_arria10.c
> @@ -30,9 +30,6 @@ DECLARE_GLOBAL_DATA_PTR;
> static const struct socfpga_fpga_manager *fpga_manager_base =
> (void *)SOCFPGA_FPGAMGRREGS_ADDRESS;
>
> -static const struct socfpga_system_manager *system_manager_base =
> - (void *)SOCFPGA_SYSMGR_ADDRESS;
> -
> static void fpgamgr_set_cd_ratio(unsigned long ratio);
>
> static uint32_t fpgamgr_get_msel(void)
> @@ -818,7 +815,7 @@ int socfpga_loadfs(fpga_fs_info *fpga_fsinfo, const void *buf, size_t bsize,
> }
>
> /* Disable all signals from HPS peripheral controller to FPGA */
> - writel(0, &system_manager_base->fpgaintf_en_global);
> + writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
>
> /* Disable all axi bridges (hps2fpga, lwhps2fpga & fpga2hps) */
> socfpga_bridges_reset();
> @@ -910,7 +907,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
> memset(&rbfinfo, 0, sizeof(rbfinfo));
>
> /* Disable all signals from hps peripheral controller to fpga */
> - writel(0, &system_manager_base->fpgaintf_en_global);
> + writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
>
> /* Disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
> socfpga_bridges_reset();
> diff --git a/drivers/fpga/socfpga_gen5.c b/drivers/fpga/socfpga_gen5.c
> index 6d16e0b37f..2b98572742 100644
> --- a/drivers/fpga/socfpga_gen5.c
> +++ b/drivers/fpga/socfpga_gen5.c
> @@ -15,8 +15,6 @@
>
> static struct socfpga_fpga_manager *fpgamgr_regs =
> (struct socfpga_fpga_manager *)SOCFPGA_FPGAMGRREGS_ADDRESS;
> -static struct socfpga_system_manager *sysmgr_regs =
> - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
>
> /* Set CD ratio */
> static void fpgamgr_set_cd_ratio(unsigned long ratio)
> @@ -214,7 +212,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
> /* Prior programming the FPGA, all bridges need to be shut off */
>
> /* Disable all signals from hps peripheral controller to fpga */
> - writel(0, &sysmgr_regs->fpgaintfgrp_module);
> + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
>
> /* Disable all signals from FPGA to HPS SDRAM */
> #define SDR_CTRLGRP_FPGAPORTRST_ADDRESS 0x5080
> diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
> index 739c1629a2..bdcd568d60 100644
> --- a/drivers/mmc/socfpga_dw_mmc.c
> +++ b/drivers/mmc/socfpga_dw_mmc.c
> @@ -20,8 +20,6 @@ DECLARE_GLOBAL_DATA_PTR;
>
> static const struct socfpga_clock_manager *clock_manager_base =
> (void *)SOCFPGA_CLKMGR_ADDRESS;
> -static const struct socfpga_system_manager *system_manager_base =
> - (void *)SOCFPGA_SYSMGR_ADDRESS;
>
> struct socfpga_dwmci_plat {
> struct mmc_config cfg;
> @@ -61,10 +59,10 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
>
> debug("%s: drvsel %d smplsel %d\n", __func__,
> priv->drvsel, priv->smplsel);
> - writel(sdmmc_mask, &system_manager_base->sdmmcgrp_ctrl);
> + writel(sdmmc_mask, socfpga_sysmgr_base + SYSMGR_SDMMC);
>
> debug("%s: SYSMGR_SDMMCGRP_CTRL_REG = 0x%x\n", __func__,
> - readl(&system_manager_base->sdmmcgrp_ctrl));
> + readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
>
> /* Enable SDMMC clock */
> setbits_le32(&clock_manager_base->per_pll.en,
> --
> 2.19.0
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock manager from struct to defines
2019-09-10 8:38 ` [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock " Ley Foon Tan
@ 2019-10-02 9:22 ` Simon Goldschmidt
2019-10-04 2:57 ` Ley Foon Tan
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-02 9:22 UTC (permalink / raw)
To: u-boot
On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
>
> Convert clock manager for Gen5, Arria 10 and Stratix 10 from struct
> to defines.
> No functional change.
>
> Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
>
> ---
> v2:
> - Change to use writel(), readl() and etc.
> - Get base address from DT.
And again: separate patch please. You're mixing "no functional change"
restructuring with actual changes that could possibly break
(non-upstreamed) boards.
Regards,
Simon
> - Add prefix to defines.
> ---
> arch/arm/mach-socfpga/clock_manager.c | 12 +-
> arch/arm/mach-socfpga/clock_manager_arria10.c | 156 +++++++------
> arch/arm/mach-socfpga/clock_manager_gen5.c | 199 +++++++++--------
> arch/arm/mach-socfpga/clock_manager_s10.c | 206 ++++++++++--------
> .../mach-socfpga/include/mach/clock_manager.h | 2 +
> .../include/mach/clock_manager_arria10.h | 133 +++++------
> .../include/mach/clock_manager_gen5.h | 112 ++++------
> .../include/mach/clock_manager_s10.h | 115 ++++------
> arch/arm/mach-socfpga/misc.c | 5 +
> drivers/mmc/socfpga_dw_mmc.c | 11 +-
> 10 files changed, 476 insertions(+), 475 deletions(-)
>
> diff --git a/arch/arm/mach-socfpga/clock_manager.c b/arch/arm/mach-socfpga/clock_manager.c
> index 9f3c643df8..09857dc37b 100644
> --- a/arch/arm/mach-socfpga/clock_manager.c
> +++ b/arch/arm/mach-socfpga/clock_manager.c
> @@ -10,18 +10,15 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_clock_manager *clock_manager_base =
> - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> -
> void cm_wait_for_lock(u32 mask)
> {
> u32 inter_val;
> u32 retry = 0;
> do {
> #if defined(CONFIG_TARGET_SOCFPGA_GEN5)
> - inter_val = readl(&clock_manager_base->inter) & mask;
> + inter_val = readl(socfpga_clkmgr_base + CLKMGR_INTER) & mask;
> #else
> - inter_val = readl(&clock_manager_base->stat) & mask;
> + inter_val = readl(socfpga_clkmgr_base + CLKMGR_STAT) & mask;
> #endif
> /* Wait for stable lock */
> if (inter_val == mask)
> @@ -36,8 +33,9 @@ void cm_wait_for_lock(u32 mask)
> /* function to poll in the fsm busy bit */
> int cm_wait_for_fsm(void)
> {
> - return wait_for_bit_le32(&clock_manager_base->stat,
> - CLKMGR_STAT_BUSY, false, 20000, false);
> + return wait_for_bit_le32((const void *)(socfpga_clkmgr_base +
> + CLKMGR_STAT), CLKMGR_STAT_BUSY, false, 20000,
> + false);
> }
>
> int set_cpu_clk_info(void)
> diff --git a/arch/arm/mach-socfpga/clock_manager_arria10.c b/arch/arm/mach-socfpga/clock_manager_arria10.c
> index 334a79fd9c..33aebd4f47 100644
> --- a/arch/arm/mach-socfpga/clock_manager_arria10.c
> +++ b/arch/arm/mach-socfpga/clock_manager_arria10.c
> @@ -231,9 +231,6 @@ static int of_get_clk_cfg(const void *blob, struct mainpll_cfg *main_cfg,
> return 0;
> }
>
> -static const struct socfpga_clock_manager *clock_manager_base =
> - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> -
> /* calculate the intended main VCO frequency based on handoff */
> static unsigned int cm_calc_handoff_main_vco_clk_hz
> (struct mainpll_cfg *main_cfg)
> @@ -551,12 +548,13 @@ static void cm_pll_ramp_main(struct mainpll_cfg *main_cfg,
> writel((main_cfg->vco1_denom <<
> CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> cm_calc_safe_pll_numer(0, main_cfg, per_cfg, clk_hz),
> - &clock_manager_base->main_pll.vco1);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> mdelay(1);
> cm_wait_for_lock(LOCKED_MASK);
> }
> writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> - main_cfg->vco1_numer, &clock_manager_base->main_pll.vco1);
> + main_cfg->vco1_numer,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> mdelay(1);
> cm_wait_for_lock(LOCKED_MASK);
> }
> @@ -579,14 +577,17 @@ static void cm_pll_ramp_periph(struct mainpll_cfg *main_cfg,
> /* execute the ramping here */
> for (clk_hz = pll_ramp_periph_hz + clk_incr_hz;
> clk_hz < clk_final_hz; clk_hz += clk_incr_hz) {
> - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> - cm_calc_safe_pll_numer(1, main_cfg, per_cfg, clk_hz),
> - &clock_manager_base->per_pll.vco1);
> + writel((per_cfg->vco1_denom <<
> + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> + cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
> + clk_hz),
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> mdelay(1);
> cm_wait_for_lock(LOCKED_MASK);
> }
> writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> - per_cfg->vco1_numer, &clock_manager_base->per_pll.vco1);
> + per_cfg->vco1_numer,
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> mdelay(1);
> cm_wait_for_lock(LOCKED_MASK);
> }
> @@ -638,16 +639,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> /* gate off all mainpll clock excpet HW managed clock */
> writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
> CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> - &clock_manager_base->main_pll.enr);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENR);
>
> /* now we can gate off the rest of the peripheral clocks */
> - writel(0, &clock_manager_base->per_pll.en);
> + writel(0, socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EN);
>
> /* Put all plls in external bypass */
> writel(CLKMGR_MAINPLL_BYPASS_RESET,
> - &clock_manager_base->main_pll.bypasss);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSS);
> writel(CLKMGR_PERPLL_BYPASS_RESET,
> - &clock_manager_base->per_pll.bypasss);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSS);
>
> /*
> * Put all plls VCO registers back to reset value.
> @@ -657,15 +658,17 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> writel(CLKMGR_MAINPLL_VCO0_RESET |
> CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK |
> (main_cfg->vco0_psrc << CLKMGR_MAINPLL_VCO0_PSRC_LSB),
> - &clock_manager_base->main_pll.vco0);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
>
> writel(CLKMGR_PERPLL_VCO0_RESET |
> CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK |
> (per_cfg->vco0_psrc << CLKMGR_PERPLL_VCO0_PSRC_LSB),
> - &clock_manager_base->per_pll.vco0);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
>
> - writel(CLKMGR_MAINPLL_VCO1_RESET, &clock_manager_base->main_pll.vco1);
> - writel(CLKMGR_PERPLL_VCO1_RESET, &clock_manager_base->per_pll.vco1);
> + writel(CLKMGR_MAINPLL_VCO1_RESET,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> + writel(CLKMGR_PERPLL_VCO1_RESET,
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
>
> /* clear the interrupt register status register */
> writel(CLKMGR_CLKMGR_INTR_MAINPLLLOST_SET_MSK |
> @@ -676,7 +679,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK |
> CLKMGR_CLKMGR_INTR_MAINPLLACHIEVED_SET_MSK |
> CLKMGR_CLKMGR_INTR_PERPLLACHIEVED_SET_MSK,
> - &clock_manager_base->intr);
> + socfpga_clkmgr_base + CLKMGR_A10_INTR);
>
> /* Program VCO Numerator and Denominator for main PLL */
> ramp_required = cm_is_pll_ramp_required(0, main_cfg, per_cfg);
> @@ -687,14 +690,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> else if (ramp_required == 2)
> pll_ramp_main_hz = CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
>
> - writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> + writel((main_cfg->vco1_denom <<
> + CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> cm_calc_safe_pll_numer(0, main_cfg, per_cfg,
> pll_ramp_main_hz),
> - &clock_manager_base->main_pll.vco1);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> } else
> - writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> - main_cfg->vco1_numer,
> - &clock_manager_base->main_pll.vco1);
> + writel((main_cfg->vco1_denom <<
> + CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> + main_cfg->vco1_numer,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
>
> /* Program VCO Numerator and Denominator for periph PLL */
> ramp_required = cm_is_pll_ramp_required(1, main_cfg, per_cfg);
> @@ -707,23 +712,25 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> pll_ramp_periph_hz =
> CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
>
> - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> + writel((per_cfg->vco1_denom <<
> + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
> pll_ramp_periph_hz),
> - &clock_manager_base->per_pll.vco1);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> } else
> - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> + writel((per_cfg->vco1_denom <<
> + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> per_cfg->vco1_numer,
> - &clock_manager_base->per_pll.vco1);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
>
> /* Wait for at least 5 us */
> udelay(5);
>
> /* Now deassert BGPWRDN and PWRDN */
> - clrbits_le32(&clock_manager_base->main_pll.vco0,
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> CLKMGR_MAINPLL_VCO0_BGPWRDN_SET_MSK |
> CLKMGR_MAINPLL_VCO0_PWRDN_SET_MSK);
> - clrbits_le32(&clock_manager_base->per_pll.vco0,
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> CLKMGR_PERPLL_VCO0_BGPWRDN_SET_MSK |
> CLKMGR_PERPLL_VCO0_PWRDN_SET_MSK);
>
> @@ -731,84 +738,90 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> udelay(7);
>
> /* enable the VCO and disable the external regulator to PLL */
> - writel((readl(&clock_manager_base->main_pll.vco0) &
> + writel((readl(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0) &
> ~CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK) |
> CLKMGR_MAINPLL_VCO0_EN_SET_MSK,
> - &clock_manager_base->main_pll.vco0);
> - writel((readl(&clock_manager_base->per_pll.vco0) &
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
> + writel((readl(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0) &
> ~CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK) |
> CLKMGR_PERPLL_VCO0_EN_SET_MSK,
> - &clock_manager_base->per_pll.vco0);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
>
> /* setup all the main PLL counter and clock source */
> - writel(main_cfg->nocclk,
> - SOCFPGA_CLKMGR_ADDRESS + CLKMGR_MAINPLL_NOC_CLK_OFFSET);
> - writel(main_cfg->mpuclk,
> - SOCFPGA_CLKMGR_ADDRESS + CLKMGR_ALTERAGRP_MPU_CLK_OFFSET);
> + writel(main_cfg->nocclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_NOCCLK);
> + writel(main_cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_MPUCLK);
>
> /* main_emaca_clk divider */
> - writel(main_cfg->cntr2clk_cnt, &clock_manager_base->main_pll.cntr2clk);
> + writel(main_cfg->cntr2clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR2CLK);
> /* main_emacb_clk divider */
> - writel(main_cfg->cntr3clk_cnt, &clock_manager_base->main_pll.cntr3clk);
> + writel(main_cfg->cntr3clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR3CLK);
> /* main_emac_ptp_clk divider */
> - writel(main_cfg->cntr4clk_cnt, &clock_manager_base->main_pll.cntr4clk);
> + writel(main_cfg->cntr4clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR4CLK);
> /* main_gpio_db_clk divider */
> - writel(main_cfg->cntr5clk_cnt, &clock_manager_base->main_pll.cntr5clk);
> + writel(main_cfg->cntr5clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR5CLK);
> /* main_sdmmc_clk divider */
> - writel(main_cfg->cntr6clk_cnt, &clock_manager_base->main_pll.cntr6clk);
> + writel(main_cfg->cntr6clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR6CLK);
> /* main_s2f_user0_clk divider */
> writel(main_cfg->cntr7clk_cnt |
> (main_cfg->cntr7clk_src << CLKMGR_MAINPLL_CNTR7CLK_SRC_LSB),
> - &clock_manager_base->main_pll.cntr7clk);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR7CLK);
> /* main_s2f_user1_clk divider */
> - writel(main_cfg->cntr8clk_cnt, &clock_manager_base->main_pll.cntr8clk);
> + writel(main_cfg->cntr8clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR8CLK);
> /* main_hmc_pll_clk divider */
> writel(main_cfg->cntr9clk_cnt |
> (main_cfg->cntr9clk_src << CLKMGR_MAINPLL_CNTR9CLK_SRC_LSB),
> - &clock_manager_base->main_pll.cntr9clk);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR9CLK);
> /* main_periph_ref_clk divider */
> writel(main_cfg->cntr15clk_cnt,
> - &clock_manager_base->main_pll.cntr15clk);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR15CLK);
>
> /* setup all the peripheral PLL counter and clock source */
> /* peri_emaca_clk divider */
> writel(per_cfg->cntr2clk_cnt |
> (per_cfg->cntr2clk_src << CLKMGR_PERPLL_CNTR2CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr2clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR2CLK);
> /* peri_emacb_clk divider */
> writel(per_cfg->cntr3clk_cnt |
> (per_cfg->cntr3clk_src << CLKMGR_PERPLL_CNTR3CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr3clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR3CLK);
> /* peri_emac_ptp_clk divider */
> writel(per_cfg->cntr4clk_cnt |
> (per_cfg->cntr4clk_src << CLKMGR_PERPLL_CNTR4CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr4clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR4CLK);
> /* peri_gpio_db_clk divider */
> writel(per_cfg->cntr5clk_cnt |
> (per_cfg->cntr5clk_src << CLKMGR_PERPLL_CNTR5CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr5clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR5CLK);
> /* peri_sdmmc_clk divider */
> writel(per_cfg->cntr6clk_cnt |
> (per_cfg->cntr6clk_src << CLKMGR_PERPLL_CNTR6CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr6clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR6CLK);
> /* peri_s2f_user0_clk divider */
> - writel(per_cfg->cntr7clk_cnt, &clock_manager_base->per_pll.cntr7clk);
> + writel(per_cfg->cntr7clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR7CLK);
> /* peri_s2f_user1_clk divider */
> writel(per_cfg->cntr8clk_cnt |
> (per_cfg->cntr8clk_src << CLKMGR_PERPLL_CNTR8CLK_SRC_LSB),
> - &clock_manager_base->per_pll.cntr8clk);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR8CLK);
> /* peri_hmc_pll_clk divider */
> - writel(per_cfg->cntr9clk_cnt, &clock_manager_base->per_pll.cntr9clk);
> + writel(per_cfg->cntr9clk_cnt,
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR9CLK);
>
> /* setup all the external PLL counter */
> /* mpu wrapper / external divider */
> writel(main_cfg->mpuclk_cnt |
> (main_cfg->mpuclk_src << CLKMGR_MAINPLL_MPUCLK_SRC_LSB),
> - &clock_manager_base->main_pll.mpuclk);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_MPUCLK);
> /* NOC wrapper / external divider */
> writel(main_cfg->nocclk_cnt |
> (main_cfg->nocclk_src << CLKMGR_MAINPLL_NOCCLK_SRC_LSB),
> - &clock_manager_base->main_pll.nocclk);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCCLK);
> /* NOC subclock divider such as l4 */
> writel(main_cfg->nocdiv_l4mainclk |
> (main_cfg->nocdiv_l4mpclk <<
> @@ -821,10 +834,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> CLKMGR_MAINPLL_NOCDIV_CSTRACECLK_LSB) |
> (main_cfg->nocdiv_cspdbclk <<
> CLKMGR_MAINPLL_NOCDIV_CSPDBGCLK_LSB),
> - &clock_manager_base->main_pll.nocdiv);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCDIV);
> /* gpio_db external divider */
> writel(per_cfg->gpiodiv_gpiodbclk,
> - &clock_manager_base->per_pll.gpiodiv);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_GPIOFIV);
>
> /* setup the EMAC clock mux select */
> writel((per_cfg->emacctl_emac0sel <<
> @@ -833,7 +846,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> CLKMGR_PERPLL_EMACCTL_EMAC1SEL_LSB) |
> (per_cfg->emacctl_emac2sel <<
> CLKMGR_PERPLL_EMACCTL_EMAC2SEL_LSB),
> - &clock_manager_base->per_pll.emacctl);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EMACCTL);
>
> /* at this stage, check for PLL lock status */
> cm_wait_for_lock(LOCKED_MASK);
> @@ -843,33 +856,33 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> * assert/deassert outresetall
> */
> /* assert mainpll outresetall */
> - setbits_le32(&clock_manager_base->main_pll.vco0,
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
> /* assert perpll outresetall */
> - setbits_le32(&clock_manager_base->per_pll.vco0,
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
> /* de-assert mainpll outresetall */
> - clrbits_le32(&clock_manager_base->main_pll.vco0,
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
> /* de-assert perpll outresetall */
> - clrbits_le32(&clock_manager_base->per_pll.vco0,
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
>
> /* Take all PLLs out of bypass when boot mode is cleared. */
> /* release mainpll from bypass */
> writel(CLKMGR_MAINPLL_BYPASS_RESET,
> - &clock_manager_base->main_pll.bypassr);
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSR);
> /* wait till Clock Manager is not busy */
> cm_wait_for_fsm();
>
> /* release perpll from bypass */
> writel(CLKMGR_PERPLL_BYPASS_RESET,
> - &clock_manager_base->per_pll.bypassr);
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSR);
> /* wait till Clock Manager is not busy */
> cm_wait_for_fsm();
>
> /* clear boot mode */
> - clrbits_le32(&clock_manager_base->ctrl,
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
> CLKMGR_CLKMGR_CTL_BOOTMOD_SET_MSK);
> /* wait till Clock Manager is not busy */
> cm_wait_for_fsm();
> @@ -882,9 +895,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
>
> /* Now ungate non-hw-managed clocks */
> writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
> - CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> - &clock_manager_base->main_pll.ens);
> - writel(CLKMGR_PERPLL_EN_RESET, &clock_manager_base->per_pll.ens);
> + CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENS);
> + writel(CLKMGR_PERPLL_EN_RESET,
> + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_ENS);
>
> /* Clear the loss lock and slip bits as they might set during
> clock reconfiguration */
> @@ -894,14 +908,14 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> CLKMGR_CLKMGR_INTR_PERPLLRFSLIP_SET_MSK |
> CLKMGR_CLKMGR_INTR_MAINPLLFBSLIP_SET_MSK |
> CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK,
> - &clock_manager_base->intr);
> + socfpga_clkmgr_base + CLKMGR_A10_INTR);
>
> return 0;
> }
>
> static void cm_use_intosc(void)
> {
> - setbits_le32(&clock_manager_base->ctrl,
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
> CLKMGR_CLKMGR_CTL_BOOTCLK_INTOSC_SET_MSK);
> }
>
> diff --git a/arch/arm/mach-socfpga/clock_manager_gen5.c b/arch/arm/mach-socfpga/clock_manager_gen5.c
> index 3a64600861..c9990af46f 100644
> --- a/arch/arm/mach-socfpga/clock_manager_gen5.c
> +++ b/arch/arm/mach-socfpga/clock_manager_gen5.c
> @@ -9,23 +9,20 @@
> #include <asm/arch/clock_manager.h>
> #include <wait_bit.h>
>
> -static const struct socfpga_clock_manager *clock_manager_base =
> - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> -
> /*
> * function to write the bypass register which requires a poll of the
> * busy bit
> */
> static void cm_write_bypass(u32 val)
> {
> - writel(val, &clock_manager_base->bypass);
> + writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_BYPASS);
> cm_wait_for_fsm();
> }
>
> /* function to write the ctrl register which requires a poll of the busy bit */
> static void cm_write_ctrl(u32 val)
> {
> - writel(val, &clock_manager_base->ctrl);
> + writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_CTRL);
> cm_wait_for_fsm();
> }
>
> @@ -79,8 +76,8 @@ int cm_basic_init(const struct cm_config * const cfg)
> * gatting off the rest of the periperal clocks.
> */
> writel(~CLKMGR_PERPLLGRP_EN_NANDCLK_MASK &
> - readl(&clock_manager_base->per_pll.en),
> - &clock_manager_base->per_pll.en);
> + readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN),
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
>
> /* DO NOT GATE OFF DEBUG CLOCKS & BRIDGE CLOCKS */
> writel(CLKMGR_MAINPLLGRP_EN_DBGTIMERCLK_MASK |
> @@ -89,12 +86,12 @@ int cm_basic_init(const struct cm_config * const cfg)
> CLKMGR_MAINPLLGRP_EN_DBGATCLK_MASK |
> CLKMGR_MAINPLLGRP_EN_S2FUSER0CLK_MASK |
> CLKMGR_MAINPLLGRP_EN_L4MPCLK_MASK,
> - &clock_manager_base->main_pll.en);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
>
> - writel(0, &clock_manager_base->sdr_pll.en);
> + writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
>
> /* now we can gate off the rest of the peripheral clocks */
> - writel(0, &clock_manager_base->per_pll.en);
> + writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
>
> /* Put all plls in bypass */
> cm_write_bypass(CLKMGR_BYPASS_PERPLL | CLKMGR_BYPASS_SDRPLL |
> @@ -103,13 +100,13 @@ int cm_basic_init(const struct cm_config * const cfg)
> /* Put all plls VCO registers back to reset value. */
> writel(CLKMGR_MAINPLLGRP_VCO_RESET_VALUE &
> ~CLKMGR_MAINPLLGRP_VCO_REGEXTSEL_MASK,
> - &clock_manager_base->main_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> writel(CLKMGR_PERPLLGRP_VCO_RESET_VALUE &
> ~CLKMGR_PERPLLGRP_VCO_REGEXTSEL_MASK,
> - &clock_manager_base->per_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> writel(CLKMGR_SDRPLLGRP_VCO_RESET_VALUE &
> ~CLKMGR_SDRPLLGRP_VCO_REGEXTSEL_MASK,
> - &clock_manager_base->sdr_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
> /*
> * The clocks to the flash devices and the L4_MAIN clocks can
> @@ -119,23 +116,26 @@ int cm_basic_init(const struct cm_config * const cfg)
> * after exiting safe mode but before ungating the clocks.
> */
> writel(CLKMGR_PERPLLGRP_SRC_RESET_VALUE,
> - &clock_manager_base->per_pll.src);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> writel(CLKMGR_MAINPLLGRP_L4SRC_RESET_VALUE,
> - &clock_manager_base->main_pll.l4src);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
>
> /* read back for the required 5 us delay. */
> - readl(&clock_manager_base->main_pll.vco);
> - readl(&clock_manager_base->per_pll.vco);
> - readl(&clock_manager_base->sdr_pll.vco);
> + readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> + readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> + readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
>
> /*
> * We made sure bgpwr down was assert for 5 us. Now deassert BG PWR DN
> * with numerator and denominator.
> */
> - writel(cfg->main_vco_base, &clock_manager_base->main_pll.vco);
> - writel(cfg->peri_vco_base, &clock_manager_base->per_pll.vco);
> - writel(cfg->sdram_vco_base, &clock_manager_base->sdr_pll.vco);
> + writel(cfg->main_vco_base,
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> + writel(cfg->peri_vco_base,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> + writel(cfg->sdram_vco_base,
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
> /*
> * Time starts here. Must wait 7 us from
> @@ -144,44 +144,53 @@ int cm_basic_init(const struct cm_config * const cfg)
> end = timer_get_us() + 7;
>
> /* main mpu */
> - writel(cfg->mpuclk, &clock_manager_base->main_pll.mpuclk);
> + writel(cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
>
> /* altera group mpuclk */
> - writel(cfg->altera_grp_mpuclk, &clock_manager_base->altera.mpuclk);
> + writel(cfg->altera_grp_mpuclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
>
> /* main main clock */
> - writel(cfg->mainclk, &clock_manager_base->main_pll.mainclk);
> + writel(cfg->mainclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
>
> /* main for dbg */
> - writel(cfg->dbgatclk, &clock_manager_base->main_pll.dbgatclk);
> + writel(cfg->dbgatclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGATCLK);
>
> /* main for cfgs2fuser0clk */
> writel(cfg->cfg2fuser0clk,
> - &clock_manager_base->main_pll.cfgs2fuser0clk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK);
>
> /* Peri emac0 50 MHz default to RMII */
> - writel(cfg->emac0clk, &clock_manager_base->per_pll.emac0clk);
> + writel(cfg->emac0clk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC0CLK);
>
> /* Peri emac1 50 MHz default to RMII */
> - writel(cfg->emac1clk, &clock_manager_base->per_pll.emac1clk);
> + writel(cfg->emac1clk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC1CLK);
>
> /* Peri QSPI */
> - writel(cfg->mainqspiclk, &clock_manager_base->main_pll.mainqspiclk);
> + writel(cfg->mainqspiclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
>
> - writel(cfg->perqspiclk, &clock_manager_base->per_pll.perqspiclk);
> + writel(cfg->perqspiclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERQSPICLK);
>
> /* Peri pernandsdmmcclk */
> writel(cfg->mainnandsdmmcclk,
> - &clock_manager_base->main_pll.mainnandsdmmcclk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
>
> writel(cfg->pernandsdmmcclk,
> - &clock_manager_base->per_pll.pernandsdmmcclk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
>
> /* Peri perbaseclk */
> - writel(cfg->perbaseclk, &clock_manager_base->per_pll.perbaseclk);
> + writel(cfg->perbaseclk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
>
> /* Peri s2fuser1clk */
> - writel(cfg->s2fuser1clk, &clock_manager_base->per_pll.s2fuser1clk);
> + writel(cfg->s2fuser1clk,
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_S2FUSER1CLK);
>
> /* 7 us must have elapsed before we can enable the VCO */
> while (timer_get_us() < end)
> @@ -190,101 +199,106 @@ int cm_basic_init(const struct cm_config * const cfg)
> /* Enable vco */
> /* main pll vco */
> writel(cfg->main_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> - &clock_manager_base->main_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
>
> /* periferal pll */
> writel(cfg->peri_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> - &clock_manager_base->per_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
>
> /* sdram pll vco */
> writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> - &clock_manager_base->sdr_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
> /* L3 MP and L3 SP */
> - writel(cfg->maindiv, &clock_manager_base->main_pll.maindiv);
> + writel(cfg->maindiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
>
> - writel(cfg->dbgdiv, &clock_manager_base->main_pll.dbgdiv);
> + writel(cfg->dbgdiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGDIV);
>
> - writel(cfg->tracediv, &clock_manager_base->main_pll.tracediv);
> + writel(cfg->tracediv,
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_TRACEDIV);
>
> /* L4 MP, L4 SP, can0, and can1 */
> - writel(cfg->perdiv, &clock_manager_base->per_pll.div);
> + writel(cfg->perdiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_DIV);
>
> - writel(cfg->gpiodiv, &clock_manager_base->per_pll.gpiodiv);
> + writel(cfg->gpiodiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_GPIODIV);
>
> cm_wait_for_lock(LOCKED_MASK);
>
> /* write the sdram clock counters before toggling outreset all */
> writel(cfg->ddrdqsclk & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK,
> - &clock_manager_base->sdr_pll.ddrdqsclk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
>
> writel(cfg->ddr2xdqsclk & CLKMGR_SDRPLLGRP_DDR2XDQSCLK_CNT_MASK,
> - &clock_manager_base->sdr_pll.ddr2xdqsclk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK);
>
> writel(cfg->ddrdqclk & CLKMGR_SDRPLLGRP_DDRDQCLK_CNT_MASK,
> - &clock_manager_base->sdr_pll.ddrdqclk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQCLK);
>
> writel(cfg->s2fuser2clk & CLKMGR_SDRPLLGRP_S2FUSER2CLK_CNT_MASK,
> - &clock_manager_base->sdr_pll.s2fuser2clk);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_S2FUSER2CLK);
>
> /*
> * after locking, but before taking out of bypass
> * assert/deassert outresetall
> */
> - u32 mainvco = readl(&clock_manager_base->main_pll.vco);
> + u32 mainvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
>
> /* assert main outresetall */
> writel(mainvco | CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
> - &clock_manager_base->main_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
>
> - u32 periphvco = readl(&clock_manager_base->per_pll.vco);
> + u32 periphvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
>
> /* assert pheriph outresetall */
> writel(periphvco | CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
> - &clock_manager_base->per_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
>
> /* assert sdram outresetall */
> - writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN|
> - CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
> - &clock_manager_base->sdr_pll.vco);
> + writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN |
> + CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
> /* deassert main outresetall */
> writel(mainvco & ~CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
> - &clock_manager_base->main_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
>
> /* deassert pheriph outresetall */
> writel(periphvco & ~CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
> - &clock_manager_base->per_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
>
> /* deassert sdram outresetall */
> writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> - &clock_manager_base->sdr_pll.vco);
> + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
>
> /*
> * now that we've toggled outreset all, all the clocks
> * are aligned nicely; so we can change any phase.
> */
> ret = cm_write_with_phase(cfg->ddrdqsclk,
> - &clock_manager_base->sdr_pll.ddrdqsclk,
> + (const void *)(socfpga_clkmgr_base +
> + CLKMGR_GEN5_SDRPLL_DDRDQSCLK),
> CLKMGR_SDRPLLGRP_DDRDQSCLK_PHASE_MASK);
> if (ret)
> return ret;
>
> /* SDRAM DDR2XDQSCLK */
> ret = cm_write_with_phase(cfg->ddr2xdqsclk,
> - &clock_manager_base->sdr_pll.ddr2xdqsclk,
> + (const void *)(socfpga_clkmgr_base +
> + CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK),
> CLKMGR_SDRPLLGRP_DDR2XDQSCLK_PHASE_MASK);
> if (ret)
> return ret;
>
> ret = cm_write_with_phase(cfg->ddrdqclk,
> - &clock_manager_base->sdr_pll.ddrdqclk,
> + (const void *)(socfpga_clkmgr_base +
> + CLKMGR_GEN5_SDRPLL_DDRDQCLK),
> CLKMGR_SDRPLLGRP_DDRDQCLK_PHASE_MASK);
> if (ret)
> return ret;
>
> ret = cm_write_with_phase(cfg->s2fuser2clk,
> - &clock_manager_base->sdr_pll.s2fuser2clk,
> + (const void *)(socfpga_clkmgr_base +
> + CLKMGR_GEN5_SDRPLL_S2FUSER2CLK),
> CLKMGR_SDRPLLGRP_S2FUSER2CLK_PHASE_MASK);
> if (ret)
> return ret;
> @@ -293,24 +307,26 @@ int cm_basic_init(const struct cm_config * const cfg)
> cm_write_bypass(0);
>
> /* clear safe mode */
> - cm_write_ctrl(readl(&clock_manager_base->ctrl) | CLKMGR_CTRL_SAFEMODE);
> + cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_GEN5_CTRL) |
> + CLKMGR_CTRL_SAFEMODE);
>
> /*
> * now that safe mode is clear with clocks gated
> * it safe to change the source mux for the flashes the the L4_MAIN
> */
> - writel(cfg->persrc, &clock_manager_base->per_pll.src);
> - writel(cfg->l4src, &clock_manager_base->main_pll.l4src);
> + writel(cfg->persrc, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> + writel(cfg->l4src, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
>
> /* Now ungate non-hw-managed clocks */
> - writel(~0, &clock_manager_base->main_pll.en);
> - writel(~0, &clock_manager_base->per_pll.en);
> - writel(~0, &clock_manager_base->sdr_pll.en);
> + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
> + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
> + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
>
> /* Clear the loss of lock bits (write 1 to clear) */
> - writel(CLKMGR_INTER_SDRPLLLOST_MASK | CLKMGR_INTER_PERPLLLOST_MASK |
> - CLKMGR_INTER_MAINPLLLOST_MASK,
> - &clock_manager_base->inter);
> + writel(CLKMGR_INTER_SDRPLLLOST_MASK |
> + CLKMGR_INTER_PERPLLLOST_MASK |
> + CLKMGR_INTER_MAINPLLLOST_MASK,
> + socfpga_clkmgr_base + CLKMGR_GEN5_INTER);
>
> return 0;
> }
> @@ -320,7 +336,7 @@ static unsigned int cm_get_main_vco_clk_hz(void)
> u32 reg, clock;
>
> /* get the main VCO clock */
> - reg = readl(&clock_manager_base->main_pll.vco);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> clock = cm_get_osc_clk_hz(1);
> clock /= ((reg & CLKMGR_MAINPLLGRP_VCO_DENOM_MASK) >>
> CLKMGR_MAINPLLGRP_VCO_DENOM_OFFSET) + 1;
> @@ -335,7 +351,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
> u32 reg, clock = 0;
>
> /* identify PER PLL clock source */
> - reg = readl(&clock_manager_base->per_pll.vco);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> reg = (reg & CLKMGR_PERPLLGRP_VCO_SSRC_MASK) >>
> CLKMGR_PERPLLGRP_VCO_SSRC_OFFSET;
> if (reg == CLKMGR_VCO_SSRC_EOSC1)
> @@ -346,7 +362,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
> clock = cm_get_f2s_per_ref_clk_hz();
>
> /* get the PER VCO clock */
> - reg = readl(&clock_manager_base->per_pll.vco);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> clock /= ((reg & CLKMGR_PERPLLGRP_VCO_DENOM_MASK) >>
> CLKMGR_PERPLLGRP_VCO_DENOM_OFFSET) + 1;
> clock *= ((reg & CLKMGR_PERPLLGRP_VCO_NUMER_MASK) >>
> @@ -362,9 +378,9 @@ unsigned long cm_get_mpu_clk_hz(void)
> clock = cm_get_main_vco_clk_hz();
>
> /* get the MPU clock */
> - reg = readl(&clock_manager_base->altera.mpuclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
> clock /= (reg + 1);
> - reg = readl(&clock_manager_base->main_pll.mpuclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
> clock /= (reg + 1);
> return clock;
> }
> @@ -374,7 +390,7 @@ unsigned long cm_get_sdram_clk_hz(void)
> u32 reg, clock = 0;
>
> /* identify SDRAM PLL clock source */
> - reg = readl(&clock_manager_base->sdr_pll.vco);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> reg = (reg & CLKMGR_SDRPLLGRP_VCO_SSRC_MASK) >>
> CLKMGR_SDRPLLGRP_VCO_SSRC_OFFSET;
> if (reg == CLKMGR_VCO_SSRC_EOSC1)
> @@ -385,14 +401,14 @@ unsigned long cm_get_sdram_clk_hz(void)
> clock = cm_get_f2s_sdr_ref_clk_hz();
>
> /* get the SDRAM VCO clock */
> - reg = readl(&clock_manager_base->sdr_pll.vco);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> clock /= ((reg & CLKMGR_SDRPLLGRP_VCO_DENOM_MASK) >>
> CLKMGR_SDRPLLGRP_VCO_DENOM_OFFSET) + 1;
> clock *= ((reg & CLKMGR_SDRPLLGRP_VCO_NUMER_MASK) >>
> CLKMGR_SDRPLLGRP_VCO_NUMER_OFFSET) + 1;
>
> /* get the SDRAM (DDR_DQS) clock */
> - reg = readl(&clock_manager_base->sdr_pll.ddrdqsclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
> reg = (reg & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK) >>
> CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_OFFSET;
> clock /= (reg + 1);
> @@ -405,7 +421,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> u32 reg, clock = 0;
>
> /* identify the source of L4 SP clock */
> - reg = readl(&clock_manager_base->main_pll.l4src);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
> reg = (reg & CLKMGR_MAINPLLGRP_L4SRC_L4SP) >>
> CLKMGR_MAINPLLGRP_L4SRC_L4SP_OFFSET;
>
> @@ -413,20 +429,21 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> clock = cm_get_main_vco_clk_hz();
>
> /* get the clock prior L4 SP divider (main clk) */
> - reg = readl(&clock_manager_base->altera.mainclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MAINCLK);
> clock /= (reg + 1);
> - reg = readl(&clock_manager_base->main_pll.mainclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
> clock /= (reg + 1);
> } else if (reg == CLKMGR_L4_SP_CLK_SRC_PERPLL) {
> clock = cm_get_per_vco_clk_hz();
>
> /* get the clock prior L4 SP divider (periph_base_clk) */
> - reg = readl(&clock_manager_base->per_pll.perbaseclk);
> + reg = readl(socfpga_clkmgr_base +
> + CLKMGR_GEN5_PERPLL_PERBASECLK);
> clock /= (reg + 1);
> }
>
> /* get the L4 SP clock which supplied to UART */
> - reg = readl(&clock_manager_base->main_pll.maindiv);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
> reg = (reg & CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_MASK) >>
> CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_OFFSET;
> clock = clock / (1 << reg);
> @@ -439,7 +456,7 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
> u32 reg, clock = 0;
>
> /* identify the source of MMC clock */
> - reg = readl(&clock_manager_base->per_pll.src);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> reg = (reg & CLKMGR_PERPLLGRP_SRC_SDMMC_MASK) >>
> CLKMGR_PERPLLGRP_SRC_SDMMC_OFFSET;
>
> @@ -449,13 +466,15 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
> clock = cm_get_main_vco_clk_hz();
>
> /* get the SDMMC clock */
> - reg = readl(&clock_manager_base->main_pll.mainnandsdmmcclk);
> + reg = readl(socfpga_clkmgr_base +
> + CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
> clock /= (reg + 1);
> } else if (reg == CLKMGR_SDMMC_CLK_SRC_PER) {
> clock = cm_get_per_vco_clk_hz();
>
> /* get the SDMMC clock */
> - reg = readl(&clock_manager_base->per_pll.pernandsdmmcclk);
> + reg = readl(socfpga_clkmgr_base +
> + CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
> clock /= (reg + 1);
> }
>
> @@ -469,7 +488,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
> u32 reg, clock = 0;
>
> /* identify the source of QSPI clock */
> - reg = readl(&clock_manager_base->per_pll.src);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> reg = (reg & CLKMGR_PERPLLGRP_SRC_QSPI_MASK) >>
> CLKMGR_PERPLLGRP_SRC_QSPI_OFFSET;
>
> @@ -479,13 +498,15 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
> clock = cm_get_main_vco_clk_hz();
>
> /* get the qspi clock */
> - reg = readl(&clock_manager_base->main_pll.mainqspiclk);
> + reg = readl(socfpga_clkmgr_base +
> + CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
> clock /= (reg + 1);
> } else if (reg == CLKMGR_QSPI_CLK_SRC_PER) {
> clock = cm_get_per_vco_clk_hz();
>
> /* get the qspi clock */
> - reg = readl(&clock_manager_base->per_pll.perqspiclk);
> + reg = readl(socfpga_clkmgr_base +
> + CLKMGR_GEN5_PERPLL_PERQSPICLK);
> clock /= (reg + 1);
> }
>
> @@ -499,7 +520,7 @@ unsigned int cm_get_spi_controller_clk_hz(void)
> clock = cm_get_per_vco_clk_hz();
>
> /* get the clock prior L4 SP divider (periph_base_clk) */
> - reg = readl(&clock_manager_base->per_pll.perbaseclk);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
> clock /= (reg + 1);
>
> return clock;
> diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
> index 6cbf07ac6f..c6269701f0 100644
> --- a/arch/arm/mach-socfpga/clock_manager_s10.c
> +++ b/arch/arm/mach-socfpga/clock_manager_s10.c
> @@ -12,29 +12,26 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_clock_manager *clock_manager_base =
> - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> -
> /*
> * function to write the bypass register which requires a poll of the
> * busy bit
> */
> static void cm_write_bypass_mainpll(u32 val)
> {
> - writel(val, &clock_manager_base->main_pll.bypass);
> + writel(val, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_BYPASS);
> cm_wait_for_fsm();
> }
>
> static void cm_write_bypass_perpll(u32 val)
> {
> - writel(val, &clock_manager_base->per_pll.bypass);
> + writel(val, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_BYPASS);
> cm_wait_for_fsm();
> }
>
> /* function to write the ctrl register which requires a poll of the busy bit */
> static void cm_write_ctrl(u32 val)
> {
> - writel(val, &clock_manager_base->ctrl);
> + writel(val, socfpga_clkmgr_base + CLKMGR_S10_CTRL);
> cm_wait_for_fsm();
> }
>
> @@ -66,12 +63,17 @@ void cm_basic_init(const struct cm_config * const cfg)
>
> writel((cfg->main_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
> ~CLKMGR_PLLGLOB_RST_MASK),
> - &clock_manager_base->main_pll.pllglob);
> - writel(cfg->main_pll_fdbck, &clock_manager_base->main_pll.fdbck);
> - writel(vcocalib, &clock_manager_base->main_pll.vcocalib);
> - writel(cfg->main_pll_pllc0, &clock_manager_base->main_pll.pllc0);
> - writel(cfg->main_pll_pllc1, &clock_manager_base->main_pll.pllc1);
> - writel(cfg->main_pll_nocdiv, &clock_manager_base->main_pll.nocdiv);
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
> + writel(cfg->main_pll_fdbck,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
> + writel(vcocalib,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_VCOCALIB);
> + writel(cfg->main_pll_pllc0,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC0);
> + writel(cfg->main_pll_pllc1,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC1);
> + writel(cfg->main_pll_nocdiv,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCDIV);
>
> /* setup peripheral PLL dividers */
> /* calculate the vcocalib value */
> @@ -88,18 +90,23 @@ void cm_basic_init(const struct cm_config * const cfg)
>
> writel((cfg->per_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
> ~CLKMGR_PLLGLOB_RST_MASK),
> - &clock_manager_base->per_pll.pllglob);
> - writel(cfg->per_pll_fdbck, &clock_manager_base->per_pll.fdbck);
> - writel(vcocalib, &clock_manager_base->per_pll.vcocalib);
> - writel(cfg->per_pll_pllc0, &clock_manager_base->per_pll.pllc0);
> - writel(cfg->per_pll_pllc1, &clock_manager_base->per_pll.pllc1);
> - writel(cfg->per_pll_emacctl, &clock_manager_base->per_pll.emacctl);
> - writel(cfg->per_pll_gpiodiv, &clock_manager_base->per_pll.gpiodiv);
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
> + writel(cfg->per_pll_fdbck,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
> + writel(vcocalib, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_VCOCALIB);
> + writel(cfg->per_pll_pllc0,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC0);
> + writel(cfg->per_pll_pllc1,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1);
> + writel(cfg->per_pll_emacctl,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EMACCTL);
> + writel(cfg->per_pll_gpiodiv,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_GPIODIV);
>
> /* Take both PLL out of reset and power up */
> - setbits_le32(&clock_manager_base->main_pll.pllglob,
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB,
> CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
> - setbits_le32(&clock_manager_base->per_pll.pllglob,
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB,
> CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
>
> #define LOCKED_MASK \
> @@ -113,66 +120,85 @@ void cm_basic_init(const struct cm_config * const cfg)
> * only take effect upon value change, we shall set a maximum value as
> * default value.
> */
> - writel(0xff, &clock_manager_base->main_pll.mpuclk);
> - writel(0xff, &clock_manager_base->main_pll.nocclk);
> - writel(0xff, &clock_manager_base->main_pll.cntr2clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr3clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr4clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr5clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr6clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr7clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr8clk);
> - writel(0xff, &clock_manager_base->main_pll.cntr9clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr2clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr3clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr4clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr5clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr6clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr7clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr8clk);
> - writel(0xff, &clock_manager_base->per_pll.cntr9clk);
> -
> - writel(cfg->main_pll_mpuclk, &clock_manager_base->main_pll.mpuclk);
> - writel(cfg->main_pll_nocclk, &clock_manager_base->main_pll.nocclk);
> - writel(cfg->main_pll_cntr2clk, &clock_manager_base->main_pll.cntr2clk);
> - writel(cfg->main_pll_cntr3clk, &clock_manager_base->main_pll.cntr3clk);
> - writel(cfg->main_pll_cntr4clk, &clock_manager_base->main_pll.cntr4clk);
> - writel(cfg->main_pll_cntr5clk, &clock_manager_base->main_pll.cntr5clk);
> - writel(cfg->main_pll_cntr6clk, &clock_manager_base->main_pll.cntr6clk);
> - writel(cfg->main_pll_cntr7clk, &clock_manager_base->main_pll.cntr7clk);
> - writel(cfg->main_pll_cntr8clk, &clock_manager_base->main_pll.cntr8clk);
> - writel(cfg->main_pll_cntr9clk, &clock_manager_base->main_pll.cntr9clk);
> - writel(cfg->per_pll_cntr2clk, &clock_manager_base->per_pll.cntr2clk);
> - writel(cfg->per_pll_cntr3clk, &clock_manager_base->per_pll.cntr3clk);
> - writel(cfg->per_pll_cntr4clk, &clock_manager_base->per_pll.cntr4clk);
> - writel(cfg->per_pll_cntr5clk, &clock_manager_base->per_pll.cntr5clk);
> - writel(cfg->per_pll_cntr6clk, &clock_manager_base->per_pll.cntr6clk);
> - writel(cfg->per_pll_cntr7clk, &clock_manager_base->per_pll.cntr7clk);
> - writel(cfg->per_pll_cntr8clk, &clock_manager_base->per_pll.cntr8clk);
> - writel(cfg->per_pll_cntr9clk, &clock_manager_base->per_pll.cntr9clk);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
> + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
> +
> + writel(cfg->main_pll_mpuclk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
> + writel(cfg->main_pll_nocclk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
> + writel(cfg->main_pll_cntr2clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
> + writel(cfg->main_pll_cntr3clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
> + writel(cfg->main_pll_cntr4clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
> + writel(cfg->main_pll_cntr5clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
> + writel(cfg->main_pll_cntr6clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
> + writel(cfg->main_pll_cntr7clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
> + writel(cfg->main_pll_cntr8clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
> + writel(cfg->main_pll_cntr9clk,
> + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
> + writel(cfg->per_pll_cntr2clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
> + writel(cfg->per_pll_cntr3clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
> + writel(cfg->per_pll_cntr4clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
> + writel(cfg->per_pll_cntr5clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
> + writel(cfg->per_pll_cntr6clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
> + writel(cfg->per_pll_cntr7clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
> + writel(cfg->per_pll_cntr8clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
> + writel(cfg->per_pll_cntr9clk,
> + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
>
> /* Take all PLLs out of bypass */
> cm_write_bypass_mainpll(0);
> cm_write_bypass_perpll(0);
>
> /* clear safe mode / out of boot mode */
> - cm_write_ctrl(readl(&clock_manager_base->ctrl)
> - & ~(CLKMGR_CTRL_SAFEMODE));
> + cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_S10_CTRL) &
> + ~(CLKMGR_CTRL_SAFEMODE));
>
> /* Now ungate non-hw-managed clocks */
> - writel(~0, &clock_manager_base->main_pll.en);
> - writel(~0, &clock_manager_base->per_pll.en);
> + writel(~0, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_EN);
> + writel(~0, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EN);
>
> /* Clear the loss of lock bits (write 1 to clear) */
> - writel(CLKMGR_INTER_PERPLLLOST_MASK | CLKMGR_INTER_MAINPLLLOST_MASK,
> - &clock_manager_base->intrclr);
> + writel(CLKMGR_INTER_PERPLLLOST_MASK |
> + CLKMGR_INTER_MAINPLLLOST_MASK,
> + socfpga_clkmgr_base + CLKMGR_S10_INTRCLR);
> }
>
> static unsigned long cm_get_main_vco_clk_hz(void)
> {
> unsigned long fref, refdiv, mdiv, reg, vco;
>
> - reg = readl(&clock_manager_base->main_pll.pllglob);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
>
> fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
> CLKMGR_PLLGLOB_VCO_PSRC_MASK;
> @@ -191,7 +217,7 @@ static unsigned long cm_get_main_vco_clk_hz(void)
> refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
> CLKMGR_PLLGLOB_REFCLKDIV_MASK;
>
> - reg = readl(&clock_manager_base->main_pll.fdbck);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
> mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
>
> vco = fref / refdiv;
> @@ -203,7 +229,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
> {
> unsigned long fref, refdiv, mdiv, reg, vco;
>
> - reg = readl(&clock_manager_base->per_pll.pllglob);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
>
> fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
> CLKMGR_PLLGLOB_VCO_PSRC_MASK;
> @@ -222,7 +248,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
> refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
> CLKMGR_PLLGLOB_REFCLKDIV_MASK;
>
> - reg = readl(&clock_manager_base->per_pll.fdbck);
> + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
> mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
>
> vco = fref / refdiv;
> @@ -232,20 +258,23 @@ static unsigned long cm_get_per_vco_clk_hz(void)
>
> unsigned long cm_get_mpu_clk_hz(void)
> {
> - unsigned long clock = readl(&clock_manager_base->main_pll.mpuclk);
> + unsigned long clock = readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_MPUCLK);
>
> clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
>
> switch (clock) {
> case CLKMGR_CLKSRC_MAIN:
> clock = cm_get_main_vco_clk_hz();
> - clock /= (readl(&clock_manager_base->main_pll.pllc0) &
> + clock /= (readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_PLLC0) &
> CLKMGR_PLLC0_DIV_MASK);
> break;
>
> case CLKMGR_CLKSRC_PER:
> clock = cm_get_per_vco_clk_hz();
> - clock /= (readl(&clock_manager_base->per_pll.pllc0) &
> + clock /= (readl(socfpga_clkmgr_base +
> + CLKMGR_S10_PERPLL_PLLC0) &
> CLKMGR_CLKCNT_MSK);
> break;
>
> @@ -262,27 +291,28 @@ unsigned long cm_get_mpu_clk_hz(void)
> break;
> }
>
> - clock /= 1 + (readl(&clock_manager_base->main_pll.mpuclk) &
> - CLKMGR_CLKCNT_MSK);
> + clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK) &
> + CLKMGR_CLKCNT_MSK);
> return clock;
> }
>
> unsigned int cm_get_l3_main_clk_hz(void)
> {
> - u32 clock = readl(&clock_manager_base->main_pll.nocclk);
> + u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
>
> clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
>
> switch (clock) {
> case CLKMGR_CLKSRC_MAIN:
> clock = cm_get_main_vco_clk_hz();
> - clock /= (readl(&clock_manager_base->main_pll.pllc1) &
> + clock /= (readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_PLLC1) &
> CLKMGR_PLLC0_DIV_MASK);
> break;
>
> case CLKMGR_CLKSRC_PER:
> clock = cm_get_per_vco_clk_hz();
> - clock /= (readl(&clock_manager_base->per_pll.pllc1) &
> + clock /= (readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1) &
> CLKMGR_CLKCNT_MSK);
> break;
>
> @@ -299,28 +329,30 @@ unsigned int cm_get_l3_main_clk_hz(void)
> break;
> }
>
> - clock /= 1 + (readl(&clock_manager_base->main_pll.nocclk) &
> + clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK) &
> CLKMGR_CLKCNT_MSK);
> return clock;
> }
>
> unsigned int cm_get_mmc_controller_clk_hz(void)
> {
> - u32 clock = readl(&clock_manager_base->per_pll.cntr6clk);
> + u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
>
> clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
>
> switch (clock) {
> case CLKMGR_CLKSRC_MAIN:
> clock = cm_get_l3_main_clk_hz();
> - clock /= 1 + (readl(&clock_manager_base->main_pll.cntr6clk) &
> - CLKMGR_CLKCNT_MSK);
> + clock /= 1 + (readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_CNTR6CLK) &
> + CLKMGR_CLKCNT_MSK);
> break;
>
> case CLKMGR_CLKSRC_PER:
> clock = cm_get_l3_main_clk_hz();
> - clock /= 1 + (readl(&clock_manager_base->per_pll.cntr6clk) &
> - CLKMGR_CLKCNT_MSK);
> + clock /= 1 + (readl(socfpga_clkmgr_base +
> + CLKMGR_S10_PERPLL_CNTR6CLK) &
> + CLKMGR_CLKCNT_MSK);
> break;
>
> case CLKMGR_CLKSRC_OSC1:
> @@ -342,8 +374,9 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> {
> u32 clock = cm_get_l3_main_clk_hz();
>
> - clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
> - CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
> + clock /= (1 << ((readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_NOCDIV) >>
> + CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
> return clock;
> }
>
> @@ -356,8 +389,9 @@ unsigned int cm_get_spi_controller_clk_hz(void)
> {
> u32 clock = cm_get_l3_main_clk_hz();
>
> - clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
> - CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
> + clock /= (1 << ((readl(socfpga_clkmgr_base +
> + CLKMGR_S10_MAINPLL_NOCDIV) >>
> + CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
> return clock;
> }
>
> diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager.h b/arch/arm/mach-socfpga/include/mach/clock_manager.h
> index dd80e3a767..4f9d10dd78 100644
> --- a/arch/arm/mach-socfpga/include/mach/clock_manager.h
> +++ b/arch/arm/mach-socfpga/include/mach/clock_manager.h
> @@ -6,6 +6,8 @@
> #ifndef _CLOCK_MANAGER_H_
> #define _CLOCK_MANAGER_H_
>
> +extern phys_addr_t socfpga_clkmgr_base;
> +
> #ifndef __ASSEMBLER__
> void cm_wait_for_lock(u32 mask);
> int cm_wait_for_fsm(void);
> diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> index de8c22540f..52b579e6e1 100644
> --- a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> @@ -8,86 +8,57 @@
>
> #ifndef __ASSEMBLER__
>
> -struct socfpga_clock_manager_main_pll {
> - u32 vco0;
> - u32 vco1;
> - u32 en;
> - u32 ens;
> - u32 enr;
> - u32 bypass;
> - u32 bypasss;
> - u32 bypassr;
> - u32 mpuclk;
> - u32 nocclk;
> - u32 cntr2clk;
> - u32 cntr3clk;
> - u32 cntr4clk;
> - u32 cntr5clk;
> - u32 cntr6clk;
> - u32 cntr7clk;
> - u32 cntr8clk;
> - u32 cntr9clk;
> - u32 pad_0x48_0x5b[5];
> - u32 cntr15clk;
> - u32 outrst;
> - u32 outrststat;
> - u32 nocdiv;
> - u32 pad_0x6c_0x80[5];
> -};
> -
> -struct socfpga_clock_manager_per_pll {
> - u32 vco0;
> - u32 vco1;
> - u32 en;
> - u32 ens;
> - u32 enr;
> - u32 bypass;
> - u32 bypasss;
> - u32 bypassr;
> - u32 pad_0x20_0x27[2];
> - u32 cntr2clk;
> - u32 cntr3clk;
> - u32 cntr4clk;
> - u32 cntr5clk;
> - u32 cntr6clk;
> - u32 cntr7clk;
> - u32 cntr8clk;
> - u32 cntr9clk;
> - u32 pad_0x48_0x5f[6];
> - u32 outrst;
> - u32 outrststat;
> - u32 emacctl;
> - u32 gpiodiv;
> - u32 pad_0x70_0x80[4];
> -};
> -
> -struct socfpga_clock_manager_altera {
> - u32 mpuclk;
> - u32 nocclk;
> - u32 mainmisc0;
> - u32 mainmisc1;
> - u32 perimisc0;
> - u32 perimisc1;
> -};
> -
> -struct socfpga_clock_manager {
> - /* clkmgr */
> - u32 ctrl;
> - u32 intr;
> - u32 intrs;
> - u32 intrr;
> - u32 intren;
> - u32 intrens;
> - u32 intrenr;
> - u32 stat;
> - u32 testioctrl;
> - u32 _pad_0x24_0x40[7];
> - /* mainpllgrp */
> - struct socfpga_clock_manager_main_pll main_pll;
> - /* perpllgrp */
> - struct socfpga_clock_manager_per_pll per_pll;
> - struct socfpga_clock_manager_altera altera;
> -};
> +/* Clock manager group */
> +#define CLKMGR_A10_CTRL 0
> +#define CLKMGR_A10_INTR 4
> +#define CLKMGR_A10_STAT 0x1c
> +/* MainPLL group */
> +#define CLKMGR_A10_MAINPLL_VCO0 0x40
> +#define CLKMGR_A10_MAINPLL_VCO1 0x44
> +#define CLKMGR_A10_MAINPLL_EN 0x48
> +#define CLKMGR_A10_MAINPLL_ENS 0x4c
> +#define CLKMGR_A10_MAINPLL_ENR 0x50
> +#define CLKMGR_A10_MAINPLL_BYPASS 0x54
> +#define CLKMGR_A10_MAINPLL_BYPASSS 0x58
> +#define CLKMGR_A10_MAINPLL_BYPASSR 0x5c
> +#define CLKMGR_A10_MAINPLL_MPUCLK 0x60
> +#define CLKMGR_A10_MAINPLL_NOCCLK 0x64
> +#define CLKMGR_A10_MAINPLL_CNTR2CLK 0x68
> +#define CLKMGR_A10_MAINPLL_CNTR3CLK 0x6c
> +#define CLKMGR_A10_MAINPLL_CNTR4CLK 0x70
> +#define CLKMGR_A10_MAINPLL_CNTR5CLK 0x74
> +#define CLKMGR_A10_MAINPLL_CNTR6CLK 0x78
> +#define CLKMGR_A10_MAINPLL_CNTR7CLK 0x7c
> +#define CLKMGR_A10_MAINPLL_CNTR8CLK 0x80
> +#define CLKMGR_A10_MAINPLL_CNTR9CLK 0x84
> +#define CLKMGR_A10_MAINPLL_CNTR15CLK 0x9c
> +#define CLKMGR_A10_MAINPLL_NOCDIV 0xa8
> +/* Peripheral PLL group */
> +#define CLKMGR_A10_PERPLL_VCO0 0xc0
> +#define CLKMGR_A10_PERPLL_VCO1 0xc4
> +#define CLKMGR_A10_PERPLL_EN 0xc8
> +#define CLKMGR_A10_PERPLL_ENS 0xcc
> +#define CLKMGR_A10_PERPLL_ENR 0xd0
> +#define CLKMGR_A10_PERPLL_BYPASS 0xd4
> +#define CLKMGR_A10_PERPLL_BYPASSS 0xd8
> +#define CLKMGR_A10_PERPLL_BYPASSR 0xdc
> +#define CLKMGR_A10_PERPLL_CNTR2CLK 0xe8
> +#define CLKMGR_A10_PERPLL_CNTR3CLK 0xec
> +#define CLKMGR_A10_PERPLL_CNTR4CLK 0xf0
> +#define CLKMGR_A10_PERPLL_CNTR5CLK 0xf4
> +#define CLKMGR_A10_PERPLL_CNTR6CLK 0xf8
> +#define CLKMGR_A10_PERPLL_CNTR7CLK 0xfc
> +#define CLKMGR_A10_PERPLL_CNTR8CLK 0x100
> +#define CLKMGR_A10_PERPLL_CNTR9CLK 0x104
> +#define CLKMGR_A10_PERPLL_EMACCTL 0x128
> +#define CLKMGR_A10_PERPLL_GPIOFIV 0x12c
> +/* Altera group */
> +#define CLKMGR_A10_ALTR_MPUCLK 0x140
> +#define CLKMGR_A10_ALTR_NOCCLK 0x144
> +
> +#define CLKMGR_STAT CLKMGR_A10_STAT
> +#define CLKMGR_INTER CLKMGR_A10_INTER
> +#define CLKMGR_PERPLL_EN CLKMGR_A10_PERPLL_EN
>
> #ifdef CONFIG_SPL_BUILD
> int cm_basic_init(const void *blob);
> @@ -100,8 +71,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
>
> #endif /* __ASSEMBLER__ */
>
> -#define CLKMGR_ALTERAGRP_MPU_CLK_OFFSET 0x140
> -#define CLKMGR_MAINPLL_NOC_CLK_OFFSET 0x144
> #define LOCKED_MASK (CLKMGR_CLKMGR_STAT_MAINPLLLOCKED_SET_MSK | \
> CLKMGR_CLKMGR_STAT_PERPLLLOCKED_SET_MSK)
>
> diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> index 5bedf28cf1..caa1231c69 100644
> --- a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> @@ -45,71 +45,53 @@ struct cm_config {
> u32 altera_grp_mpuclk;
> };
>
> -struct socfpga_clock_manager_main_pll {
> - u32 vco;
> - u32 misc;
> - u32 mpuclk;
> - u32 mainclk;
> - u32 dbgatclk;
> - u32 mainqspiclk;
> - u32 mainnandsdmmcclk;
> - u32 cfgs2fuser0clk;
> - u32 en;
> - u32 maindiv;
> - u32 dbgdiv;
> - u32 tracediv;
> - u32 l4src;
> - u32 stat;
> - u32 _pad_0x38_0x40[2];
> -};
> -
> -struct socfpga_clock_manager_per_pll {
> - u32 vco;
> - u32 misc;
> - u32 emac0clk;
> - u32 emac1clk;
> - u32 perqspiclk;
> - u32 pernandsdmmcclk;
> - u32 perbaseclk;
> - u32 s2fuser1clk;
> - u32 en;
> - u32 div;
> - u32 gpiodiv;
> - u32 src;
> - u32 stat;
> - u32 _pad_0x34_0x40[3];
> -};
> -
> -struct socfpga_clock_manager_sdr_pll {
> - u32 vco;
> - u32 ctrl;
> - u32 ddrdqsclk;
> - u32 ddr2xdqsclk;
> - u32 ddrdqclk;
> - u32 s2fuser2clk;
> - u32 en;
> - u32 stat;
> -};
> -
> -struct socfpga_clock_manager_altera {
> - u32 mpuclk;
> - u32 mainclk;
> -};
> -
> -struct socfpga_clock_manager {
> - u32 ctrl;
> - u32 bypass;
> - u32 inter;
> - u32 intren;
> - u32 dbctrl;
> - u32 stat;
> - u32 _pad_0x18_0x3f[10];
> - struct socfpga_clock_manager_main_pll main_pll;
> - struct socfpga_clock_manager_per_pll per_pll;
> - struct socfpga_clock_manager_sdr_pll sdr_pll;
> - struct socfpga_clock_manager_altera altera;
> - u32 _pad_0xe8_0x200[70];
> -};
> +/* Clock manager group */
> +#define CLKMGR_GEN5_CTRL 0
> +#define CLKMGR_GEN5_BYPASS 4
> +#define CLKMGR_GEN5_INTER 8
> +#define CLKMGR_GEN5_STAT 0x14
> +/* MainPLL group */
> +#define CLKMGR_GEN5_MAINPLL_VCO 0x40
> +#define CLKMGR_GEN5_MAINPLL_MISC 0x44
> +#define CLKMGR_GEN5_MAINPLL_MPUCLK 0x48
> +#define CLKMGR_GEN5_MAINPLL_MAINCLK 0x4c
> +#define CLKMGR_GEN5_MAINPLL_DBGATCLK 0x50
> +#define CLKMGR_GEN5_MAINPLL_MAINQSPICLK 0x54
> +#define CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK 0x58
> +#define CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK 0x5c
> +#define CLKMGR_GEN5_MAINPLL_EN 0x60
> +#define CLKMGR_GEN5_MAINPLL_MAINDIV 0x64
> +#define CLKMGR_GEN5_MAINPLL_DBGDIV 0x68
> +#define CLKMGR_GEN5_MAINPLL_TRACEDIV 0x6c
> +#define CLKMGR_GEN5_MAINPLL_L4SRC 0x70
> +/* Peripheral PLL group */
> +#define CLKMGR_GEN5_PERPLL_VCO 0x80
> +#define CLKMGR_GEN5_PERPLL_MISC 0x84
> +#define CLKMGR_GEN5_PERPLL_EMAC0CLK 0x88
> +#define CLKMGR_GEN5_PERPLL_EMAC1CLK 0x8c
> +#define CLKMGR_GEN5_PERPLL_PERQSPICLK 0x90
> +#define CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK 0x94
> +#define CLKMGR_GEN5_PERPLL_PERBASECLK 0x98
> +#define CLKMGR_GEN5_PERPLL_S2FUSER1CLK 0x9c
> +#define CLKMGR_GEN5_PERPLL_EN 0xa0
> +#define CLKMGR_GEN5_PERPLL_DIV 0xa4
> +#define CLKMGR_GEN5_PERPLL_GPIODIV 0xa8
> +#define CLKMGR_GEN5_PERPLL_SRC 0xac
> +/* SDRAM PLL group */
> +#define CLKMGR_GEN5_SDRPLL_VCO 0xc0
> +#define CLKMGR_GEN5_SDRPLL_CTRL 0xc4
> +#define CLKMGR_GEN5_SDRPLL_DDRDQSCLK 0xc8
> +#define CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK 0xcc
> +#define CLKMGR_GEN5_SDRPLL_DDRDQCLK 0xd0
> +#define CLKMGR_GEN5_SDRPLL_S2FUSER2CLK 0xd4
> +#define CLKMGR_GEN5_SDRPLL_EN 0xd8
> +/* Altera group */
> +#define CLKMGR_GEN5_ALTR_MPUCLK 0xe0
> +#define CLKMGR_GEN5_ALTR_MAINCLK 0xe4
> +
> +#define CLKMGR_STAT CLKMGR_GEN5_STAT
> +#define CLKMGR_INTER CLKMGR_GEN5_INTER
> +#define CLKMGR_PERPLL_EN CLKMGR_GEN5_PERPLL_EN
>
> /* Clock speed accessors */
> unsigned long cm_get_mpu_clk_hz(void);
> diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> index 24b20de011..fa0ba26f09 100644
> --- a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> @@ -69,75 +69,54 @@ struct cm_config {
>
> void cm_basic_init(const struct cm_config * const cfg);
>
> -struct socfpga_clock_manager_main_pll {
> - u32 en;
> - u32 ens;
> - u32 enr;
> - u32 bypass;
> - u32 bypasss;
> - u32 bypassr;
> - u32 mpuclk;
> - u32 nocclk;
> - u32 cntr2clk;
> - u32 cntr3clk;
> - u32 cntr4clk;
> - u32 cntr5clk;
> - u32 cntr6clk;
> - u32 cntr7clk;
> - u32 cntr8clk;
> - u32 cntr9clk;
> - u32 nocdiv;
> - u32 pllglob;
> - u32 fdbck;
> - u32 mem;
> - u32 memstat;
> - u32 pllc0;
> - u32 pllc1;
> - u32 vcocalib;
> - u32 _pad_0x90_0xA0[5];
> -};
> -
> -struct socfpga_clock_manager_per_pll {
> - u32 en;
> - u32 ens;
> - u32 enr;
> - u32 bypass;
> - u32 bypasss;
> - u32 bypassr;
> - u32 cntr2clk;
> - u32 cntr3clk;
> - u32 cntr4clk;
> - u32 cntr5clk;
> - u32 cntr6clk;
> - u32 cntr7clk;
> - u32 cntr8clk;
> - u32 cntr9clk;
> - u32 emacctl;
> - u32 gpiodiv;
> - u32 pllglob;
> - u32 fdbck;
> - u32 mem;
> - u32 memstat;
> - u32 pllc0;
> - u32 pllc1;
> - u32 vcocalib;
> - u32 _pad_0x100_0x124[10];
> -};
> +/* Control status */
> +#define CLKMGR_S10_CTRL 0
> +#define CLKMGR_S10_STAT 4
> +#define CLKMGR_S10_INTRCLR 0x14
> +/* Mainpll group */
> +#define CLKMGR_S10_MAINPLL_EN 0x30
> +#define CLKMGR_S10_MAINPLL_BYPASS 0x3c
> +#define CLKMGR_S10_MAINPLL_MPUCLK 0x48
> +#define CLKMGR_S10_MAINPLL_NOCCLK 0x4c
> +#define CLKMGR_S10_MAINPLL_CNTR2CLK 0x50
> +#define CLKMGR_S10_MAINPLL_CNTR3CLK 0x54
> +#define CLKMGR_S10_MAINPLL_CNTR4CLK 0x58
> +#define CLKMGR_S10_MAINPLL_CNTR5CLK 0x5c
> +#define CLKMGR_S10_MAINPLL_CNTR6CLK 0x60
> +#define CLKMGR_S10_MAINPLL_CNTR7CLK 0x64
> +#define CLKMGR_S10_MAINPLL_CNTR8CLK 0x68
> +#define CLKMGR_S10_MAINPLL_CNTR9CLK 0x6c
> +#define CLKMGR_S10_MAINPLL_NOCDIV 0x70
> +#define CLKMGR_S10_MAINPLL_PLLGLOB 0x74
> +#define CLKMGR_S10_MAINPLL_FDBCK 0x78
> +#define CLKMGR_S10_MAINPLL_MEMSTAT 0x80
> +#define CLKMGR_S10_MAINPLL_PLLC0 0x84
> +#define CLKMGR_S10_MAINPLL_PLLC1 0x88
> +#define CLKMGR_S10_MAINPLL_VCOCALIB 0x8c
> +/* Periphpll group */
> +#define CLKMGR_S10_PERPLL_EN 0xa4
> +#define CLKMGR_S10_PERPLL_BYPASS 0xac
> +#define CLKMGR_S10_PERPLL_CNTR2CLK 0xbc
> +#define CLKMGR_S10_PERPLL_CNTR3CLK 0xc0
> +#define CLKMGR_S10_PERPLL_CNTR4CLK 0xc4
> +#define CLKMGR_S10_PERPLL_CNTR5CLK 0xc8
> +#define CLKMGR_S10_PERPLL_CNTR6CLK 0xcc
> +#define CLKMGR_S10_PERPLL_CNTR7CLK 0xd0
> +#define CLKMGR_S10_PERPLL_CNTR8CLK 0xd4
> +#define CLKMGR_S10_PERPLL_CNTR9CLK 0xd8
> +#define CLKMGR_S10_PERPLL_EMACCTL 0xdc
> +#define CLKMGR_S10_PERPLL_GPIODIV 0xe0
> +#define CLKMGR_S10_PERPLL_PLLGLOB 0xe4
> +#define CLKMGR_S10_PERPLL_FDBCK 0xe8
> +#define CLKMGR_S10_PERPLL_MEMSTAT 0xf0
> +#define CLKMGR_S10_PERPLL_PLLC0 0xf4
> +#define CLKMGR_S10_PERPLL_PLLC1 0xf8
> +#define CLKMGR_S10_PERPLL_VCOCALIB 0xfc
> +
> +#define CLKMGR_STAT CLKMGR_S10_STAT
> +#define CLKMGR_INTER CLKMGR_S10_INTER
> +#define CLKMGR_PERPLL_EN CLKMGR_S10_PERPLL_EN
>
> -struct socfpga_clock_manager {
> - u32 ctrl;
> - u32 stat;
> - u32 testioctrl;
> - u32 intrgen;
> - u32 intrmsk;
> - u32 intrclr;
> - u32 intrsts;
> - u32 intrstk;
> - u32 intrraw;
> - u32 _pad_0x24_0x2c[3];
> - struct socfpga_clock_manager_main_pll main_pll;
> - struct socfpga_clock_manager_per_pll per_pll;
> -};
>
> #define CLKMGR_CTRL_SAFEMODE BIT(0)
> #define CLKMGR_BYPASS_MAINPLL_ALL 0x00000007
> diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> index fcc53b6fbc..dffd1b2e41 100644
> --- a/arch/arm/mach-socfpga/misc.c
> +++ b/arch/arm/mach-socfpga/misc.c
> @@ -22,6 +22,7 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> +phys_addr_t socfpga_clkmgr_base __section(".data");
> phys_addr_t socfpga_rstmgr_base __section(".data");
> phys_addr_t socfpga_sysmgr_base __section(".data");
>
> @@ -238,4 +239,8 @@ void socfpga_get_manager_addr(void)
> socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
> if (!socfpga_sysmgr_base)
> hang();
> +
> + socfpga_clkmgr_base = socfpga_get_base_addr("altr,clk-mgr");
> + if (!socfpga_clkmgr_base)
> + hang();
> }
> diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
> index bdcd568d60..aefcae8fb6 100644
> --- a/drivers/mmc/socfpga_dw_mmc.c
> +++ b/drivers/mmc/socfpga_dw_mmc.c
> @@ -18,9 +18,6 @@
>
> DECLARE_GLOBAL_DATA_PTR;
>
> -static const struct socfpga_clock_manager *clock_manager_base =
> - (void *)SOCFPGA_CLKMGR_ADDRESS;
> -
> struct socfpga_dwmci_plat {
> struct mmc_config cfg;
> struct mmc mmc;
> @@ -54,8 +51,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
> ((priv->drvsel & 0x7) << SYSMGR_SDMMC_DRVSEL_SHIFT);
>
> /* Disable SDMMC clock. */
> - clrbits_le32(&clock_manager_base->per_pll.en,
> - CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> + clrbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
> + CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
>
> debug("%s: drvsel %d smplsel %d\n", __func__,
> priv->drvsel, priv->smplsel);
> @@ -65,8 +62,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
> readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
>
> /* Enable SDMMC clock */
> - setbits_le32(&clock_manager_base->per_pll.en,
> - CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> + setbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
> + CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> }
>
> static int socfpga_dwmmc_get_clk_rate(struct udevice *dev)
> --
> 2.19.0
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-10-02 8:13 ` Ley Foon Tan
@ 2019-10-02 9:23 ` Simon Goldschmidt
2019-10-09 18:42 ` Simon Goldschmidt
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-02 9:23 UTC (permalink / raw)
To: u-boot
On Wed, Oct 2, 2019 at 10:13 AM Ley Foon Tan <lftan.linux@gmail.com> wrote:
>
> On Wed, Sep 18, 2019 at 12:23 PM Simon Goldschmidt
> <simon.k.r.goldschmidt@gmail.com> wrote:
> >
> >
> >
> > Ley Foon Tan <lftan.linux@gmail.com> schrieb am Mi., 18. Sep. 2019, 04:32:
> >>
> >> On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
> >> >
> >> >
> >> >
> >> > On 9/10/19 3:37 AM, Ley Foon Tan wrote:
> >> > > This is 2nd version of patchset to convert reset, system and clock manager
> >> > > drivers to use #define instead of struct.
> >> > >
> >> > > Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
> >> > >
> >> > > Patch 1 is new one, patch 2 to 4 have changes.
> >> > >
> >> > > Main changes in this version are:
> >> > > - Get base address from DT
> >> > > - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> >> > > - Add prefix to defines.
> >> > > - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
> >> > >
> >> > > History:
> >> > > v1: https://patchwork.ozlabs.org/cover/1149731/
> >> > >
> >> >
> >> > I think you also need to Simon Goldschmidt to this series.
> >> Simon is in the CC list in my original email.
> >
> >
> > And I'm trying my best to catch up with u-boot mails and patches. I already read it through but failed to find the time to review and test it. Next week, hopefully...
> >
> > Regards,
> > Simon
> >
> >> >
> >> > Beside the minor incorrect address missing a zero in patch 1, I've
> >> > tested this series on the Sockit.
> >> >
> >> > Tested-by: Dinh Nguyen <dinguyen@kernel.org>
>
> Hi Marek and Simon
>
> Any further comment for this series? Otherwise, I will send v3 with
> minor change for Dinh's comment.
I did my best to catch up now. Ping back if there are still patches missing/
uncommented, please.
Regards,
Simon
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock manager from struct to defines
2019-10-02 9:22 ` Simon Goldschmidt
@ 2019-10-04 2:57 ` Ley Foon Tan
0 siblings, 0 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-10-04 2:57 UTC (permalink / raw)
To: u-boot
On Wed, Oct 2, 2019 at 5:22 PM Simon Goldschmidt
<simon.k.r.goldschmidt@gmail.com> wrote:
>
> On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> >
> > Convert clock manager for Gen5, Arria 10 and Stratix 10 from struct
> > to defines.
> > No functional change.
> >
> > Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> >
> > ---
> > v2:
> > - Change to use writel(), readl() and etc.
> > - Get base address from DT.
>
> And again: separate patch please. You're mixing "no functional change"
> restructuring with actual changes that could possibly break
> (non-upstreamed) boards.
The original code is using write() and readl() and etc. I will change
the history message from "change to" to "revert to" to avoid
misleading.
Regards
Ley Foon
>
> Regards,
> Simon
>
> > - Add prefix to defines.
> > ---
> > arch/arm/mach-socfpga/clock_manager.c | 12 +-
> > arch/arm/mach-socfpga/clock_manager_arria10.c | 156 +++++++------
> > arch/arm/mach-socfpga/clock_manager_gen5.c | 199 +++++++++--------
> > arch/arm/mach-socfpga/clock_manager_s10.c | 206 ++++++++++--------
> > .../mach-socfpga/include/mach/clock_manager.h | 2 +
> > .../include/mach/clock_manager_arria10.h | 133 +++++------
> > .../include/mach/clock_manager_gen5.h | 112 ++++------
> > .../include/mach/clock_manager_s10.h | 115 ++++------
> > arch/arm/mach-socfpga/misc.c | 5 +
> > drivers/mmc/socfpga_dw_mmc.c | 11 +-
> > 10 files changed, 476 insertions(+), 475 deletions(-)
> >
> > diff --git a/arch/arm/mach-socfpga/clock_manager.c b/arch/arm/mach-socfpga/clock_manager.c
> > index 9f3c643df8..09857dc37b 100644
> > --- a/arch/arm/mach-socfpga/clock_manager.c
> > +++ b/arch/arm/mach-socfpga/clock_manager.c
> > @@ -10,18 +10,15 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_clock_manager *clock_manager_base =
> > - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> > -
> > void cm_wait_for_lock(u32 mask)
> > {
> > u32 inter_val;
> > u32 retry = 0;
> > do {
> > #if defined(CONFIG_TARGET_SOCFPGA_GEN5)
> > - inter_val = readl(&clock_manager_base->inter) & mask;
> > + inter_val = readl(socfpga_clkmgr_base + CLKMGR_INTER) & mask;
> > #else
> > - inter_val = readl(&clock_manager_base->stat) & mask;
> > + inter_val = readl(socfpga_clkmgr_base + CLKMGR_STAT) & mask;
> > #endif
> > /* Wait for stable lock */
> > if (inter_val == mask)
> > @@ -36,8 +33,9 @@ void cm_wait_for_lock(u32 mask)
> > /* function to poll in the fsm busy bit */
> > int cm_wait_for_fsm(void)
> > {
> > - return wait_for_bit_le32(&clock_manager_base->stat,
> > - CLKMGR_STAT_BUSY, false, 20000, false);
> > + return wait_for_bit_le32((const void *)(socfpga_clkmgr_base +
> > + CLKMGR_STAT), CLKMGR_STAT_BUSY, false, 20000,
> > + false);
> > }
> >
> > int set_cpu_clk_info(void)
> > diff --git a/arch/arm/mach-socfpga/clock_manager_arria10.c b/arch/arm/mach-socfpga/clock_manager_arria10.c
> > index 334a79fd9c..33aebd4f47 100644
> > --- a/arch/arm/mach-socfpga/clock_manager_arria10.c
> > +++ b/arch/arm/mach-socfpga/clock_manager_arria10.c
> > @@ -231,9 +231,6 @@ static int of_get_clk_cfg(const void *blob, struct mainpll_cfg *main_cfg,
> > return 0;
> > }
> >
> > -static const struct socfpga_clock_manager *clock_manager_base =
> > - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> > -
> > /* calculate the intended main VCO frequency based on handoff */
> > static unsigned int cm_calc_handoff_main_vco_clk_hz
> > (struct mainpll_cfg *main_cfg)
> > @@ -551,12 +548,13 @@ static void cm_pll_ramp_main(struct mainpll_cfg *main_cfg,
> > writel((main_cfg->vco1_denom <<
> > CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > cm_calc_safe_pll_numer(0, main_cfg, per_cfg, clk_hz),
> > - &clock_manager_base->main_pll.vco1);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> > mdelay(1);
> > cm_wait_for_lock(LOCKED_MASK);
> > }
> > writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > - main_cfg->vco1_numer, &clock_manager_base->main_pll.vco1);
> > + main_cfg->vco1_numer,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> > mdelay(1);
> > cm_wait_for_lock(LOCKED_MASK);
> > }
> > @@ -579,14 +577,17 @@ static void cm_pll_ramp_periph(struct mainpll_cfg *main_cfg,
> > /* execute the ramping here */
> > for (clk_hz = pll_ramp_periph_hz + clk_incr_hz;
> > clk_hz < clk_final_hz; clk_hz += clk_incr_hz) {
> > - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > - cm_calc_safe_pll_numer(1, main_cfg, per_cfg, clk_hz),
> > - &clock_manager_base->per_pll.vco1);
> > + writel((per_cfg->vco1_denom <<
> > + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > + cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
> > + clk_hz),
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> > mdelay(1);
> > cm_wait_for_lock(LOCKED_MASK);
> > }
> > writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > - per_cfg->vco1_numer, &clock_manager_base->per_pll.vco1);
> > + per_cfg->vco1_numer,
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> > mdelay(1);
> > cm_wait_for_lock(LOCKED_MASK);
> > }
> > @@ -638,16 +639,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > /* gate off all mainpll clock excpet HW managed clock */
> > writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
> > CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> > - &clock_manager_base->main_pll.enr);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENR);
> >
> > /* now we can gate off the rest of the peripheral clocks */
> > - writel(0, &clock_manager_base->per_pll.en);
> > + writel(0, socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EN);
> >
> > /* Put all plls in external bypass */
> > writel(CLKMGR_MAINPLL_BYPASS_RESET,
> > - &clock_manager_base->main_pll.bypasss);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSS);
> > writel(CLKMGR_PERPLL_BYPASS_RESET,
> > - &clock_manager_base->per_pll.bypasss);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSS);
> >
> > /*
> > * Put all plls VCO registers back to reset value.
> > @@ -657,15 +658,17 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > writel(CLKMGR_MAINPLL_VCO0_RESET |
> > CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK |
> > (main_cfg->vco0_psrc << CLKMGR_MAINPLL_VCO0_PSRC_LSB),
> > - &clock_manager_base->main_pll.vco0);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
> >
> > writel(CLKMGR_PERPLL_VCO0_RESET |
> > CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK |
> > (per_cfg->vco0_psrc << CLKMGR_PERPLL_VCO0_PSRC_LSB),
> > - &clock_manager_base->per_pll.vco0);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
> >
> > - writel(CLKMGR_MAINPLL_VCO1_RESET, &clock_manager_base->main_pll.vco1);
> > - writel(CLKMGR_PERPLL_VCO1_RESET, &clock_manager_base->per_pll.vco1);
> > + writel(CLKMGR_MAINPLL_VCO1_RESET,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> > + writel(CLKMGR_PERPLL_VCO1_RESET,
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> >
> > /* clear the interrupt register status register */
> > writel(CLKMGR_CLKMGR_INTR_MAINPLLLOST_SET_MSK |
> > @@ -676,7 +679,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK |
> > CLKMGR_CLKMGR_INTR_MAINPLLACHIEVED_SET_MSK |
> > CLKMGR_CLKMGR_INTR_PERPLLACHIEVED_SET_MSK,
> > - &clock_manager_base->intr);
> > + socfpga_clkmgr_base + CLKMGR_A10_INTR);
> >
> > /* Program VCO Numerator and Denominator for main PLL */
> > ramp_required = cm_is_pll_ramp_required(0, main_cfg, per_cfg);
> > @@ -687,14 +690,16 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > else if (ramp_required == 2)
> > pll_ramp_main_hz = CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
> >
> > - writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > + writel((main_cfg->vco1_denom <<
> > + CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > cm_calc_safe_pll_numer(0, main_cfg, per_cfg,
> > pll_ramp_main_hz),
> > - &clock_manager_base->main_pll.vco1);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> > } else
> > - writel((main_cfg->vco1_denom << CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > - main_cfg->vco1_numer,
> > - &clock_manager_base->main_pll.vco1);
> > + writel((main_cfg->vco1_denom <<
> > + CLKMGR_MAINPLL_VCO1_DENOM_LSB) |
> > + main_cfg->vco1_numer,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO1);
> >
> > /* Program VCO Numerator and Denominator for periph PLL */
> > ramp_required = cm_is_pll_ramp_required(1, main_cfg, per_cfg);
> > @@ -707,23 +712,25 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > pll_ramp_periph_hz =
> > CLKMGR_PLL_RAMP_NOCCLK_THRESHOLD_HZ;
> >
> > - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > + writel((per_cfg->vco1_denom <<
> > + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > cm_calc_safe_pll_numer(1, main_cfg, per_cfg,
> > pll_ramp_periph_hz),
> > - &clock_manager_base->per_pll.vco1);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> > } else
> > - writel((per_cfg->vco1_denom << CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > + writel((per_cfg->vco1_denom <<
> > + CLKMGR_PERPLL_VCO1_DENOM_LSB) |
> > per_cfg->vco1_numer,
> > - &clock_manager_base->per_pll.vco1);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO1);
> >
> > /* Wait for at least 5 us */
> > udelay(5);
> >
> > /* Now deassert BGPWRDN and PWRDN */
> > - clrbits_le32(&clock_manager_base->main_pll.vco0,
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> > CLKMGR_MAINPLL_VCO0_BGPWRDN_SET_MSK |
> > CLKMGR_MAINPLL_VCO0_PWRDN_SET_MSK);
> > - clrbits_le32(&clock_manager_base->per_pll.vco0,
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> > CLKMGR_PERPLL_VCO0_BGPWRDN_SET_MSK |
> > CLKMGR_PERPLL_VCO0_PWRDN_SET_MSK);
> >
> > @@ -731,84 +738,90 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > udelay(7);
> >
> > /* enable the VCO and disable the external regulator to PLL */
> > - writel((readl(&clock_manager_base->main_pll.vco0) &
> > + writel((readl(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0) &
> > ~CLKMGR_MAINPLL_VCO0_REGEXTSEL_SET_MSK) |
> > CLKMGR_MAINPLL_VCO0_EN_SET_MSK,
> > - &clock_manager_base->main_pll.vco0);
> > - writel((readl(&clock_manager_base->per_pll.vco0) &
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0);
> > + writel((readl(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0) &
> > ~CLKMGR_PERPLL_VCO0_REGEXTSEL_SET_MSK) |
> > CLKMGR_PERPLL_VCO0_EN_SET_MSK,
> > - &clock_manager_base->per_pll.vco0);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0);
> >
> > /* setup all the main PLL counter and clock source */
> > - writel(main_cfg->nocclk,
> > - SOCFPGA_CLKMGR_ADDRESS + CLKMGR_MAINPLL_NOC_CLK_OFFSET);
> > - writel(main_cfg->mpuclk,
> > - SOCFPGA_CLKMGR_ADDRESS + CLKMGR_ALTERAGRP_MPU_CLK_OFFSET);
> > + writel(main_cfg->nocclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_NOCCLK);
> > + writel(main_cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_A10_ALTR_MPUCLK);
> >
> > /* main_emaca_clk divider */
> > - writel(main_cfg->cntr2clk_cnt, &clock_manager_base->main_pll.cntr2clk);
> > + writel(main_cfg->cntr2clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR2CLK);
> > /* main_emacb_clk divider */
> > - writel(main_cfg->cntr3clk_cnt, &clock_manager_base->main_pll.cntr3clk);
> > + writel(main_cfg->cntr3clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR3CLK);
> > /* main_emac_ptp_clk divider */
> > - writel(main_cfg->cntr4clk_cnt, &clock_manager_base->main_pll.cntr4clk);
> > + writel(main_cfg->cntr4clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR4CLK);
> > /* main_gpio_db_clk divider */
> > - writel(main_cfg->cntr5clk_cnt, &clock_manager_base->main_pll.cntr5clk);
> > + writel(main_cfg->cntr5clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR5CLK);
> > /* main_sdmmc_clk divider */
> > - writel(main_cfg->cntr6clk_cnt, &clock_manager_base->main_pll.cntr6clk);
> > + writel(main_cfg->cntr6clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR6CLK);
> > /* main_s2f_user0_clk divider */
> > writel(main_cfg->cntr7clk_cnt |
> > (main_cfg->cntr7clk_src << CLKMGR_MAINPLL_CNTR7CLK_SRC_LSB),
> > - &clock_manager_base->main_pll.cntr7clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR7CLK);
> > /* main_s2f_user1_clk divider */
> > - writel(main_cfg->cntr8clk_cnt, &clock_manager_base->main_pll.cntr8clk);
> > + writel(main_cfg->cntr8clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR8CLK);
> > /* main_hmc_pll_clk divider */
> > writel(main_cfg->cntr9clk_cnt |
> > (main_cfg->cntr9clk_src << CLKMGR_MAINPLL_CNTR9CLK_SRC_LSB),
> > - &clock_manager_base->main_pll.cntr9clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR9CLK);
> > /* main_periph_ref_clk divider */
> > writel(main_cfg->cntr15clk_cnt,
> > - &clock_manager_base->main_pll.cntr15clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_CNTR15CLK);
> >
> > /* setup all the peripheral PLL counter and clock source */
> > /* peri_emaca_clk divider */
> > writel(per_cfg->cntr2clk_cnt |
> > (per_cfg->cntr2clk_src << CLKMGR_PERPLL_CNTR2CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr2clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR2CLK);
> > /* peri_emacb_clk divider */
> > writel(per_cfg->cntr3clk_cnt |
> > (per_cfg->cntr3clk_src << CLKMGR_PERPLL_CNTR3CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr3clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR3CLK);
> > /* peri_emac_ptp_clk divider */
> > writel(per_cfg->cntr4clk_cnt |
> > (per_cfg->cntr4clk_src << CLKMGR_PERPLL_CNTR4CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr4clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR4CLK);
> > /* peri_gpio_db_clk divider */
> > writel(per_cfg->cntr5clk_cnt |
> > (per_cfg->cntr5clk_src << CLKMGR_PERPLL_CNTR5CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr5clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR5CLK);
> > /* peri_sdmmc_clk divider */
> > writel(per_cfg->cntr6clk_cnt |
> > (per_cfg->cntr6clk_src << CLKMGR_PERPLL_CNTR6CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr6clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR6CLK);
> > /* peri_s2f_user0_clk divider */
> > - writel(per_cfg->cntr7clk_cnt, &clock_manager_base->per_pll.cntr7clk);
> > + writel(per_cfg->cntr7clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR7CLK);
> > /* peri_s2f_user1_clk divider */
> > writel(per_cfg->cntr8clk_cnt |
> > (per_cfg->cntr8clk_src << CLKMGR_PERPLL_CNTR8CLK_SRC_LSB),
> > - &clock_manager_base->per_pll.cntr8clk);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR8CLK);
> > /* peri_hmc_pll_clk divider */
> > - writel(per_cfg->cntr9clk_cnt, &clock_manager_base->per_pll.cntr9clk);
> > + writel(per_cfg->cntr9clk_cnt,
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_CNTR9CLK);
> >
> > /* setup all the external PLL counter */
> > /* mpu wrapper / external divider */
> > writel(main_cfg->mpuclk_cnt |
> > (main_cfg->mpuclk_src << CLKMGR_MAINPLL_MPUCLK_SRC_LSB),
> > - &clock_manager_base->main_pll.mpuclk);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_MPUCLK);
> > /* NOC wrapper / external divider */
> > writel(main_cfg->nocclk_cnt |
> > (main_cfg->nocclk_src << CLKMGR_MAINPLL_NOCCLK_SRC_LSB),
> > - &clock_manager_base->main_pll.nocclk);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCCLK);
> > /* NOC subclock divider such as l4 */
> > writel(main_cfg->nocdiv_l4mainclk |
> > (main_cfg->nocdiv_l4mpclk <<
> > @@ -821,10 +834,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > CLKMGR_MAINPLL_NOCDIV_CSTRACECLK_LSB) |
> > (main_cfg->nocdiv_cspdbclk <<
> > CLKMGR_MAINPLL_NOCDIV_CSPDBGCLK_LSB),
> > - &clock_manager_base->main_pll.nocdiv);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_NOCDIV);
> > /* gpio_db external divider */
> > writel(per_cfg->gpiodiv_gpiodbclk,
> > - &clock_manager_base->per_pll.gpiodiv);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_GPIOFIV);
> >
> > /* setup the EMAC clock mux select */
> > writel((per_cfg->emacctl_emac0sel <<
> > @@ -833,7 +846,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > CLKMGR_PERPLL_EMACCTL_EMAC1SEL_LSB) |
> > (per_cfg->emacctl_emac2sel <<
> > CLKMGR_PERPLL_EMACCTL_EMAC2SEL_LSB),
> > - &clock_manager_base->per_pll.emacctl);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_EMACCTL);
> >
> > /* at this stage, check for PLL lock status */
> > cm_wait_for_lock(LOCKED_MASK);
> > @@ -843,33 +856,33 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > * assert/deassert outresetall
> > */
> > /* assert mainpll outresetall */
> > - setbits_le32(&clock_manager_base->main_pll.vco0,
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> > CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
> > /* assert perpll outresetall */
> > - setbits_le32(&clock_manager_base->per_pll.vco0,
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> > CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
> > /* de-assert mainpll outresetall */
> > - clrbits_le32(&clock_manager_base->main_pll.vco0,
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_VCO0,
> > CLKMGR_MAINPLL_VCO0_OUTRSTALL_SET_MSK);
> > /* de-assert perpll outresetall */
> > - clrbits_le32(&clock_manager_base->per_pll.vco0,
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_PERPLL_VCO0,
> > CLKMGR_PERPLL_VCO0_OUTRSTALL_SET_MSK);
> >
> > /* Take all PLLs out of bypass when boot mode is cleared. */
> > /* release mainpll from bypass */
> > writel(CLKMGR_MAINPLL_BYPASS_RESET,
> > - &clock_manager_base->main_pll.bypassr);
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_BYPASSR);
> > /* wait till Clock Manager is not busy */
> > cm_wait_for_fsm();
> >
> > /* release perpll from bypass */
> > writel(CLKMGR_PERPLL_BYPASS_RESET,
> > - &clock_manager_base->per_pll.bypassr);
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_BYPASSR);
> > /* wait till Clock Manager is not busy */
> > cm_wait_for_fsm();
> >
> > /* clear boot mode */
> > - clrbits_le32(&clock_manager_base->ctrl,
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
> > CLKMGR_CLKMGR_CTL_BOOTMOD_SET_MSK);
> > /* wait till Clock Manager is not busy */
> > cm_wait_for_fsm();
> > @@ -882,9 +895,10 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> >
> > /* Now ungate non-hw-managed clocks */
> > writel(CLKMGR_MAINPLL_EN_S2FUSER0CLKEN_SET_MSK |
> > - CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> > - &clock_manager_base->main_pll.ens);
> > - writel(CLKMGR_PERPLL_EN_RESET, &clock_manager_base->per_pll.ens);
> > + CLKMGR_MAINPLL_EN_HMCPLLREFCLKEN_SET_MSK,
> > + socfpga_clkmgr_base + CLKMGR_A10_MAINPLL_ENS);
> > + writel(CLKMGR_PERPLL_EN_RESET,
> > + socfpga_clkmgr_base + CLKMGR_A10_PERPLL_ENS);
> >
> > /* Clear the loss lock and slip bits as they might set during
> > clock reconfiguration */
> > @@ -894,14 +908,14 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
> > CLKMGR_CLKMGR_INTR_PERPLLRFSLIP_SET_MSK |
> > CLKMGR_CLKMGR_INTR_MAINPLLFBSLIP_SET_MSK |
> > CLKMGR_CLKMGR_INTR_PERPLLFBSLIP_SET_MSK,
> > - &clock_manager_base->intr);
> > + socfpga_clkmgr_base + CLKMGR_A10_INTR);
> >
> > return 0;
> > }
> >
> > static void cm_use_intosc(void)
> > {
> > - setbits_le32(&clock_manager_base->ctrl,
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_A10_CTRL,
> > CLKMGR_CLKMGR_CTL_BOOTCLK_INTOSC_SET_MSK);
> > }
> >
> > diff --git a/arch/arm/mach-socfpga/clock_manager_gen5.c b/arch/arm/mach-socfpga/clock_manager_gen5.c
> > index 3a64600861..c9990af46f 100644
> > --- a/arch/arm/mach-socfpga/clock_manager_gen5.c
> > +++ b/arch/arm/mach-socfpga/clock_manager_gen5.c
> > @@ -9,23 +9,20 @@
> > #include <asm/arch/clock_manager.h>
> > #include <wait_bit.h>
> >
> > -static const struct socfpga_clock_manager *clock_manager_base =
> > - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> > -
> > /*
> > * function to write the bypass register which requires a poll of the
> > * busy bit
> > */
> > static void cm_write_bypass(u32 val)
> > {
> > - writel(val, &clock_manager_base->bypass);
> > + writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_BYPASS);
> > cm_wait_for_fsm();
> > }
> >
> > /* function to write the ctrl register which requires a poll of the busy bit */
> > static void cm_write_ctrl(u32 val)
> > {
> > - writel(val, &clock_manager_base->ctrl);
> > + writel(val, socfpga_clkmgr_base + CLKMGR_GEN5_CTRL);
> > cm_wait_for_fsm();
> > }
> >
> > @@ -79,8 +76,8 @@ int cm_basic_init(const struct cm_config * const cfg)
> > * gatting off the rest of the periperal clocks.
> > */
> > writel(~CLKMGR_PERPLLGRP_EN_NANDCLK_MASK &
> > - readl(&clock_manager_base->per_pll.en),
> > - &clock_manager_base->per_pll.en);
> > + readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN),
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
> >
> > /* DO NOT GATE OFF DEBUG CLOCKS & BRIDGE CLOCKS */
> > writel(CLKMGR_MAINPLLGRP_EN_DBGTIMERCLK_MASK |
> > @@ -89,12 +86,12 @@ int cm_basic_init(const struct cm_config * const cfg)
> > CLKMGR_MAINPLLGRP_EN_DBGATCLK_MASK |
> > CLKMGR_MAINPLLGRP_EN_S2FUSER0CLK_MASK |
> > CLKMGR_MAINPLLGRP_EN_L4MPCLK_MASK,
> > - &clock_manager_base->main_pll.en);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
> >
> > - writel(0, &clock_manager_base->sdr_pll.en);
> > + writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
> >
> > /* now we can gate off the rest of the peripheral clocks */
> > - writel(0, &clock_manager_base->per_pll.en);
> > + writel(0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
> >
> > /* Put all plls in bypass */
> > cm_write_bypass(CLKMGR_BYPASS_PERPLL | CLKMGR_BYPASS_SDRPLL |
> > @@ -103,13 +100,13 @@ int cm_basic_init(const struct cm_config * const cfg)
> > /* Put all plls VCO registers back to reset value. */
> > writel(CLKMGR_MAINPLLGRP_VCO_RESET_VALUE &
> > ~CLKMGR_MAINPLLGRP_VCO_REGEXTSEL_MASK,
> > - &clock_manager_base->main_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> > writel(CLKMGR_PERPLLGRP_VCO_RESET_VALUE &
> > ~CLKMGR_PERPLLGRP_VCO_REGEXTSEL_MASK,
> > - &clock_manager_base->per_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> > writel(CLKMGR_SDRPLLGRP_VCO_RESET_VALUE &
> > ~CLKMGR_SDRPLLGRP_VCO_REGEXTSEL_MASK,
> > - &clock_manager_base->sdr_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> > /*
> > * The clocks to the flash devices and the L4_MAIN clocks can
> > @@ -119,23 +116,26 @@ int cm_basic_init(const struct cm_config * const cfg)
> > * after exiting safe mode but before ungating the clocks.
> > */
> > writel(CLKMGR_PERPLLGRP_SRC_RESET_VALUE,
> > - &clock_manager_base->per_pll.src);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> > writel(CLKMGR_MAINPLLGRP_L4SRC_RESET_VALUE,
> > - &clock_manager_base->main_pll.l4src);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
> >
> > /* read back for the required 5 us delay. */
> > - readl(&clock_manager_base->main_pll.vco);
> > - readl(&clock_manager_base->per_pll.vco);
> > - readl(&clock_manager_base->sdr_pll.vco);
> > + readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> > + readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> > + readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> >
> > /*
> > * We made sure bgpwr down was assert for 5 us. Now deassert BG PWR DN
> > * with numerator and denominator.
> > */
> > - writel(cfg->main_vco_base, &clock_manager_base->main_pll.vco);
> > - writel(cfg->peri_vco_base, &clock_manager_base->per_pll.vco);
> > - writel(cfg->sdram_vco_base, &clock_manager_base->sdr_pll.vco);
> > + writel(cfg->main_vco_base,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> > + writel(cfg->peri_vco_base,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> > + writel(cfg->sdram_vco_base,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> > /*
> > * Time starts here. Must wait 7 us from
> > @@ -144,44 +144,53 @@ int cm_basic_init(const struct cm_config * const cfg)
> > end = timer_get_us() + 7;
> >
> > /* main mpu */
> > - writel(cfg->mpuclk, &clock_manager_base->main_pll.mpuclk);
> > + writel(cfg->mpuclk, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
> >
> > /* altera group mpuclk */
> > - writel(cfg->altera_grp_mpuclk, &clock_manager_base->altera.mpuclk);
> > + writel(cfg->altera_grp_mpuclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
> >
> > /* main main clock */
> > - writel(cfg->mainclk, &clock_manager_base->main_pll.mainclk);
> > + writel(cfg->mainclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
> >
> > /* main for dbg */
> > - writel(cfg->dbgatclk, &clock_manager_base->main_pll.dbgatclk);
> > + writel(cfg->dbgatclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGATCLK);
> >
> > /* main for cfgs2fuser0clk */
> > writel(cfg->cfg2fuser0clk,
> > - &clock_manager_base->main_pll.cfgs2fuser0clk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK);
> >
> > /* Peri emac0 50 MHz default to RMII */
> > - writel(cfg->emac0clk, &clock_manager_base->per_pll.emac0clk);
> > + writel(cfg->emac0clk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC0CLK);
> >
> > /* Peri emac1 50 MHz default to RMII */
> > - writel(cfg->emac1clk, &clock_manager_base->per_pll.emac1clk);
> > + writel(cfg->emac1clk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EMAC1CLK);
> >
> > /* Peri QSPI */
> > - writel(cfg->mainqspiclk, &clock_manager_base->main_pll.mainqspiclk);
> > + writel(cfg->mainqspiclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
> >
> > - writel(cfg->perqspiclk, &clock_manager_base->per_pll.perqspiclk);
> > + writel(cfg->perqspiclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERQSPICLK);
> >
> > /* Peri pernandsdmmcclk */
> > writel(cfg->mainnandsdmmcclk,
> > - &clock_manager_base->main_pll.mainnandsdmmcclk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
> >
> > writel(cfg->pernandsdmmcclk,
> > - &clock_manager_base->per_pll.pernandsdmmcclk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
> >
> > /* Peri perbaseclk */
> > - writel(cfg->perbaseclk, &clock_manager_base->per_pll.perbaseclk);
> > + writel(cfg->perbaseclk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
> >
> > /* Peri s2fuser1clk */
> > - writel(cfg->s2fuser1clk, &clock_manager_base->per_pll.s2fuser1clk);
> > + writel(cfg->s2fuser1clk,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_S2FUSER1CLK);
> >
> > /* 7 us must have elapsed before we can enable the VCO */
> > while (timer_get_us() < end)
> > @@ -190,101 +199,106 @@ int cm_basic_init(const struct cm_config * const cfg)
> > /* Enable vco */
> > /* main pll vco */
> > writel(cfg->main_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> > - &clock_manager_base->main_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> >
> > /* periferal pll */
> > writel(cfg->peri_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> > - &clock_manager_base->per_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> >
> > /* sdram pll vco */
> > writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> > - &clock_manager_base->sdr_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> > /* L3 MP and L3 SP */
> > - writel(cfg->maindiv, &clock_manager_base->main_pll.maindiv);
> > + writel(cfg->maindiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
> >
> > - writel(cfg->dbgdiv, &clock_manager_base->main_pll.dbgdiv);
> > + writel(cfg->dbgdiv, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_DBGDIV);
> >
> > - writel(cfg->tracediv, &clock_manager_base->main_pll.tracediv);
> > + writel(cfg->tracediv,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_TRACEDIV);
> >
> > /* L4 MP, L4 SP, can0, and can1 */
> > - writel(cfg->perdiv, &clock_manager_base->per_pll.div);
> > + writel(cfg->perdiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_DIV);
> >
> > - writel(cfg->gpiodiv, &clock_manager_base->per_pll.gpiodiv);
> > + writel(cfg->gpiodiv, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_GPIODIV);
> >
> > cm_wait_for_lock(LOCKED_MASK);
> >
> > /* write the sdram clock counters before toggling outreset all */
> > writel(cfg->ddrdqsclk & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK,
> > - &clock_manager_base->sdr_pll.ddrdqsclk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
> >
> > writel(cfg->ddr2xdqsclk & CLKMGR_SDRPLLGRP_DDR2XDQSCLK_CNT_MASK,
> > - &clock_manager_base->sdr_pll.ddr2xdqsclk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK);
> >
> > writel(cfg->ddrdqclk & CLKMGR_SDRPLLGRP_DDRDQCLK_CNT_MASK,
> > - &clock_manager_base->sdr_pll.ddrdqclk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQCLK);
> >
> > writel(cfg->s2fuser2clk & CLKMGR_SDRPLLGRP_S2FUSER2CLK_CNT_MASK,
> > - &clock_manager_base->sdr_pll.s2fuser2clk);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_S2FUSER2CLK);
> >
> > /*
> > * after locking, but before taking out of bypass
> > * assert/deassert outresetall
> > */
> > - u32 mainvco = readl(&clock_manager_base->main_pll.vco);
> > + u32 mainvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> >
> > /* assert main outresetall */
> > writel(mainvco | CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
> > - &clock_manager_base->main_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> >
> > - u32 periphvco = readl(&clock_manager_base->per_pll.vco);
> > + u32 periphvco = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> >
> > /* assert pheriph outresetall */
> > writel(periphvco | CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
> > - &clock_manager_base->per_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> >
> > /* assert sdram outresetall */
> > - writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN|
> > - CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
> > - &clock_manager_base->sdr_pll.vco);
> > + writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN |
> > + CLKMGR_SDRPLLGRP_VCO_OUTRESETALL,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> > /* deassert main outresetall */
> > writel(mainvco & ~CLKMGR_MAINPLLGRP_VCO_OUTRESETALL_MASK,
> > - &clock_manager_base->main_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> >
> > /* deassert pheriph outresetall */
> > writel(periphvco & ~CLKMGR_PERPLLGRP_VCO_OUTRESETALL_MASK,
> > - &clock_manager_base->per_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> >
> > /* deassert sdram outresetall */
> > writel(cfg->sdram_vco_base | CLKMGR_MAINPLLGRP_VCO_EN,
> > - &clock_manager_base->sdr_pll.vco);
> > + socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> >
> > /*
> > * now that we've toggled outreset all, all the clocks
> > * are aligned nicely; so we can change any phase.
> > */
> > ret = cm_write_with_phase(cfg->ddrdqsclk,
> > - &clock_manager_base->sdr_pll.ddrdqsclk,
> > + (const void *)(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_SDRPLL_DDRDQSCLK),
> > CLKMGR_SDRPLLGRP_DDRDQSCLK_PHASE_MASK);
> > if (ret)
> > return ret;
> >
> > /* SDRAM DDR2XDQSCLK */
> > ret = cm_write_with_phase(cfg->ddr2xdqsclk,
> > - &clock_manager_base->sdr_pll.ddr2xdqsclk,
> > + (const void *)(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK),
> > CLKMGR_SDRPLLGRP_DDR2XDQSCLK_PHASE_MASK);
> > if (ret)
> > return ret;
> >
> > ret = cm_write_with_phase(cfg->ddrdqclk,
> > - &clock_manager_base->sdr_pll.ddrdqclk,
> > + (const void *)(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_SDRPLL_DDRDQCLK),
> > CLKMGR_SDRPLLGRP_DDRDQCLK_PHASE_MASK);
> > if (ret)
> > return ret;
> >
> > ret = cm_write_with_phase(cfg->s2fuser2clk,
> > - &clock_manager_base->sdr_pll.s2fuser2clk,
> > + (const void *)(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_SDRPLL_S2FUSER2CLK),
> > CLKMGR_SDRPLLGRP_S2FUSER2CLK_PHASE_MASK);
> > if (ret)
> > return ret;
> > @@ -293,24 +307,26 @@ int cm_basic_init(const struct cm_config * const cfg)
> > cm_write_bypass(0);
> >
> > /* clear safe mode */
> > - cm_write_ctrl(readl(&clock_manager_base->ctrl) | CLKMGR_CTRL_SAFEMODE);
> > + cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_GEN5_CTRL) |
> > + CLKMGR_CTRL_SAFEMODE);
> >
> > /*
> > * now that safe mode is clear with clocks gated
> > * it safe to change the source mux for the flashes the the L4_MAIN
> > */
> > - writel(cfg->persrc, &clock_manager_base->per_pll.src);
> > - writel(cfg->l4src, &clock_manager_base->main_pll.l4src);
> > + writel(cfg->persrc, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> > + writel(cfg->l4src, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
> >
> > /* Now ungate non-hw-managed clocks */
> > - writel(~0, &clock_manager_base->main_pll.en);
> > - writel(~0, &clock_manager_base->per_pll.en);
> > - writel(~0, &clock_manager_base->sdr_pll.en);
> > + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_EN);
> > + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_EN);
> > + writel(~0, socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_EN);
> >
> > /* Clear the loss of lock bits (write 1 to clear) */
> > - writel(CLKMGR_INTER_SDRPLLLOST_MASK | CLKMGR_INTER_PERPLLLOST_MASK |
> > - CLKMGR_INTER_MAINPLLLOST_MASK,
> > - &clock_manager_base->inter);
> > + writel(CLKMGR_INTER_SDRPLLLOST_MASK |
> > + CLKMGR_INTER_PERPLLLOST_MASK |
> > + CLKMGR_INTER_MAINPLLLOST_MASK,
> > + socfpga_clkmgr_base + CLKMGR_GEN5_INTER);
> >
> > return 0;
> > }
> > @@ -320,7 +336,7 @@ static unsigned int cm_get_main_vco_clk_hz(void)
> > u32 reg, clock;
> >
> > /* get the main VCO clock */
> > - reg = readl(&clock_manager_base->main_pll.vco);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_VCO);
> > clock = cm_get_osc_clk_hz(1);
> > clock /= ((reg & CLKMGR_MAINPLLGRP_VCO_DENOM_MASK) >>
> > CLKMGR_MAINPLLGRP_VCO_DENOM_OFFSET) + 1;
> > @@ -335,7 +351,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
> > u32 reg, clock = 0;
> >
> > /* identify PER PLL clock source */
> > - reg = readl(&clock_manager_base->per_pll.vco);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> > reg = (reg & CLKMGR_PERPLLGRP_VCO_SSRC_MASK) >>
> > CLKMGR_PERPLLGRP_VCO_SSRC_OFFSET;
> > if (reg == CLKMGR_VCO_SSRC_EOSC1)
> > @@ -346,7 +362,7 @@ static unsigned int cm_get_per_vco_clk_hz(void)
> > clock = cm_get_f2s_per_ref_clk_hz();
> >
> > /* get the PER VCO clock */
> > - reg = readl(&clock_manager_base->per_pll.vco);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_VCO);
> > clock /= ((reg & CLKMGR_PERPLLGRP_VCO_DENOM_MASK) >>
> > CLKMGR_PERPLLGRP_VCO_DENOM_OFFSET) + 1;
> > clock *= ((reg & CLKMGR_PERPLLGRP_VCO_NUMER_MASK) >>
> > @@ -362,9 +378,9 @@ unsigned long cm_get_mpu_clk_hz(void)
> > clock = cm_get_main_vco_clk_hz();
> >
> > /* get the MPU clock */
> > - reg = readl(&clock_manager_base->altera.mpuclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MPUCLK);
> > clock /= (reg + 1);
> > - reg = readl(&clock_manager_base->main_pll.mpuclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MPUCLK);
> > clock /= (reg + 1);
> > return clock;
> > }
> > @@ -374,7 +390,7 @@ unsigned long cm_get_sdram_clk_hz(void)
> > u32 reg, clock = 0;
> >
> > /* identify SDRAM PLL clock source */
> > - reg = readl(&clock_manager_base->sdr_pll.vco);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> > reg = (reg & CLKMGR_SDRPLLGRP_VCO_SSRC_MASK) >>
> > CLKMGR_SDRPLLGRP_VCO_SSRC_OFFSET;
> > if (reg == CLKMGR_VCO_SSRC_EOSC1)
> > @@ -385,14 +401,14 @@ unsigned long cm_get_sdram_clk_hz(void)
> > clock = cm_get_f2s_sdr_ref_clk_hz();
> >
> > /* get the SDRAM VCO clock */
> > - reg = readl(&clock_manager_base->sdr_pll.vco);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_VCO);
> > clock /= ((reg & CLKMGR_SDRPLLGRP_VCO_DENOM_MASK) >>
> > CLKMGR_SDRPLLGRP_VCO_DENOM_OFFSET) + 1;
> > clock *= ((reg & CLKMGR_SDRPLLGRP_VCO_NUMER_MASK) >>
> > CLKMGR_SDRPLLGRP_VCO_NUMER_OFFSET) + 1;
> >
> > /* get the SDRAM (DDR_DQS) clock */
> > - reg = readl(&clock_manager_base->sdr_pll.ddrdqsclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_SDRPLL_DDRDQSCLK);
> > reg = (reg & CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_MASK) >>
> > CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_OFFSET;
> > clock /= (reg + 1);
> > @@ -405,7 +421,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> > u32 reg, clock = 0;
> >
> > /* identify the source of L4 SP clock */
> > - reg = readl(&clock_manager_base->main_pll.l4src);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_L4SRC);
> > reg = (reg & CLKMGR_MAINPLLGRP_L4SRC_L4SP) >>
> > CLKMGR_MAINPLLGRP_L4SRC_L4SP_OFFSET;
> >
> > @@ -413,20 +429,21 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> > clock = cm_get_main_vco_clk_hz();
> >
> > /* get the clock prior L4 SP divider (main clk) */
> > - reg = readl(&clock_manager_base->altera.mainclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_ALTR_MAINCLK);
> > clock /= (reg + 1);
> > - reg = readl(&clock_manager_base->main_pll.mainclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINCLK);
> > clock /= (reg + 1);
> > } else if (reg == CLKMGR_L4_SP_CLK_SRC_PERPLL) {
> > clock = cm_get_per_vco_clk_hz();
> >
> > /* get the clock prior L4 SP divider (periph_base_clk) */
> > - reg = readl(&clock_manager_base->per_pll.perbaseclk);
> > + reg = readl(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_PERPLL_PERBASECLK);
> > clock /= (reg + 1);
> > }
> >
> > /* get the L4 SP clock which supplied to UART */
> > - reg = readl(&clock_manager_base->main_pll.maindiv);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_MAINPLL_MAINDIV);
> > reg = (reg & CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_MASK) >>
> > CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_OFFSET;
> > clock = clock / (1 << reg);
> > @@ -439,7 +456,7 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
> > u32 reg, clock = 0;
> >
> > /* identify the source of MMC clock */
> > - reg = readl(&clock_manager_base->per_pll.src);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> > reg = (reg & CLKMGR_PERPLLGRP_SRC_SDMMC_MASK) >>
> > CLKMGR_PERPLLGRP_SRC_SDMMC_OFFSET;
> >
> > @@ -449,13 +466,15 @@ unsigned int cm_get_mmc_controller_clk_hz(void)
> > clock = cm_get_main_vco_clk_hz();
> >
> > /* get the SDMMC clock */
> > - reg = readl(&clock_manager_base->main_pll.mainnandsdmmcclk);
> > + reg = readl(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK);
> > clock /= (reg + 1);
> > } else if (reg == CLKMGR_SDMMC_CLK_SRC_PER) {
> > clock = cm_get_per_vco_clk_hz();
> >
> > /* get the SDMMC clock */
> > - reg = readl(&clock_manager_base->per_pll.pernandsdmmcclk);
> > + reg = readl(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK);
> > clock /= (reg + 1);
> > }
> >
> > @@ -469,7 +488,7 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
> > u32 reg, clock = 0;
> >
> > /* identify the source of QSPI clock */
> > - reg = readl(&clock_manager_base->per_pll.src);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_SRC);
> > reg = (reg & CLKMGR_PERPLLGRP_SRC_QSPI_MASK) >>
> > CLKMGR_PERPLLGRP_SRC_QSPI_OFFSET;
> >
> > @@ -479,13 +498,15 @@ unsigned int cm_get_qspi_controller_clk_hz(void)
> > clock = cm_get_main_vco_clk_hz();
> >
> > /* get the qspi clock */
> > - reg = readl(&clock_manager_base->main_pll.mainqspiclk);
> > + reg = readl(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_MAINPLL_MAINQSPICLK);
> > clock /= (reg + 1);
> > } else if (reg == CLKMGR_QSPI_CLK_SRC_PER) {
> > clock = cm_get_per_vco_clk_hz();
> >
> > /* get the qspi clock */
> > - reg = readl(&clock_manager_base->per_pll.perqspiclk);
> > + reg = readl(socfpga_clkmgr_base +
> > + CLKMGR_GEN5_PERPLL_PERQSPICLK);
> > clock /= (reg + 1);
> > }
> >
> > @@ -499,7 +520,7 @@ unsigned int cm_get_spi_controller_clk_hz(void)
> > clock = cm_get_per_vco_clk_hz();
> >
> > /* get the clock prior L4 SP divider (periph_base_clk) */
> > - reg = readl(&clock_manager_base->per_pll.perbaseclk);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_GEN5_PERPLL_PERBASECLK);
> > clock /= (reg + 1);
> >
> > return clock;
> > diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
> > index 6cbf07ac6f..c6269701f0 100644
> > --- a/arch/arm/mach-socfpga/clock_manager_s10.c
> > +++ b/arch/arm/mach-socfpga/clock_manager_s10.c
> > @@ -12,29 +12,26 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_clock_manager *clock_manager_base =
> > - (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> > -
> > /*
> > * function to write the bypass register which requires a poll of the
> > * busy bit
> > */
> > static void cm_write_bypass_mainpll(u32 val)
> > {
> > - writel(val, &clock_manager_base->main_pll.bypass);
> > + writel(val, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_BYPASS);
> > cm_wait_for_fsm();
> > }
> >
> > static void cm_write_bypass_perpll(u32 val)
> > {
> > - writel(val, &clock_manager_base->per_pll.bypass);
> > + writel(val, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_BYPASS);
> > cm_wait_for_fsm();
> > }
> >
> > /* function to write the ctrl register which requires a poll of the busy bit */
> > static void cm_write_ctrl(u32 val)
> > {
> > - writel(val, &clock_manager_base->ctrl);
> > + writel(val, socfpga_clkmgr_base + CLKMGR_S10_CTRL);
> > cm_wait_for_fsm();
> > }
> >
> > @@ -66,12 +63,17 @@ void cm_basic_init(const struct cm_config * const cfg)
> >
> > writel((cfg->main_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
> > ~CLKMGR_PLLGLOB_RST_MASK),
> > - &clock_manager_base->main_pll.pllglob);
> > - writel(cfg->main_pll_fdbck, &clock_manager_base->main_pll.fdbck);
> > - writel(vcocalib, &clock_manager_base->main_pll.vcocalib);
> > - writel(cfg->main_pll_pllc0, &clock_manager_base->main_pll.pllc0);
> > - writel(cfg->main_pll_pllc1, &clock_manager_base->main_pll.pllc1);
> > - writel(cfg->main_pll_nocdiv, &clock_manager_base->main_pll.nocdiv);
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
> > + writel(cfg->main_pll_fdbck,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
> > + writel(vcocalib,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_VCOCALIB);
> > + writel(cfg->main_pll_pllc0,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC0);
> > + writel(cfg->main_pll_pllc1,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLC1);
> > + writel(cfg->main_pll_nocdiv,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCDIV);
> >
> > /* setup peripheral PLL dividers */
> > /* calculate the vcocalib value */
> > @@ -88,18 +90,23 @@ void cm_basic_init(const struct cm_config * const cfg)
> >
> > writel((cfg->per_pll_pllglob & ~CLKMGR_PLLGLOB_PD_MASK &
> > ~CLKMGR_PLLGLOB_RST_MASK),
> > - &clock_manager_base->per_pll.pllglob);
> > - writel(cfg->per_pll_fdbck, &clock_manager_base->per_pll.fdbck);
> > - writel(vcocalib, &clock_manager_base->per_pll.vcocalib);
> > - writel(cfg->per_pll_pllc0, &clock_manager_base->per_pll.pllc0);
> > - writel(cfg->per_pll_pllc1, &clock_manager_base->per_pll.pllc1);
> > - writel(cfg->per_pll_emacctl, &clock_manager_base->per_pll.emacctl);
> > - writel(cfg->per_pll_gpiodiv, &clock_manager_base->per_pll.gpiodiv);
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
> > + writel(cfg->per_pll_fdbck,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
> > + writel(vcocalib, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_VCOCALIB);
> > + writel(cfg->per_pll_pllc0,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC0);
> > + writel(cfg->per_pll_pllc1,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1);
> > + writel(cfg->per_pll_emacctl,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EMACCTL);
> > + writel(cfg->per_pll_gpiodiv,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_GPIODIV);
> >
> > /* Take both PLL out of reset and power up */
> > - setbits_le32(&clock_manager_base->main_pll.pllglob,
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB,
> > CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
> > - setbits_le32(&clock_manager_base->per_pll.pllglob,
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB,
> > CLKMGR_PLLGLOB_PD_MASK | CLKMGR_PLLGLOB_RST_MASK);
> >
> > #define LOCKED_MASK \
> > @@ -113,66 +120,85 @@ void cm_basic_init(const struct cm_config * const cfg)
> > * only take effect upon value change, we shall set a maximum value as
> > * default value.
> > */
> > - writel(0xff, &clock_manager_base->main_pll.mpuclk);
> > - writel(0xff, &clock_manager_base->main_pll.nocclk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr2clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr3clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr4clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr5clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr6clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr7clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr8clk);
> > - writel(0xff, &clock_manager_base->main_pll.cntr9clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr2clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr3clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr4clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr5clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr6clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr7clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr8clk);
> > - writel(0xff, &clock_manager_base->per_pll.cntr9clk);
> > -
> > - writel(cfg->main_pll_mpuclk, &clock_manager_base->main_pll.mpuclk);
> > - writel(cfg->main_pll_nocclk, &clock_manager_base->main_pll.nocclk);
> > - writel(cfg->main_pll_cntr2clk, &clock_manager_base->main_pll.cntr2clk);
> > - writel(cfg->main_pll_cntr3clk, &clock_manager_base->main_pll.cntr3clk);
> > - writel(cfg->main_pll_cntr4clk, &clock_manager_base->main_pll.cntr4clk);
> > - writel(cfg->main_pll_cntr5clk, &clock_manager_base->main_pll.cntr5clk);
> > - writel(cfg->main_pll_cntr6clk, &clock_manager_base->main_pll.cntr6clk);
> > - writel(cfg->main_pll_cntr7clk, &clock_manager_base->main_pll.cntr7clk);
> > - writel(cfg->main_pll_cntr8clk, &clock_manager_base->main_pll.cntr8clk);
> > - writel(cfg->main_pll_cntr9clk, &clock_manager_base->main_pll.cntr9clk);
> > - writel(cfg->per_pll_cntr2clk, &clock_manager_base->per_pll.cntr2clk);
> > - writel(cfg->per_pll_cntr3clk, &clock_manager_base->per_pll.cntr3clk);
> > - writel(cfg->per_pll_cntr4clk, &clock_manager_base->per_pll.cntr4clk);
> > - writel(cfg->per_pll_cntr5clk, &clock_manager_base->per_pll.cntr5clk);
> > - writel(cfg->per_pll_cntr6clk, &clock_manager_base->per_pll.cntr6clk);
> > - writel(cfg->per_pll_cntr7clk, &clock_manager_base->per_pll.cntr7clk);
> > - writel(cfg->per_pll_cntr8clk, &clock_manager_base->per_pll.cntr8clk);
> > - writel(cfg->per_pll_cntr9clk, &clock_manager_base->per_pll.cntr9clk);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
> > + writel(0xff, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
> > +
> > + writel(cfg->main_pll_mpuclk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK);
> > + writel(cfg->main_pll_nocclk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
> > + writel(cfg->main_pll_cntr2clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR2CLK);
> > + writel(cfg->main_pll_cntr3clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR3CLK);
> > + writel(cfg->main_pll_cntr4clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR4CLK);
> > + writel(cfg->main_pll_cntr5clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR5CLK);
> > + writel(cfg->main_pll_cntr6clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR6CLK);
> > + writel(cfg->main_pll_cntr7clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR7CLK);
> > + writel(cfg->main_pll_cntr8clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR8CLK);
> > + writel(cfg->main_pll_cntr9clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_CNTR9CLK);
> > + writel(cfg->per_pll_cntr2clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR2CLK);
> > + writel(cfg->per_pll_cntr3clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR3CLK);
> > + writel(cfg->per_pll_cntr4clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR4CLK);
> > + writel(cfg->per_pll_cntr5clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR5CLK);
> > + writel(cfg->per_pll_cntr6clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
> > + writel(cfg->per_pll_cntr7clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR7CLK);
> > + writel(cfg->per_pll_cntr8clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR8CLK);
> > + writel(cfg->per_pll_cntr9clk,
> > + socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR9CLK);
> >
> > /* Take all PLLs out of bypass */
> > cm_write_bypass_mainpll(0);
> > cm_write_bypass_perpll(0);
> >
> > /* clear safe mode / out of boot mode */
> > - cm_write_ctrl(readl(&clock_manager_base->ctrl)
> > - & ~(CLKMGR_CTRL_SAFEMODE));
> > + cm_write_ctrl(readl(socfpga_clkmgr_base + CLKMGR_S10_CTRL) &
> > + ~(CLKMGR_CTRL_SAFEMODE));
> >
> > /* Now ungate non-hw-managed clocks */
> > - writel(~0, &clock_manager_base->main_pll.en);
> > - writel(~0, &clock_manager_base->per_pll.en);
> > + writel(~0, socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_EN);
> > + writel(~0, socfpga_clkmgr_base + CLKMGR_S10_PERPLL_EN);
> >
> > /* Clear the loss of lock bits (write 1 to clear) */
> > - writel(CLKMGR_INTER_PERPLLLOST_MASK | CLKMGR_INTER_MAINPLLLOST_MASK,
> > - &clock_manager_base->intrclr);
> > + writel(CLKMGR_INTER_PERPLLLOST_MASK |
> > + CLKMGR_INTER_MAINPLLLOST_MASK,
> > + socfpga_clkmgr_base + CLKMGR_S10_INTRCLR);
> > }
> >
> > static unsigned long cm_get_main_vco_clk_hz(void)
> > {
> > unsigned long fref, refdiv, mdiv, reg, vco;
> >
> > - reg = readl(&clock_manager_base->main_pll.pllglob);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_PLLGLOB);
> >
> > fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
> > CLKMGR_PLLGLOB_VCO_PSRC_MASK;
> > @@ -191,7 +217,7 @@ static unsigned long cm_get_main_vco_clk_hz(void)
> > refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
> > CLKMGR_PLLGLOB_REFCLKDIV_MASK;
> >
> > - reg = readl(&clock_manager_base->main_pll.fdbck);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_FDBCK);
> > mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
> >
> > vco = fref / refdiv;
> > @@ -203,7 +229,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
> > {
> > unsigned long fref, refdiv, mdiv, reg, vco;
> >
> > - reg = readl(&clock_manager_base->per_pll.pllglob);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLGLOB);
> >
> > fref = (reg >> CLKMGR_PLLGLOB_VCO_PSRC_OFFSET) &
> > CLKMGR_PLLGLOB_VCO_PSRC_MASK;
> > @@ -222,7 +248,7 @@ static unsigned long cm_get_per_vco_clk_hz(void)
> > refdiv = (reg >> CLKMGR_PLLGLOB_REFCLKDIV_OFFSET) &
> > CLKMGR_PLLGLOB_REFCLKDIV_MASK;
> >
> > - reg = readl(&clock_manager_base->per_pll.fdbck);
> > + reg = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_FDBCK);
> > mdiv = (reg >> CLKMGR_FDBCK_MDIV_OFFSET) & CLKMGR_FDBCK_MDIV_MASK;
> >
> > vco = fref / refdiv;
> > @@ -232,20 +258,23 @@ static unsigned long cm_get_per_vco_clk_hz(void)
> >
> > unsigned long cm_get_mpu_clk_hz(void)
> > {
> > - unsigned long clock = readl(&clock_manager_base->main_pll.mpuclk);
> > + unsigned long clock = readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_MPUCLK);
> >
> > clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
> >
> > switch (clock) {
> > case CLKMGR_CLKSRC_MAIN:
> > clock = cm_get_main_vco_clk_hz();
> > - clock /= (readl(&clock_manager_base->main_pll.pllc0) &
> > + clock /= (readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_PLLC0) &
> > CLKMGR_PLLC0_DIV_MASK);
> > break;
> >
> > case CLKMGR_CLKSRC_PER:
> > clock = cm_get_per_vco_clk_hz();
> > - clock /= (readl(&clock_manager_base->per_pll.pllc0) &
> > + clock /= (readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_PERPLL_PLLC0) &
> > CLKMGR_CLKCNT_MSK);
> > break;
> >
> > @@ -262,27 +291,28 @@ unsigned long cm_get_mpu_clk_hz(void)
> > break;
> > }
> >
> > - clock /= 1 + (readl(&clock_manager_base->main_pll.mpuclk) &
> > - CLKMGR_CLKCNT_MSK);
> > + clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_MPUCLK) &
> > + CLKMGR_CLKCNT_MSK);
> > return clock;
> > }
> >
> > unsigned int cm_get_l3_main_clk_hz(void)
> > {
> > - u32 clock = readl(&clock_manager_base->main_pll.nocclk);
> > + u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK);
> >
> > clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
> >
> > switch (clock) {
> > case CLKMGR_CLKSRC_MAIN:
> > clock = cm_get_main_vco_clk_hz();
> > - clock /= (readl(&clock_manager_base->main_pll.pllc1) &
> > + clock /= (readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_PLLC1) &
> > CLKMGR_PLLC0_DIV_MASK);
> > break;
> >
> > case CLKMGR_CLKSRC_PER:
> > clock = cm_get_per_vco_clk_hz();
> > - clock /= (readl(&clock_manager_base->per_pll.pllc1) &
> > + clock /= (readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_PLLC1) &
> > CLKMGR_CLKCNT_MSK);
> > break;
> >
> > @@ -299,28 +329,30 @@ unsigned int cm_get_l3_main_clk_hz(void)
> > break;
> > }
> >
> > - clock /= 1 + (readl(&clock_manager_base->main_pll.nocclk) &
> > + clock /= 1 + (readl(socfpga_clkmgr_base + CLKMGR_S10_MAINPLL_NOCCLK) &
> > CLKMGR_CLKCNT_MSK);
> > return clock;
> > }
> >
> > unsigned int cm_get_mmc_controller_clk_hz(void)
> > {
> > - u32 clock = readl(&clock_manager_base->per_pll.cntr6clk);
> > + u32 clock = readl(socfpga_clkmgr_base + CLKMGR_S10_PERPLL_CNTR6CLK);
> >
> > clock = (clock >> CLKMGR_CLKSRC_OFFSET) & CLKMGR_CLKSRC_MASK;
> >
> > switch (clock) {
> > case CLKMGR_CLKSRC_MAIN:
> > clock = cm_get_l3_main_clk_hz();
> > - clock /= 1 + (readl(&clock_manager_base->main_pll.cntr6clk) &
> > - CLKMGR_CLKCNT_MSK);
> > + clock /= 1 + (readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_CNTR6CLK) &
> > + CLKMGR_CLKCNT_MSK);
> > break;
> >
> > case CLKMGR_CLKSRC_PER:
> > clock = cm_get_l3_main_clk_hz();
> > - clock /= 1 + (readl(&clock_manager_base->per_pll.cntr6clk) &
> > - CLKMGR_CLKCNT_MSK);
> > + clock /= 1 + (readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_PERPLL_CNTR6CLK) &
> > + CLKMGR_CLKCNT_MSK);
> > break;
> >
> > case CLKMGR_CLKSRC_OSC1:
> > @@ -342,8 +374,9 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> > {
> > u32 clock = cm_get_l3_main_clk_hz();
> >
> > - clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
> > - CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
> > + clock /= (1 << ((readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_NOCDIV) >>
> > + CLKMGR_NOCDIV_L4SPCLK_OFFSET) & CLKMGR_CLKCNT_MSK));
> > return clock;
> > }
> >
> > @@ -356,8 +389,9 @@ unsigned int cm_get_spi_controller_clk_hz(void)
> > {
> > u32 clock = cm_get_l3_main_clk_hz();
> >
> > - clock /= (1 << ((readl(&clock_manager_base->main_pll.nocdiv) >>
> > - CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
> > + clock /= (1 << ((readl(socfpga_clkmgr_base +
> > + CLKMGR_S10_MAINPLL_NOCDIV) >>
> > + CLKMGR_NOCDIV_L4MAIN_OFFSET) & CLKMGR_CLKCNT_MSK));
> > return clock;
> > }
> >
> > diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager.h b/arch/arm/mach-socfpga/include/mach/clock_manager.h
> > index dd80e3a767..4f9d10dd78 100644
> > --- a/arch/arm/mach-socfpga/include/mach/clock_manager.h
> > +++ b/arch/arm/mach-socfpga/include/mach/clock_manager.h
> > @@ -6,6 +6,8 @@
> > #ifndef _CLOCK_MANAGER_H_
> > #define _CLOCK_MANAGER_H_
> >
> > +extern phys_addr_t socfpga_clkmgr_base;
> > +
> > #ifndef __ASSEMBLER__
> > void cm_wait_for_lock(u32 mask);
> > int cm_wait_for_fsm(void);
> > diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> > index de8c22540f..52b579e6e1 100644
> > --- a/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_arria10.h
> > @@ -8,86 +8,57 @@
> >
> > #ifndef __ASSEMBLER__
> >
> > -struct socfpga_clock_manager_main_pll {
> > - u32 vco0;
> > - u32 vco1;
> > - u32 en;
> > - u32 ens;
> > - u32 enr;
> > - u32 bypass;
> > - u32 bypasss;
> > - u32 bypassr;
> > - u32 mpuclk;
> > - u32 nocclk;
> > - u32 cntr2clk;
> > - u32 cntr3clk;
> > - u32 cntr4clk;
> > - u32 cntr5clk;
> > - u32 cntr6clk;
> > - u32 cntr7clk;
> > - u32 cntr8clk;
> > - u32 cntr9clk;
> > - u32 pad_0x48_0x5b[5];
> > - u32 cntr15clk;
> > - u32 outrst;
> > - u32 outrststat;
> > - u32 nocdiv;
> > - u32 pad_0x6c_0x80[5];
> > -};
> > -
> > -struct socfpga_clock_manager_per_pll {
> > - u32 vco0;
> > - u32 vco1;
> > - u32 en;
> > - u32 ens;
> > - u32 enr;
> > - u32 bypass;
> > - u32 bypasss;
> > - u32 bypassr;
> > - u32 pad_0x20_0x27[2];
> > - u32 cntr2clk;
> > - u32 cntr3clk;
> > - u32 cntr4clk;
> > - u32 cntr5clk;
> > - u32 cntr6clk;
> > - u32 cntr7clk;
> > - u32 cntr8clk;
> > - u32 cntr9clk;
> > - u32 pad_0x48_0x5f[6];
> > - u32 outrst;
> > - u32 outrststat;
> > - u32 emacctl;
> > - u32 gpiodiv;
> > - u32 pad_0x70_0x80[4];
> > -};
> > -
> > -struct socfpga_clock_manager_altera {
> > - u32 mpuclk;
> > - u32 nocclk;
> > - u32 mainmisc0;
> > - u32 mainmisc1;
> > - u32 perimisc0;
> > - u32 perimisc1;
> > -};
> > -
> > -struct socfpga_clock_manager {
> > - /* clkmgr */
> > - u32 ctrl;
> > - u32 intr;
> > - u32 intrs;
> > - u32 intrr;
> > - u32 intren;
> > - u32 intrens;
> > - u32 intrenr;
> > - u32 stat;
> > - u32 testioctrl;
> > - u32 _pad_0x24_0x40[7];
> > - /* mainpllgrp */
> > - struct socfpga_clock_manager_main_pll main_pll;
> > - /* perpllgrp */
> > - struct socfpga_clock_manager_per_pll per_pll;
> > - struct socfpga_clock_manager_altera altera;
> > -};
> > +/* Clock manager group */
> > +#define CLKMGR_A10_CTRL 0
> > +#define CLKMGR_A10_INTR 4
> > +#define CLKMGR_A10_STAT 0x1c
> > +/* MainPLL group */
> > +#define CLKMGR_A10_MAINPLL_VCO0 0x40
> > +#define CLKMGR_A10_MAINPLL_VCO1 0x44
> > +#define CLKMGR_A10_MAINPLL_EN 0x48
> > +#define CLKMGR_A10_MAINPLL_ENS 0x4c
> > +#define CLKMGR_A10_MAINPLL_ENR 0x50
> > +#define CLKMGR_A10_MAINPLL_BYPASS 0x54
> > +#define CLKMGR_A10_MAINPLL_BYPASSS 0x58
> > +#define CLKMGR_A10_MAINPLL_BYPASSR 0x5c
> > +#define CLKMGR_A10_MAINPLL_MPUCLK 0x60
> > +#define CLKMGR_A10_MAINPLL_NOCCLK 0x64
> > +#define CLKMGR_A10_MAINPLL_CNTR2CLK 0x68
> > +#define CLKMGR_A10_MAINPLL_CNTR3CLK 0x6c
> > +#define CLKMGR_A10_MAINPLL_CNTR4CLK 0x70
> > +#define CLKMGR_A10_MAINPLL_CNTR5CLK 0x74
> > +#define CLKMGR_A10_MAINPLL_CNTR6CLK 0x78
> > +#define CLKMGR_A10_MAINPLL_CNTR7CLK 0x7c
> > +#define CLKMGR_A10_MAINPLL_CNTR8CLK 0x80
> > +#define CLKMGR_A10_MAINPLL_CNTR9CLK 0x84
> > +#define CLKMGR_A10_MAINPLL_CNTR15CLK 0x9c
> > +#define CLKMGR_A10_MAINPLL_NOCDIV 0xa8
> > +/* Peripheral PLL group */
> > +#define CLKMGR_A10_PERPLL_VCO0 0xc0
> > +#define CLKMGR_A10_PERPLL_VCO1 0xc4
> > +#define CLKMGR_A10_PERPLL_EN 0xc8
> > +#define CLKMGR_A10_PERPLL_ENS 0xcc
> > +#define CLKMGR_A10_PERPLL_ENR 0xd0
> > +#define CLKMGR_A10_PERPLL_BYPASS 0xd4
> > +#define CLKMGR_A10_PERPLL_BYPASSS 0xd8
> > +#define CLKMGR_A10_PERPLL_BYPASSR 0xdc
> > +#define CLKMGR_A10_PERPLL_CNTR2CLK 0xe8
> > +#define CLKMGR_A10_PERPLL_CNTR3CLK 0xec
> > +#define CLKMGR_A10_PERPLL_CNTR4CLK 0xf0
> > +#define CLKMGR_A10_PERPLL_CNTR5CLK 0xf4
> > +#define CLKMGR_A10_PERPLL_CNTR6CLK 0xf8
> > +#define CLKMGR_A10_PERPLL_CNTR7CLK 0xfc
> > +#define CLKMGR_A10_PERPLL_CNTR8CLK 0x100
> > +#define CLKMGR_A10_PERPLL_CNTR9CLK 0x104
> > +#define CLKMGR_A10_PERPLL_EMACCTL 0x128
> > +#define CLKMGR_A10_PERPLL_GPIOFIV 0x12c
> > +/* Altera group */
> > +#define CLKMGR_A10_ALTR_MPUCLK 0x140
> > +#define CLKMGR_A10_ALTR_NOCCLK 0x144
> > +
> > +#define CLKMGR_STAT CLKMGR_A10_STAT
> > +#define CLKMGR_INTER CLKMGR_A10_INTER
> > +#define CLKMGR_PERPLL_EN CLKMGR_A10_PERPLL_EN
> >
> > #ifdef CONFIG_SPL_BUILD
> > int cm_basic_init(const void *blob);
> > @@ -100,8 +71,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
> >
> > #endif /* __ASSEMBLER__ */
> >
> > -#define CLKMGR_ALTERAGRP_MPU_CLK_OFFSET 0x140
> > -#define CLKMGR_MAINPLL_NOC_CLK_OFFSET 0x144
> > #define LOCKED_MASK (CLKMGR_CLKMGR_STAT_MAINPLLLOCKED_SET_MSK | \
> > CLKMGR_CLKMGR_STAT_PERPLLLOCKED_SET_MSK)
> >
> > diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> > index 5bedf28cf1..caa1231c69 100644
> > --- a/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> > +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_gen5.h
> > @@ -45,71 +45,53 @@ struct cm_config {
> > u32 altera_grp_mpuclk;
> > };
> >
> > -struct socfpga_clock_manager_main_pll {
> > - u32 vco;
> > - u32 misc;
> > - u32 mpuclk;
> > - u32 mainclk;
> > - u32 dbgatclk;
> > - u32 mainqspiclk;
> > - u32 mainnandsdmmcclk;
> > - u32 cfgs2fuser0clk;
> > - u32 en;
> > - u32 maindiv;
> > - u32 dbgdiv;
> > - u32 tracediv;
> > - u32 l4src;
> > - u32 stat;
> > - u32 _pad_0x38_0x40[2];
> > -};
> > -
> > -struct socfpga_clock_manager_per_pll {
> > - u32 vco;
> > - u32 misc;
> > - u32 emac0clk;
> > - u32 emac1clk;
> > - u32 perqspiclk;
> > - u32 pernandsdmmcclk;
> > - u32 perbaseclk;
> > - u32 s2fuser1clk;
> > - u32 en;
> > - u32 div;
> > - u32 gpiodiv;
> > - u32 src;
> > - u32 stat;
> > - u32 _pad_0x34_0x40[3];
> > -};
> > -
> > -struct socfpga_clock_manager_sdr_pll {
> > - u32 vco;
> > - u32 ctrl;
> > - u32 ddrdqsclk;
> > - u32 ddr2xdqsclk;
> > - u32 ddrdqclk;
> > - u32 s2fuser2clk;
> > - u32 en;
> > - u32 stat;
> > -};
> > -
> > -struct socfpga_clock_manager_altera {
> > - u32 mpuclk;
> > - u32 mainclk;
> > -};
> > -
> > -struct socfpga_clock_manager {
> > - u32 ctrl;
> > - u32 bypass;
> > - u32 inter;
> > - u32 intren;
> > - u32 dbctrl;
> > - u32 stat;
> > - u32 _pad_0x18_0x3f[10];
> > - struct socfpga_clock_manager_main_pll main_pll;
> > - struct socfpga_clock_manager_per_pll per_pll;
> > - struct socfpga_clock_manager_sdr_pll sdr_pll;
> > - struct socfpga_clock_manager_altera altera;
> > - u32 _pad_0xe8_0x200[70];
> > -};
> > +/* Clock manager group */
> > +#define CLKMGR_GEN5_CTRL 0
> > +#define CLKMGR_GEN5_BYPASS 4
> > +#define CLKMGR_GEN5_INTER 8
> > +#define CLKMGR_GEN5_STAT 0x14
> > +/* MainPLL group */
> > +#define CLKMGR_GEN5_MAINPLL_VCO 0x40
> > +#define CLKMGR_GEN5_MAINPLL_MISC 0x44
> > +#define CLKMGR_GEN5_MAINPLL_MPUCLK 0x48
> > +#define CLKMGR_GEN5_MAINPLL_MAINCLK 0x4c
> > +#define CLKMGR_GEN5_MAINPLL_DBGATCLK 0x50
> > +#define CLKMGR_GEN5_MAINPLL_MAINQSPICLK 0x54
> > +#define CLKMGR_GEN5_MAINPLL_MAINNANDSDMMCCLK 0x58
> > +#define CLKMGR_GEN5_MAINPLL_CFGS2FUSER0CLK 0x5c
> > +#define CLKMGR_GEN5_MAINPLL_EN 0x60
> > +#define CLKMGR_GEN5_MAINPLL_MAINDIV 0x64
> > +#define CLKMGR_GEN5_MAINPLL_DBGDIV 0x68
> > +#define CLKMGR_GEN5_MAINPLL_TRACEDIV 0x6c
> > +#define CLKMGR_GEN5_MAINPLL_L4SRC 0x70
> > +/* Peripheral PLL group */
> > +#define CLKMGR_GEN5_PERPLL_VCO 0x80
> > +#define CLKMGR_GEN5_PERPLL_MISC 0x84
> > +#define CLKMGR_GEN5_PERPLL_EMAC0CLK 0x88
> > +#define CLKMGR_GEN5_PERPLL_EMAC1CLK 0x8c
> > +#define CLKMGR_GEN5_PERPLL_PERQSPICLK 0x90
> > +#define CLKMGR_GEN5_PERPLL_PERNANDSDMMCCLK 0x94
> > +#define CLKMGR_GEN5_PERPLL_PERBASECLK 0x98
> > +#define CLKMGR_GEN5_PERPLL_S2FUSER1CLK 0x9c
> > +#define CLKMGR_GEN5_PERPLL_EN 0xa0
> > +#define CLKMGR_GEN5_PERPLL_DIV 0xa4
> > +#define CLKMGR_GEN5_PERPLL_GPIODIV 0xa8
> > +#define CLKMGR_GEN5_PERPLL_SRC 0xac
> > +/* SDRAM PLL group */
> > +#define CLKMGR_GEN5_SDRPLL_VCO 0xc0
> > +#define CLKMGR_GEN5_SDRPLL_CTRL 0xc4
> > +#define CLKMGR_GEN5_SDRPLL_DDRDQSCLK 0xc8
> > +#define CLKMGR_GEN5_SDRPLL_DDR2XDQSCLK 0xcc
> > +#define CLKMGR_GEN5_SDRPLL_DDRDQCLK 0xd0
> > +#define CLKMGR_GEN5_SDRPLL_S2FUSER2CLK 0xd4
> > +#define CLKMGR_GEN5_SDRPLL_EN 0xd8
> > +/* Altera group */
> > +#define CLKMGR_GEN5_ALTR_MPUCLK 0xe0
> > +#define CLKMGR_GEN5_ALTR_MAINCLK 0xe4
> > +
> > +#define CLKMGR_STAT CLKMGR_GEN5_STAT
> > +#define CLKMGR_INTER CLKMGR_GEN5_INTER
> > +#define CLKMGR_PERPLL_EN CLKMGR_GEN5_PERPLL_EN
> >
> > /* Clock speed accessors */
> > unsigned long cm_get_mpu_clk_hz(void);
> > diff --git a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> > index 24b20de011..fa0ba26f09 100644
> > --- a/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/clock_manager_s10.h
> > @@ -69,75 +69,54 @@ struct cm_config {
> >
> > void cm_basic_init(const struct cm_config * const cfg);
> >
> > -struct socfpga_clock_manager_main_pll {
> > - u32 en;
> > - u32 ens;
> > - u32 enr;
> > - u32 bypass;
> > - u32 bypasss;
> > - u32 bypassr;
> > - u32 mpuclk;
> > - u32 nocclk;
> > - u32 cntr2clk;
> > - u32 cntr3clk;
> > - u32 cntr4clk;
> > - u32 cntr5clk;
> > - u32 cntr6clk;
> > - u32 cntr7clk;
> > - u32 cntr8clk;
> > - u32 cntr9clk;
> > - u32 nocdiv;
> > - u32 pllglob;
> > - u32 fdbck;
> > - u32 mem;
> > - u32 memstat;
> > - u32 pllc0;
> > - u32 pllc1;
> > - u32 vcocalib;
> > - u32 _pad_0x90_0xA0[5];
> > -};
> > -
> > -struct socfpga_clock_manager_per_pll {
> > - u32 en;
> > - u32 ens;
> > - u32 enr;
> > - u32 bypass;
> > - u32 bypasss;
> > - u32 bypassr;
> > - u32 cntr2clk;
> > - u32 cntr3clk;
> > - u32 cntr4clk;
> > - u32 cntr5clk;
> > - u32 cntr6clk;
> > - u32 cntr7clk;
> > - u32 cntr8clk;
> > - u32 cntr9clk;
> > - u32 emacctl;
> > - u32 gpiodiv;
> > - u32 pllglob;
> > - u32 fdbck;
> > - u32 mem;
> > - u32 memstat;
> > - u32 pllc0;
> > - u32 pllc1;
> > - u32 vcocalib;
> > - u32 _pad_0x100_0x124[10];
> > -};
> > +/* Control status */
> > +#define CLKMGR_S10_CTRL 0
> > +#define CLKMGR_S10_STAT 4
> > +#define CLKMGR_S10_INTRCLR 0x14
> > +/* Mainpll group */
> > +#define CLKMGR_S10_MAINPLL_EN 0x30
> > +#define CLKMGR_S10_MAINPLL_BYPASS 0x3c
> > +#define CLKMGR_S10_MAINPLL_MPUCLK 0x48
> > +#define CLKMGR_S10_MAINPLL_NOCCLK 0x4c
> > +#define CLKMGR_S10_MAINPLL_CNTR2CLK 0x50
> > +#define CLKMGR_S10_MAINPLL_CNTR3CLK 0x54
> > +#define CLKMGR_S10_MAINPLL_CNTR4CLK 0x58
> > +#define CLKMGR_S10_MAINPLL_CNTR5CLK 0x5c
> > +#define CLKMGR_S10_MAINPLL_CNTR6CLK 0x60
> > +#define CLKMGR_S10_MAINPLL_CNTR7CLK 0x64
> > +#define CLKMGR_S10_MAINPLL_CNTR8CLK 0x68
> > +#define CLKMGR_S10_MAINPLL_CNTR9CLK 0x6c
> > +#define CLKMGR_S10_MAINPLL_NOCDIV 0x70
> > +#define CLKMGR_S10_MAINPLL_PLLGLOB 0x74
> > +#define CLKMGR_S10_MAINPLL_FDBCK 0x78
> > +#define CLKMGR_S10_MAINPLL_MEMSTAT 0x80
> > +#define CLKMGR_S10_MAINPLL_PLLC0 0x84
> > +#define CLKMGR_S10_MAINPLL_PLLC1 0x88
> > +#define CLKMGR_S10_MAINPLL_VCOCALIB 0x8c
> > +/* Periphpll group */
> > +#define CLKMGR_S10_PERPLL_EN 0xa4
> > +#define CLKMGR_S10_PERPLL_BYPASS 0xac
> > +#define CLKMGR_S10_PERPLL_CNTR2CLK 0xbc
> > +#define CLKMGR_S10_PERPLL_CNTR3CLK 0xc0
> > +#define CLKMGR_S10_PERPLL_CNTR4CLK 0xc4
> > +#define CLKMGR_S10_PERPLL_CNTR5CLK 0xc8
> > +#define CLKMGR_S10_PERPLL_CNTR6CLK 0xcc
> > +#define CLKMGR_S10_PERPLL_CNTR7CLK 0xd0
> > +#define CLKMGR_S10_PERPLL_CNTR8CLK 0xd4
> > +#define CLKMGR_S10_PERPLL_CNTR9CLK 0xd8
> > +#define CLKMGR_S10_PERPLL_EMACCTL 0xdc
> > +#define CLKMGR_S10_PERPLL_GPIODIV 0xe0
> > +#define CLKMGR_S10_PERPLL_PLLGLOB 0xe4
> > +#define CLKMGR_S10_PERPLL_FDBCK 0xe8
> > +#define CLKMGR_S10_PERPLL_MEMSTAT 0xf0
> > +#define CLKMGR_S10_PERPLL_PLLC0 0xf4
> > +#define CLKMGR_S10_PERPLL_PLLC1 0xf8
> > +#define CLKMGR_S10_PERPLL_VCOCALIB 0xfc
> > +
> > +#define CLKMGR_STAT CLKMGR_S10_STAT
> > +#define CLKMGR_INTER CLKMGR_S10_INTER
> > +#define CLKMGR_PERPLL_EN CLKMGR_S10_PERPLL_EN
> >
> > -struct socfpga_clock_manager {
> > - u32 ctrl;
> > - u32 stat;
> > - u32 testioctrl;
> > - u32 intrgen;
> > - u32 intrmsk;
> > - u32 intrclr;
> > - u32 intrsts;
> > - u32 intrstk;
> > - u32 intrraw;
> > - u32 _pad_0x24_0x2c[3];
> > - struct socfpga_clock_manager_main_pll main_pll;
> > - struct socfpga_clock_manager_per_pll per_pll;
> > -};
> >
> > #define CLKMGR_CTRL_SAFEMODE BIT(0)
> > #define CLKMGR_BYPASS_MAINPLL_ALL 0x00000007
> > diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> > index fcc53b6fbc..dffd1b2e41 100644
> > --- a/arch/arm/mach-socfpga/misc.c
> > +++ b/arch/arm/mach-socfpga/misc.c
> > @@ -22,6 +22,7 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > +phys_addr_t socfpga_clkmgr_base __section(".data");
> > phys_addr_t socfpga_rstmgr_base __section(".data");
> > phys_addr_t socfpga_sysmgr_base __section(".data");
> >
> > @@ -238,4 +239,8 @@ void socfpga_get_manager_addr(void)
> > socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
> > if (!socfpga_sysmgr_base)
> > hang();
> > +
> > + socfpga_clkmgr_base = socfpga_get_base_addr("altr,clk-mgr");
> > + if (!socfpga_clkmgr_base)
> > + hang();
> > }
> > diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
> > index bdcd568d60..aefcae8fb6 100644
> > --- a/drivers/mmc/socfpga_dw_mmc.c
> > +++ b/drivers/mmc/socfpga_dw_mmc.c
> > @@ -18,9 +18,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_clock_manager *clock_manager_base =
> > - (void *)SOCFPGA_CLKMGR_ADDRESS;
> > -
> > struct socfpga_dwmci_plat {
> > struct mmc_config cfg;
> > struct mmc mmc;
> > @@ -54,8 +51,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
> > ((priv->drvsel & 0x7) << SYSMGR_SDMMC_DRVSEL_SHIFT);
> >
> > /* Disable SDMMC clock. */
> > - clrbits_le32(&clock_manager_base->per_pll.en,
> > - CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> > + clrbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
> > + CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> >
> > debug("%s: drvsel %d smplsel %d\n", __func__,
> > priv->drvsel, priv->smplsel);
> > @@ -65,8 +62,8 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
> > readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
> >
> > /* Enable SDMMC clock */
> > - setbits_le32(&clock_manager_base->per_pll.en,
> > - CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> > + setbits_le32(socfpga_clkmgr_base + CLKMGR_PERPLL_EN,
> > + CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
> > }
> >
> > static int socfpga_dwmmc_get_clk_rate(struct udevice *dev)
> > --
> > 2.19.0
> >
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines
2019-10-02 9:20 ` Simon Goldschmidt
@ 2019-10-04 3:03 ` Ley Foon Tan
0 siblings, 0 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-10-04 3:03 UTC (permalink / raw)
To: u-boot
On Wed, Oct 2, 2019 at 5:20 PM Simon Goldschmidt
<simon.k.r.goldschmidt@gmail.com> wrote:
>
> On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> >
> > Convert reset manager for Gen5, Arria 10 and Stratix 10 from struct
> > to defines.
> > No functional change.
> >
> > Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> >
> > ---
> > v2:
> > - Get base address from DT
>
> Wait, "no functional change", yet you now read the base address from DT?
> I think that's a good idea, but could you do it in a separate patch?
>
Will remove "No functional change" in commit message. To convert from
struct to defines, we need use DT address.
Regards
Ley Foon
>
> > - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> > - Add prefix to defines.
> > ---
> > arch/arm/mach-socfpga/include/mach/misc.h | 1 +
> > .../mach-socfpga/include/mach/reset_manager.h | 2 +
> > .../include/mach/reset_manager_arria10.h | 43 ++++-------------
> > .../include/mach/reset_manager_gen5.h | 22 ++++-----
> > .../include/mach/reset_manager_s10.h | 33 ++-----------
> > arch/arm/mach-socfpga/misc.c | 32 +++++++++++++
> > arch/arm/mach-socfpga/misc_gen5.c | 7 ++-
> > arch/arm/mach-socfpga/reset_manager_arria10.c | 47 ++++++++++---------
> > arch/arm/mach-socfpga/reset_manager_gen5.c | 28 +++++------
> > arch/arm/mach-socfpga/reset_manager_s10.c | 34 +++++++-------
> > arch/arm/mach-socfpga/spl_a10.c | 7 ++-
> > arch/arm/mach-socfpga/spl_gen5.c | 12 ++---
> > arch/arm/mach-socfpga/spl_s10.c | 12 +++--
> > drivers/sysreset/sysreset_socfpga.c | 6 +--
> > 14 files changed, 137 insertions(+), 149 deletions(-)
> >
> > diff --git a/arch/arm/mach-socfpga/include/mach/misc.h b/arch/arm/mach-socfpga/include/mach/misc.h
> > index 27d0b6a370..a29b049742 100644
> > --- a/arch/arm/mach-socfpga/include/mach/misc.h
> > +++ b/arch/arm/mach-socfpga/include/mach/misc.h
> > @@ -41,5 +41,6 @@ void socfpga_sdram_remap_zero(void);
> >
> > void do_bridge_reset(int enable, unsigned int mask);
> > void socfpga_pl310_clear(void);
> > +void socfpga_get_manager_addr(void);
> >
> > #endif /* _MISC_H_ */
> > diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager.h b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> > index 6ad037e325..a5b6931350 100644
> > --- a/arch/arm/mach-socfpga/include/mach/reset_manager.h
> > +++ b/arch/arm/mach-socfpga/include/mach/reset_manager.h
> > @@ -6,6 +6,8 @@
> > #ifndef _RESET_MANAGER_H_
> > #define _RESET_MANAGER_H_
> >
> > +extern phys_addr_t socfpga_rstmgr_base;
> > +
> > void reset_cpu(ulong addr);
> >
> > void socfpga_per_reset(u32 reset, int set);
> > diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> > index 6623ebee65..41169aa677 100644
> > --- a/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
> > @@ -14,40 +14,15 @@ int socfpga_reset_deassert_bridges_handoff(void);
> > void socfpga_reset_deassert_osc1wd0(void);
> > int socfpga_bridges_reset(void);
> >
> > -struct socfpga_reset_manager {
> > - u32 stat;
> > - u32 ramstat;
> > - u32 miscstat;
> > - u32 ctrl;
> > - u32 hdsken;
> > - u32 hdskreq;
> > - u32 hdskack;
> > - u32 counts;
> > - u32 mpumodrst;
> > - u32 per0modrst;
> > - u32 per1modrst;
> > - u32 brgmodrst;
> > - u32 sysmodrst;
> > - u32 coldmodrst;
> > - u32 nrstmodrst;
> > - u32 dbgmodrst;
> > - u32 mpuwarmmask;
> > - u32 per0warmmask;
> > - u32 per1warmmask;
> > - u32 brgwarmmask;
> > - u32 syswarmmask;
> > - u32 nrstwarmmask;
> > - u32 l3warmmask;
> > - u32 tststa;
> > - u32 tstscratch;
> > - u32 hdsktimeout;
> > - u32 hmcintr;
> > - u32 hmcintren;
> > - u32 hmcintrens;
> > - u32 hmcintrenr;
> > - u32 hmcgpout;
> > - u32 hmcgpin;
> > -};
> > +#define RSTMGR_A10_STATUS 0
> > +#define RSTMGR_A10_CTRL 0xc
> > +#define RSTMGR_A10_MPUMODRST 0x20
> > +#define RSTMGR_A10_PER0MODRST 0x24
> > +#define RSTMGR_A10_PER1MODRST 0x28
> > +#define RSTMGR_A10_BRGMODRST 0x2c
> > +#define RSTMGR_A10_SYSMODRST 0x30
> > +
> > +#define RSTMGR_CTRL RSTMGR_A10_CTRL
> >
> > /*
> > * SocFPGA Arria10 reset IDs, bank mapping is as follows:
> > diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> > index f4dcb14623..e51ebfd08f 100644
> > --- a/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> > +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
> > @@ -11,19 +11,15 @@
> > void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h);
> > void socfpga_bridges_reset(int enable);
> >
> > -struct socfpga_reset_manager {
> > - u32 status;
> > - u32 ctrl;
> > - u32 counts;
> > - u32 padding1;
> > - u32 mpu_mod_reset;
> > - u32 per_mod_reset;
> > - u32 per2_mod_reset;
> > - u32 brg_mod_reset;
> > - u32 misc_mod_reset;
> > - u32 padding2[12];
> > - u32 tstscratch;
> > -};
> > +#define RSTMGR_GEN5_STATUS 0
> > +#define RSTMGR_GEN5_CTRL 4
> > +#define RSTMGR_GEN5_MPUMODRST 0x10
> > +#define RSTMGR_GEN5_PERMODRST 0x14
> > +#define RSTMGR_GEN5_PER2MODRST 0x18
> > +#define RSTMGR_GEN5_BRGMODRST 0x1c
> > +#define RSTMGR_GEN5_MISCMODRST 0x20
> > +
> > +#define RSTMGR_CTRL RSTMGR_GEN5_CTRL
> >
> > /*
> > * SocFPGA Cyclone V/Arria V reset IDs, bank mapping is as follows:
> > diff --git a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> > index 452147b017..b602129656 100644
> > --- a/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/reset_manager_s10.h
> > @@ -15,34 +15,11 @@ void socfpga_bridges_reset(int enable);
> > void socfpga_per_reset(u32 reset, int set);
> > void socfpga_per_reset_all(void);
> >
> > -struct socfpga_reset_manager {
> > - u32 status;
> > - u32 mpu_rst_stat;
> > - u32 misc_stat;
> > - u32 padding1;
> > - u32 hdsk_en;
> > - u32 hdsk_req;
> > - u32 hdsk_ack;
> > - u32 hdsk_stall;
> > - u32 mpumodrst;
> > - u32 per0modrst;
> > - u32 per1modrst;
> > - u32 brgmodrst;
> > - u32 padding2;
> > - u32 cold_mod_reset;
> > - u32 padding3;
> > - u32 dbg_mod_reset;
> > - u32 tap_mod_reset;
> > - u32 padding4;
> > - u32 padding5;
> > - u32 brg_warm_mask;
> > - u32 padding6[3];
> > - u32 tst_stat;
> > - u32 padding7;
> > - u32 hdsk_timeout;
> > - u32 mpul2flushtimeout;
> > - u32 dbghdsktimeout;
> > -};
> > +#define RSTMGR_S10_STATUS 0
> > +#define RSTMGR_S10_MPUMODRST 0x20
> > +#define RSTMGR_S10_PER0MODRST 0x24
> > +#define RSTMGR_S10_PER1MODRST 0x28
> > +#define RSTMGR_S10_BRGMODRST 0x2c
> >
> > #define RSTMGR_MPUMODRST_CORE0 0
> > #define RSTMGR_PER0MODRST_OCP_MASK 0x0020bf00
> > diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> > index 49dadd4c3d..901c432f82 100644
> > --- a/arch/arm/mach-socfpga/misc.c
> > +++ b/arch/arm/mach-socfpga/misc.c
> > @@ -22,6 +22,8 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > +phys_addr_t socfpga_rstmgr_base __section(".data");
> > +
> > #ifdef CONFIG_SYS_L2_PL310
> > static const struct pl310_regs *const pl310 =
> > (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
> > @@ -145,6 +147,8 @@ void socfpga_fpga_add(void *fpga_desc)
> >
> > int arch_cpu_init(void)
> > {
> > + socfpga_get_manager_addr();
> > +
> > #ifdef CONFIG_HW_WATCHDOG
> > /*
> > * In case the watchdog is enabled, make sure to (re-)configure it
> > @@ -202,3 +206,31 @@ U_BOOT_CMD(bridge, 3, 1, do_bridge,
> > );
> >
> > #endif
> > +
> > +static phys_addr_t socfpga_get_base_addr(const char *compat)
> > +{
> > + const void *blob = gd->fdt_blob;
> > + struct fdt_resource r;
> > + int node;
> > + int ret;
> > +
> > + node = fdt_node_offset_by_compatible(blob, -1, compat);
> > + if (node < 0)
> > + return 0;
> > +
> > + if (!fdtdec_get_is_enabled(blob, node))
> > + return 0;
> > +
> > + ret = fdt_get_resource(blob, node, "reg", 0, &r);
> > + if (ret)
> > + return 0;
> > +
> > + return (phys_addr_t)r.start;
> > +}
> > +
> > +void socfpga_get_manager_addr(void)
> > +{
> > + socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
> > + if (!socfpga_rstmgr_base)
> > + hang();
> > +}
> > diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
> > index 31681b799d..b39a66562d 100644
> > --- a/arch/arm/mach-socfpga/misc_gen5.c
> > +++ b/arch/arm/mach-socfpga/misc_gen5.c
> > @@ -206,8 +206,6 @@ int arch_early_init_r(void)
> > }
> >
> > #ifndef CONFIG_SPL_BUILD
> > -static struct socfpga_reset_manager *reset_manager_base =
> > - (struct socfpga_reset_manager *)SOCFPGA_RSTMGR_ADDRESS;
> > static struct socfpga_sdr_ctrl *sdr_ctrl =
> > (struct socfpga_sdr_ctrl *)SDR_CTRLGRP_ADDRESS;
> >
> > @@ -226,12 +224,13 @@ void do_bridge_reset(int enable, unsigned int mask)
> >
> > writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
> > writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
> > - writel(iswgrp_handoff[0], &reset_manager_base->brg_mod_reset);
> > + writel(iswgrp_handoff[0],
> > + socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> > writel(iswgrp_handoff[1], &nic301_regs->remap);
> > } else {
> > writel(0, &sysmgr_regs->fpgaintfgrp_module);
> > writel(0, &sdr_ctrl->fpgaport_rst);
> > - writel(0, &reset_manager_base->brg_mod_reset);
> > + writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> > writel(1, &nic301_regs->remap);
> > }
> > }
> > diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
> > index 471a3045af..4553653992 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_arria10.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
> > @@ -15,8 +15,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_reset_manager *reset_manager_base =
> > - (void *)SOCFPGA_RSTMGR_ADDRESS;
> > static const struct socfpga_system_manager *sysmgr_regs =
> > (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > @@ -63,14 +61,14 @@ static const struct bridge_cfg bridge_cfg_tbl[] = {
> > void socfpga_watchdog_disable(void)
> > {
> > /* assert reset for watchdog */
> > - setbits_le32(&reset_manager_base->per1modrst,
> > + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
> > ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
> > }
> >
> > /* Release NOC ddr scheduler from reset */
> > void socfpga_reset_deassert_noc_ddr_scheduler(void)
> > {
> > - clrbits_le32(&reset_manager_base->brgmodrst,
> > + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
> > ALT_RSTMGR_BRGMODRST_DDRSCH_SET_MSK);
> > }
> >
> > @@ -103,7 +101,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
> > setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
> >
> > /* Release bridges from reset state per handoff value */
> > - clrbits_le32(&reset_manager_base->brgmodrst, mask_rstmgr);
> > + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
> >
> > /* Poll until all idleack to 0, timeout at 1000ms */
> > return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
> > @@ -113,7 +111,7 @@ int socfpga_reset_deassert_bridges_handoff(void)
> > /* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
> > void socfpga_reset_deassert_osc1wd0(void)
> > {
> > - clrbits_le32(&reset_manager_base->per1modrst,
> > + clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST,
> > ALT_RSTMGR_PER1MODRST_WD0_SET_MSK);
> > }
> >
> > @@ -122,24 +120,24 @@ void socfpga_reset_deassert_osc1wd0(void)
> > */
> > void socfpga_per_reset(u32 reset, int set)
> > {
> > - const u32 *reg;
> > + unsigned long reg;
> > u32 rstmgr_bank = RSTMGR_BANK(reset);
> >
> > switch (rstmgr_bank) {
> > case 0:
> > - reg = &reset_manager_base->mpumodrst;
> > + reg = RSTMGR_A10_MPUMODRST;
> > break;
> > case 1:
> > - reg = &reset_manager_base->per0modrst;
> > + reg = RSTMGR_A10_PER0MODRST;
> > break;
> > case 2:
> > - reg = &reset_manager_base->per1modrst;
> > + reg = RSTMGR_A10_PER1MODRST;
> > break;
> > case 3:
> > - reg = &reset_manager_base->brgmodrst;
> > + reg = RSTMGR_A10_BRGMODRST;
> > break;
> > case 4:
> > - reg = &reset_manager_base->sysmodrst;
> > + reg = RSTMGR_A10_SYSMODRST;
> > break;
> >
> > default:
> > @@ -147,9 +145,11 @@ void socfpga_per_reset(u32 reset, int set)
> > }
> >
> > if (set)
> > - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + setbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > else
> > - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + clrbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > }
> >
> > /*
> > @@ -174,11 +174,12 @@ void socfpga_per_reset_all(void)
> > ALT_RSTMGR_PER0MODRST_SDMMCECC_SET_MSK;
> >
> > /* disable all components except ECC_OCP, L4 Timer0 and L4 WD0 */
> > - writel(~l4wd0, &reset_manager_base->per1modrst);
> > - setbits_le32(&reset_manager_base->per0modrst, ~mask_ecc_ocp);
> > + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_A10_PER1MODRST);
> > + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST,
> > + ~mask_ecc_ocp);
> >
> > /* Finally disable the ECC_OCP */
> > - setbits_le32(&reset_manager_base->per0modrst, mask_ecc_ocp);
> > + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_PER0MODRST, mask_ecc_ocp);
> > }
> >
> > int socfpga_bridges_reset(void)
> > @@ -224,13 +225,13 @@ int socfpga_bridges_reset(void)
> > return ret;
> >
> > /* Put all bridges (except NOR DDR scheduler) into reset state */
> > - setbits_le32(&reset_manager_base->brgmodrst,
> > + setbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST,
> > (ALT_RSTMGR_BRGMODRST_H2F_SET_MSK |
> > - ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
> > - ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
> > - ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
> > - ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
> > - ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
> > + ALT_RSTMGR_BRGMODRST_LWH2F_SET_MSK |
> > + ALT_RSTMGR_BRGMODRST_F2H_SET_MSK |
> > + ALT_RSTMGR_BRGMODRST_F2SSDRAM0_SET_MSK |
> > + ALT_RSTMGR_BRGMODRST_F2SSDRAM1_SET_MSK |
> > + ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
> >
> > /* Disable NOC timeout */
> > writel(0, &sysmgr_regs->noc_timeout);
> > diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
> > index 9a32f5abfe..ad31214711 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_gen5.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
> > @@ -10,32 +10,30 @@
> > #include <asm/arch/reset_manager.h>
> > #include <asm/arch/system_manager.h>
> >
> > -static const struct socfpga_reset_manager *reset_manager_base =
> > - (void *)SOCFPGA_RSTMGR_ADDRESS;
> > static const struct socfpga_system_manager *sysmgr_regs =
> > (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > /* Assert or de-assert SoCFPGA reset manager reset. */
> > void socfpga_per_reset(u32 reset, int set)
> > {
> > - const u32 *reg;
> > + unsigned long reg;
> > u32 rstmgr_bank = RSTMGR_BANK(reset);
> >
> > switch (rstmgr_bank) {
> > case 0:
> > - reg = &reset_manager_base->mpu_mod_reset;
> > + reg = RSTMGR_GEN5_MPUMODRST;
> > break;
> > case 1:
> > - reg = &reset_manager_base->per_mod_reset;
> > + reg = RSTMGR_GEN5_PERMODRST;
> > break;
> > case 2:
> > - reg = &reset_manager_base->per2_mod_reset;
> > + reg = RSTMGR_GEN5_PER2MODRST;
> > break;
> > case 3:
> > - reg = &reset_manager_base->brg_mod_reset;
> > + reg = RSTMGR_GEN5_BRGMODRST;
> > break;
> > case 4:
> > - reg = &reset_manager_base->misc_mod_reset;
> > + reg = RSTMGR_GEN5_MISCMODRST;
> > break;
> >
> > default:
> > @@ -43,9 +41,11 @@ void socfpga_per_reset(u32 reset, int set)
> > }
> >
> > if (set)
> > - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + setbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > else
> > - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + clrbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > }
> >
> > /*
> > @@ -57,8 +57,8 @@ void socfpga_per_reset_all(void)
> > {
> > const u32 l4wd0 = 1 << RSTMGR_RESET(SOCFPGA_RESET(L4WD0));
> >
> > - writel(~l4wd0, &reset_manager_base->per_mod_reset);
> > - writel(0xffffffff, &reset_manager_base->per2_mod_reset);
> > + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_GEN5_PERMODRST);
> > + writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_GEN5_PER2MODRST);
> > }
> >
> > #define L3REGS_REMAP_LWHPS2FPGA_MASK 0x10
> > @@ -95,7 +95,7 @@ void socfpga_bridges_reset(int enable)
> >
> > if (enable) {
> > /* brdmodrst */
> > - writel(0x7, &reset_manager_base->brg_mod_reset);
> > + writel(0x7, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> > writel(L3REGS_REMAP_OCRAM_MASK, SOCFPGA_L3REGS_ADDRESS);
> > } else {
> > socfpga_bridges_set_handoff_regs(false, false, false);
> > @@ -109,7 +109,7 @@ void socfpga_bridges_reset(int enable)
> > }
> >
> > /* brdmodrst */
> > - writel(0, &reset_manager_base->brg_mod_reset);
> > + writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> >
> > /* Remap the bridges into memory map */
> > writel(l3mask, SOCFPGA_L3REGS_ADDRESS);
> > diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
> > index 499a84aff5..b196d58d3d 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_s10.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_s10.c
> > @@ -12,31 +12,31 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_reset_manager *reset_manager_base =
> > - (void *)SOCFPGA_RSTMGR_ADDRESS;
> > static const struct socfpga_system_manager *system_manager_base =
> > (void *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > /* Assert or de-assert SoCFPGA reset manager reset. */
> > void socfpga_per_reset(u32 reset, int set)
> > {
> > - const void *reg;
> > + unsigned long reg;
> >
> > if (RSTMGR_BANK(reset) == 0)
> > - reg = &reset_manager_base->mpumodrst;
> > + reg = RSTMGR_S10_MPUMODRST;
> > else if (RSTMGR_BANK(reset) == 1)
> > - reg = &reset_manager_base->per0modrst;
> > + reg = RSTMGR_S10_PER0MODRST;
> > else if (RSTMGR_BANK(reset) == 2)
> > - reg = &reset_manager_base->per1modrst;
> > + reg = RSTMGR_S10_PER1MODRST;
> > else if (RSTMGR_BANK(reset) == 3)
> > - reg = &reset_manager_base->brgmodrst;
> > + reg = RSTMGR_S10_BRGMODRST;
> > else /* Invalid reset register, do nothing */
> > return;
> >
> > if (set)
> > - setbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + setbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > else
> > - clrbits_le32(reg, 1 << RSTMGR_RESET(reset));
> > + clrbits_le32(socfpga_rstmgr_base + reg,
> > + 1 << RSTMGR_RESET(reset));
> > }
> >
> > /*
> > @@ -50,9 +50,9 @@ void socfpga_per_reset_all(void)
> >
> > /* disable all except OCP and l4wd0. OCP disable later */
> > writel(~(l4wd0 | RSTMGR_PER0MODRST_OCP_MASK),
> > - &reset_manager_base->per0modrst);
> > - writel(~l4wd0, &reset_manager_base->per0modrst);
> > - writel(0xffffffff, &reset_manager_base->per1modrst);
> > + socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
> > + writel(~l4wd0, socfpga_rstmgr_base + RSTMGR_S10_PER0MODRST);
> > + writel(0xffffffff, socfpga_rstmgr_base + RSTMGR_S10_PER1MODRST);
> > }
> >
> > void socfpga_bridges_reset(int enable)
> > @@ -62,7 +62,7 @@ void socfpga_bridges_reset(int enable)
> > setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
> >
> > /* Release all bridges from reset state */
> > - clrbits_le32(&reset_manager_base->brgmodrst, ~0);
> > + clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
> >
> > /* Poll until all idleack to 0 */
> > while (readl(&system_manager_base->noc_idleack))
> > @@ -85,9 +85,9 @@ void socfpga_bridges_reset(int enable)
> > ;
> >
> > /* Reset all bridges (except NOR DDR scheduler & F2S) */
> > - setbits_le32(&reset_manager_base->brgmodrst,
> > + setbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST,
> > ~(RSTMGR_BRGMODRST_DDRSCH_MASK |
> > - RSTMGR_BRGMODRST_FPGA2SOC_MASK));
> > + RSTMGR_BRGMODRST_FPGA2SOC_MASK));
> >
> > /* Disable NOC timeout */
> > writel(0, &system_manager_base->noc_timeout);
> > @@ -99,6 +99,6 @@ void socfpga_bridges_reset(int enable)
> > */
> > int cpu_has_been_warmreset(void)
> > {
> > - return readl(&reset_manager_base->status) &
> > - RSTMGR_L4WD_MPU_WARMRESET_MASK;
> > + return readl(socfpga_rstmgr_base + RSTMGR_S10_STATUS) &
> > + RSTMGR_L4WD_MPU_WARMRESET_MASK;
> > }
> > diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> > index b820cb0673..a0d80fd47e 100644
> > --- a/arch/arm/mach-socfpga/spl_a10.c
> > +++ b/arch/arm/mach-socfpga/spl_a10.c
> > @@ -106,6 +106,11 @@ void spl_board_init(void)
> >
> > void board_init_f(ulong dummy)
> > {
> > + if (spl_early_init())
> > + hang();
> > +
> > + socfpga_get_manager_addr();
> > +
> > dcache_disable();
> >
> > socfpga_init_security_policies();
> > @@ -116,8 +121,6 @@ void board_init_f(ulong dummy)
> > socfpga_per_reset_all();
> > socfpga_watchdog_disable();
> >
> > - spl_early_init();
> > -
> > /* Configure the clock based on handoff */
> > cm_basic_init(gd->fdt_blob);
> >
> > diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
> > index 47e63709ad..9ee053da3a 100644
> > --- a/arch/arm/mach-socfpga/spl_gen5.c
> > +++ b/arch/arm/mach-socfpga/spl_gen5.c
> > @@ -67,6 +67,12 @@ void board_init_f(ulong dummy)
> > int ret;
> > struct udevice *dev;
> >
> > + ret = spl_early_init();
> > + if (ret)
> > + hang();
> > +
> > + socfpga_get_manager_addr();
> > +
> > /*
> > * First C code to run. Clear fake OCRAM ECC first as SBE
> > * and DBE might triggered during power on
> > @@ -128,12 +134,6 @@ void board_init_f(ulong dummy)
> > debug_uart_init();
> > #endif
> >
> > - ret = spl_early_init();
> > - if (ret) {
> > - debug("spl_early_init() failed: %d\n", ret);
> > - hang();
> > - }
> > -
> > ret = uclass_get_device(UCLASS_RESET, 0, &dev);
> > if (ret)
> > debug("Reset init failed: %d\n", ret);
> > diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
> > index ec65e1ce64..9a97a84e1e 100644
> > --- a/arch/arm/mach-socfpga/spl_s10.c
> > +++ b/arch/arm/mach-socfpga/spl_s10.c
> > @@ -14,6 +14,7 @@
> > #include <asm/arch/clock_manager.h>
> > #include <asm/arch/firewall_s10.h>
> > #include <asm/arch/mailbox_s10.h>
> > +#include <asm/arch/misc.h>
> > #include <asm/arch/reset_manager.h>
> > #include <asm/arch/system_manager.h>
> > #include <watchdog.h>
> > @@ -120,6 +121,12 @@ void board_init_f(ulong dummy)
> > const struct cm_config *cm_default_cfg = cm_get_default_config();
> > int ret;
> >
> > + ret = spl_early_init();
> > + if (ret)
> > + hang();
> > +
> > + socfpga_get_manager_addr();
> > +
> > #ifdef CONFIG_HW_WATCHDOG
> > /* Ensure watchdog is paused when debugging is happening */
> > writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
> > @@ -145,11 +152,6 @@ void board_init_f(ulong dummy)
> > socfpga_per_reset(SOCFPGA_RESET(UART0), 0);
> > debug_uart_init();
> > #endif
> > - ret = spl_early_init();
> > - if (ret) {
> > - debug("spl_early_init() failed: %d\n", ret);
> > - hang();
> > - }
> >
> > preloader_console_init();
> > cm_print_clock_quick_summary();
> > diff --git a/drivers/sysreset/sysreset_socfpga.c b/drivers/sysreset/sysreset_socfpga.c
> > index d6c26a5b23..3390b7bdc2 100644
> > --- a/drivers/sysreset/sysreset_socfpga.c
> > +++ b/drivers/sysreset/sysreset_socfpga.c
> > @@ -12,7 +12,7 @@
> > #include <asm/arch/reset_manager.h>
> >
> > struct socfpga_sysreset_data {
> > - struct socfpga_reset_manager *rstmgr_base;
> > + void __iomem *rstmgr_base;
> > };
> >
> > static int socfpga_sysreset_request(struct udevice *dev,
> > @@ -23,11 +23,11 @@ static int socfpga_sysreset_request(struct udevice *dev,
> > switch (type) {
> > case SYSRESET_WARM:
> > writel(BIT(RSTMGR_CTRL_SWWARMRSTREQ_LSB),
> > - &data->rstmgr_base->ctrl);
> > + data->rstmgr_base + RSTMGR_CTRL);
> > break;
> > case SYSRESET_COLD:
> > writel(BIT(RSTMGR_CTRL_SWCOLDRSTREQ_LSB),
> > - &data->rstmgr_base->ctrl);
> > + data->rstmgr_base + RSTMGR_CTRL);
> > break;
> > default:
> > return -EPROTONOSUPPORT;
> > --
> > 2.19.0
> >
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system manager from struct to defines
2019-10-02 9:20 ` Simon Goldschmidt
@ 2019-10-04 3:05 ` Ley Foon Tan
0 siblings, 0 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-10-04 3:05 UTC (permalink / raw)
To: u-boot
On Wed, Oct 2, 2019 at 5:20 PM Simon Goldschmidt
<simon.k.r.goldschmidt@gmail.com> wrote:
>
> On Tue, Sep 10, 2019 at 10:38 AM Ley Foon Tan <ley.foon.tan@intel.com> wrote:
> >
> > Convert system manager for Gen5, Arria 10 and Stratix 10 from struct
> > to defines.
> > No functional change.
> >
> > Signed-off-by: Ley Foon Tan <ley.foon.tan@intel.com>
> >
> > ---
> > v2:
> > - Change to use writel(), readl() and etc.
> > - Get base address from DT.
>
> Same as 2/4: separate patch please.
Same for this, will remove "no functional change" in commit message.
Thanks
Ley Foon
>
> > - Add prefix to defines.
> > ---
> > arch/arm/mach-socfpga/clock_manager_s10.c | 4 +-
> > .../include/mach/system_manager.h | 2 +
> > .../include/mach/system_manager_arria10.h | 94 +++------
> > .../include/mach/system_manager_gen5.h | 123 +++---------
> > .../include/mach/system_manager_s10.h | 184 +++++++-----------
> > arch/arm/mach-socfpga/mailbox_s10.c | 6 +-
> > arch/arm/mach-socfpga/misc.c | 5 +
> > arch/arm/mach-socfpga/misc_arria10.c | 9 +-
> > arch/arm/mach-socfpga/misc_gen5.c | 22 ++-
> > arch/arm/mach-socfpga/misc_s10.c | 9 +-
> > arch/arm/mach-socfpga/reset_manager_arria10.c | 24 +--
> > arch/arm/mach-socfpga/reset_manager_gen5.c | 7 +-
> > arch/arm/mach-socfpga/reset_manager_s10.c | 18 +-
> > arch/arm/mach-socfpga/scan_manager.c | 6 +-
> > arch/arm/mach-socfpga/spl_a10.c | 5 +-
> > arch/arm/mach-socfpga/spl_gen5.c | 11 +-
> > arch/arm/mach-socfpga/spl_s10.c | 12 +-
> > arch/arm/mach-socfpga/system_manager_gen5.c | 38 ++--
> > arch/arm/mach-socfpga/system_manager_s10.c | 39 ++--
> > arch/arm/mach-socfpga/wrap_pll_config_s10.c | 11 +-
> > drivers/ddr/altera/sdram_gen5.c | 10 +-
> > drivers/ddr/altera/sdram_s10.c | 6 +-
> > drivers/fpga/socfpga_arria10.c | 7 +-
> > drivers/fpga/socfpga_gen5.c | 4 +-
> > drivers/mmc/socfpga_dw_mmc.c | 6 +-
> > 25 files changed, 240 insertions(+), 422 deletions(-)
> >
> > diff --git a/arch/arm/mach-socfpga/clock_manager_s10.c b/arch/arm/mach-socfpga/clock_manager_s10.c
> > index 3ba2a00c02..6cbf07ac6f 100644
> > --- a/arch/arm/mach-socfpga/clock_manager_s10.c
> > +++ b/arch/arm/mach-socfpga/clock_manager_s10.c
> > @@ -14,8 +14,6 @@ DECLARE_GLOBAL_DATA_PTR;
> >
> > static const struct socfpga_clock_manager *clock_manager_base =
> > (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > /*
> > * function to write the bypass register which requires a poll of the
> > @@ -351,7 +349,7 @@ unsigned int cm_get_l4_sp_clk_hz(void)
> >
> > unsigned int cm_get_qspi_controller_clk_hz(void)
> > {
> > - return readl(&sysmgr_regs->boot_scratch_cold0);
> > + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
> > }
> >
> > unsigned int cm_get_spi_controller_clk_hz(void)
> > diff --git a/arch/arm/mach-socfpga/include/mach/system_manager.h b/arch/arm/mach-socfpga/include/mach/system_manager.h
> > index 7e76df74b7..803305eb35 100644
> > --- a/arch/arm/mach-socfpga/include/mach/system_manager.h
> > +++ b/arch/arm/mach-socfpga/include/mach/system_manager.h
> > @@ -6,6 +6,8 @@
> > #ifndef _SYSTEM_MANAGER_H_
> > #define _SYSTEM_MANAGER_H_
> >
> > +extern phys_addr_t socfpga_sysmgr_base;
> > +
> > #if defined(CONFIG_TARGET_SOCFPGA_STRATIX10)
> > #include <asm/arch/system_manager_s10.h>
> > #else
> > diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> > index 14052b957c..1a45c0f134 100644
> > --- a/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/system_manager_arria10.h
> > @@ -6,73 +6,33 @@
> > #ifndef _SYSTEM_MANAGER_ARRIA10_H_
> > #define _SYSTEM_MANAGER_ARRIA10_H_
> >
> > -struct socfpga_system_manager {
> > - u32 siliconid1;
> > - u32 siliconid2;
> > - u32 wddbg;
> > - u32 bootinfo;
> > - u32 mpu_ctrl_l2_ecc;
> > - u32 _pad_0x14_0x1f[3];
> > - u32 dma;
> > - u32 dma_periph;
> > - u32 sdmmcgrp_ctrl;
> > - u32 sdmmc_l3master;
> > - u32 nand_bootstrap;
> > - u32 nand_l3master;
> > - u32 usb0_l3master;
> > - u32 usb1_l3master;
> > - u32 emac_global;
> > - u32 emac[3];
> > - u32 _pad_0x50_0x5f[4];
> > - u32 fpgaintf_en_global;
> > - u32 fpgaintf_en_0;
> > - u32 fpgaintf_en_1;
> > - u32 fpgaintf_en_2;
> > - u32 fpgaintf_en_3;
> > - u32 _pad_0x74_0x7f[3];
> > - u32 noc_addr_remap_value;
> > - u32 noc_addr_remap_set;
> > - u32 noc_addr_remap_clear;
> > - u32 _pad_0x8c_0x8f;
> > - u32 ecc_intmask_value;
> > - u32 ecc_intmask_set;
> > - u32 ecc_intmask_clr;
> > - u32 ecc_intstatus_serr;
> > - u32 ecc_intstatus_derr;
> > - u32 mpu_status_l2_ecc;
> > - u32 mpu_clear_l2_ecc;
> > - u32 mpu_status_l1_parity;
> > - u32 mpu_clear_l1_parity;
> > - u32 mpu_set_l1_parity;
> > - u32 _pad_0xb8_0xbf[2];
> > - u32 noc_timeout;
> > - u32 noc_idlereq_set;
> > - u32 noc_idlereq_clr;
> > - u32 noc_idlereq_value;
> > - u32 noc_idleack;
> > - u32 noc_idlestatus;
> > - u32 fpga2soc_ctrl;
> > - u32 _pad_0xdc_0xff[9];
> > - u32 tsmc_tsel_0;
> > - u32 tsmc_tsel_1;
> > - u32 tsmc_tsel_2;
> > - u32 tsmc_tsel_3;
> > - u32 _pad_0x110_0x200[60];
> > - u32 romhw_ctrl;
> > - u32 romcode_ctrl;
> > - u32 romcode_cpu1startaddr;
> > - u32 romcode_initswstate;
> > - u32 romcode_initswlastld;
> > - u32 _pad_0x214_0x217;
> > - u32 warmram_enable;
> > - u32 warmram_datastart;
> > - u32 warmram_length;
> > - u32 warmram_execution;
> > - u32 warmram_crc;
> > - u32 _pad_0x22c_0x22f;
> > - u32 isw_handoff[8];
> > - u32 romcode_bootromswstate[8];
> > -};
> > +#define SYSMGR_A10_WDDBG 0x8
> > +#define SYSMGR_A10_BOOTINFO 0xc
> > +#define SYSMGR_A10_DMA 0x20
> > +#define SYSMGR_A10_DMA_PERIPH 0x24
> > +#define SYSMGR_A10_SDMMC 0x28
> > +#define SYSMGR_A10_SDMMC_L3MASTER 0x2c
> > +#define SYSMGR_A10_EMAC_GLOBAL 0x40
> > +#define SYSMGR_A10_EMAC0 0x44
> > +#define SYSMGR_A10_EMAC1 0x48
> > +#define SYSMGR_A10_EMAC2 0x4c
> > +#define SYSMGR_A10_FPGAINTF_EN_GLOBAL 0x60
> > +#define SYSMGR_A10_FPGAINTF_EN0 0x64
> > +#define SYSMGR_A10_FPGAINTF_EN1 0x68
> > +#define SYSMGR_A10_FPGAINTF_EN2 0x6c
> > +#define SYSMGR_A10_FPGAINTF_EN3 0x70
> > +#define SYSMGR_A10_ECC_INTMASK_VAL 0x90
> > +#define SYSMGR_A10_ECC_INTMASK_SET 0x94
> > +#define SYSMGR_A10_ECC_INTMASK_CLR 0x98
> > +#define SYSMGR_A10_NOC_TIMEOUT 0xc0
> > +#define SYSMGR_A10_NOC_IDLEREQ_SET 0xc4
> > +#define SYSMGR_A10_NOC_IDLEREQ_CLR 0xc8
> > +#define SYSMGR_A10_NOC_IDLEREQ_VAL 0xcc
> > +#define SYSMGR_A10_NOC_IDLEACK 0xd0
> > +#define SYSMGR_A10_NOC_IDLESTATUS 0xd4
> > +#define SYSMGR_A10_FPGA2SOC_CTRL 0xd8
> > +
> > +#define SYSMGR_SDMMC SYSMGR_A10_SDMMC
> >
> > #define SYSMGR_SDMMC_SMPLSEL_SHIFT 4
> > #define SYSMGR_BOOTINFO_BSEL_SHIFT 12
> > diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> > index 52e59df513..90cb465d13 100644
> > --- a/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> > +++ b/arch/arm/mach-socfpga/include/mach/system_manager_gen5.h
> > @@ -13,106 +13,29 @@ void sysmgr_config_warmrstcfgio(int enable);
> >
> > void sysmgr_get_pinmux_table(const u8 **table, unsigned int *table_len);
> >
> > -struct socfpga_system_manager {
> > - /* System Manager Module */
> > - u32 siliconid1; /* 0x00 */
> > - u32 siliconid2;
> > - u32 _pad_0x8_0xf[2];
> > - u32 wddbg; /* 0x10 */
> > - u32 bootinfo;
> > - u32 hpsinfo;
> > - u32 parityinj;
> > - /* FPGA Interface Group */
> > - u32 fpgaintfgrp_gbl; /* 0x20 */
> > - u32 fpgaintfgrp_indiv;
> > - u32 fpgaintfgrp_module;
> > - u32 _pad_0x2c_0x2f;
> > - /* Scan Manager Group */
> > - u32 scanmgrgrp_ctrl; /* 0x30 */
> > - u32 _pad_0x34_0x3f[3];
> > - /* Freeze Control Group */
> > - u32 frzctrl_vioctrl; /* 0x40 */
> > - u32 _pad_0x44_0x4f[3];
> > - u32 frzctrl_hioctrl; /* 0x50 */
> > - u32 frzctrl_src;
> > - u32 frzctrl_hwctrl;
> > - u32 _pad_0x5c_0x5f;
> > - /* EMAC Group */
> > - u32 emacgrp_ctrl; /* 0x60 */
> > - u32 emacgrp_l3master;
> > - u32 _pad_0x68_0x6f[2];
> > - /* DMA Controller Group */
> > - u32 dmagrp_ctrl; /* 0x70 */
> > - u32 dmagrp_persecurity;
> > - u32 _pad_0x78_0x7f[2];
> > - /* Preloader (initial software) Group */
> > - u32 iswgrp_handoff[8]; /* 0x80 */
> > - u32 _pad_0xa0_0xbf[8]; /* 0xa0 */
> > - /* Boot ROM Code Register Group */
> > - u32 romcodegrp_ctrl; /* 0xc0 */
> > - u32 romcodegrp_cpu1startaddr;
> > - u32 romcodegrp_initswstate;
> > - u32 romcodegrp_initswlastld;
> > - u32 romcodegrp_bootromswstate; /* 0xd0 */
> > - u32 __pad_0xd4_0xdf[3];
> > - /* Warm Boot from On-Chip RAM Group */
> > - u32 romcodegrp_warmramgrp_enable; /* 0xe0 */
> > - u32 romcodegrp_warmramgrp_datastart;
> > - u32 romcodegrp_warmramgrp_length;
> > - u32 romcodegrp_warmramgrp_execution;
> > - u32 romcodegrp_warmramgrp_crc; /* 0xf0 */
> > - u32 __pad_0xf4_0xff[3];
> > - /* Boot ROM Hardware Register Group */
> > - u32 romhwgrp_ctrl; /* 0x100 */
> > - u32 _pad_0x104_0x107;
> > - /* SDMMC Controller Group */
> > - u32 sdmmcgrp_ctrl;
> > - u32 sdmmcgrp_l3master;
> > - /* NAND Flash Controller Register Group */
> > - u32 nandgrp_bootstrap; /* 0x110 */
> > - u32 nandgrp_l3master;
> > - /* USB Controller Group */
> > - u32 usbgrp_l3master;
> > - u32 _pad_0x11c_0x13f[9];
> > - /* ECC Management Register Group */
> > - u32 eccgrp_l2; /* 0x140 */
> > - u32 eccgrp_ocram;
> > - u32 eccgrp_usb0;
> > - u32 eccgrp_usb1;
> > - u32 eccgrp_emac0; /* 0x150 */
> > - u32 eccgrp_emac1;
> > - u32 eccgrp_dma;
> > - u32 eccgrp_can0;
> > - u32 eccgrp_can1; /* 0x160 */
> > - u32 eccgrp_nand;
> > - u32 eccgrp_qspi;
> > - u32 eccgrp_sdmmc;
> > - u32 _pad_0x170_0x3ff[164];
> > - /* Pin Mux Control Group */
> > - u32 emacio[20]; /* 0x400 */
> > - u32 flashio[12]; /* 0x450 */
> > - u32 generalio[28]; /* 0x480 */
> > - u32 _pad_0x4f0_0x4ff[4];
> > - u32 mixed1io[22]; /* 0x500 */
> > - u32 mixed2io[8]; /* 0x558 */
> > - u32 gplinmux[23]; /* 0x578 */
> > - u32 gplmux[71]; /* 0x5d4 */
> > - u32 nandusefpga; /* 0x6f0 */
> > - u32 _pad_0x6f4;
> > - u32 rgmii1usefpga; /* 0x6f8 */
> > - u32 _pad_0x6fc_0x700[2];
> > - u32 i2c0usefpga; /* 0x704 */
> > - u32 sdmmcusefpga; /* 0x708 */
> > - u32 _pad_0x70c_0x710[2];
> > - u32 rgmii0usefpga; /* 0x714 */
> > - u32 _pad_0x718_0x720[3];
> > - u32 i2c3usefpga; /* 0x724 */
> > - u32 i2c2usefpga; /* 0x728 */
> > - u32 i2c1usefpga; /* 0x72c */
> > - u32 spim1usefpga; /* 0x730 */
> > - u32 _pad_0x734;
> > - u32 spim0usefpga; /* 0x738 */
> > -};
> > +#define SYSMGR_GEN5_WDDBG 0x10
> > +#define SYSMGR_GEN5_BOOTINFO 0x14
> > +#define SYSMGR_GEN5_FPGAINFGRP_GBL 0x20
> > +#define SYSMGR_GEN5_FPGAINFGRP_INDIV 0x24
> > +#define SYSMGR_GEN5_FPGAINFGRP_MODULE 0x28
> > +#define SYSMGR_GEN5_SCANMGRGRP_CTRL 0x30
> > +#define SYSMGR_GEN5_ISWGRP_HANDOFF 0x80
> > +#define SYSMGR_GEN5_ROMCODEGRP_CTRL 0xc0
> > +#define SYSMGR_GEN5_WARMRAMGRP_EN 0xe0
> > +#define SYSMGR_GEN5_SDMMC 0x108
> > +#define SYSMGR_GEN5_ECCGRP_OCRAM 0x144
> > +#define SYSMGR_GEN5_EMACIO 0x400
> > +#define SYSMGR_GEN5_NAND_USEFPGA 0x6f0
> > +#define SYSMGR_GEN5_RGMII0_USEFPGA 0x6f8
> > +#define SYSMGR_GEN5_SDMMC_USEFPGA 0x708
> > +#define SYSMGR_GEN5_RGMII1_USEFPGA 0x704
> > +#define SYSMGR_GEN5_SPIM1_USEFPGA 0x730
> > +#define SYSMGR_GEN5_SPIM0_USEFPGA 0x738
> > +
> > +#define SYSMGR_SDMMC SYSMGR_GEN5_SDMMC
> > +
> > +#define SYSMGR_ISWGRP_HANDOFF_OFFSET(i) \
> > + SYSMGR_GEN5_ISWGRP_HANDOFF + ((i) * sizeof(u32))
> > #endif
> >
> > #define SYSMGR_SDMMC_SMPLSEL_SHIFT 3
> > diff --git a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> > index 297f9e1999..e68a8e730e 100644
> > --- a/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> > +++ b/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
> > @@ -15,125 +15,73 @@ void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len);
> > void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len);
> > void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len);
> >
> > -struct socfpga_system_manager {
> > - /* System Manager Module */
> > - u32 siliconid1; /* 0x00 */
> > - u32 siliconid2;
> > - u32 wddbg;
> > - u32 _pad_0xc;
> > - u32 mpu_status; /* 0x10 */
> > - u32 mpu_ace;
> > - u32 _pad_0x18_0x1c[2];
> > - u32 dma; /* 0x20 */
> > - u32 dma_periph;
> > - /* SDMMC Controller Group */
> > - u32 sdmmcgrp_ctrl;
> > - u32 sdmmcgrp_l3master;
> > - /* NAND Flash Controller Register Group */
> > - u32 nandgrp_bootstrap; /* 0x30 */
> > - u32 nandgrp_l3master;
> > - /* USB Controller Group */
> > - u32 usb0_l3master;
> > - u32 usb1_l3master;
> > - /* EMAC Group */
> > - u32 emac_gbl; /* 0x40 */
> > - u32 emac0;
> > - u32 emac1;
> > - u32 emac2;
> > - u32 emac0_ace; /* 0x50 */
> > - u32 emac1_ace;
> > - u32 emac2_ace;
> > - u32 nand_axuser;
> > - u32 _pad_0x60_0x64[2]; /* 0x60 */
> > - /* FPGA interface Group */
> > - u32 fpgaintf_en_1;
> > - u32 fpgaintf_en_2;
> > - u32 fpgaintf_en_3; /* 0x70 */
> > - u32 dma_l3master;
> > - u32 etr_l3master;
> > - u32 _pad_0x7c;
> > - u32 sec_ctrl_slt; /* 0x80 */
> > - u32 osc_trim;
> > - u32 _pad_0x88_0x8c[2];
> > - /* ECC Group */
> > - u32 ecc_intmask_value; /* 0x90 */
> > - u32 ecc_intmask_set;
> > - u32 ecc_intmask_clr;
> > - u32 ecc_intstatus_serr;
> > - u32 ecc_intstatus_derr; /* 0xa0 */
> > - u32 _pad_0xa4_0xac[3];
> > - u32 noc_addr_remap; /* 0xb0 */
> > - u32 hmc_clk;
> > - u32 io_pa_ctrl;
> > - u32 _pad_0xbc;
> > - /* NOC Group */
> > - u32 noc_timeout; /* 0xc0 */
> > - u32 noc_idlereq_set;
> > - u32 noc_idlereq_clr;
> > - u32 noc_idlereq_value;
> > - u32 noc_idleack; /* 0xd0 */
> > - u32 noc_idlestatus;
> > - u32 fpga2soc_ctrl;
> > - u32 fpga_config;
> > - u32 iocsrclk_gate; /* 0xe0 */
> > - u32 gpo;
> > - u32 gpi;
> > - u32 _pad_0xec;
> > - u32 mpu; /* 0xf0 */
> > - u32 sdm_hps_spare;
> > - u32 hps_sdm_spare;
> > - u32 _pad_0xfc_0x1fc[65];
> > - /* Boot scratch register group */
> > - u32 boot_scratch_cold0; /* 0x200 */
> > - u32 boot_scratch_cold1;
> > - u32 boot_scratch_cold2;
> > - u32 boot_scratch_cold3;
> > - u32 boot_scratch_cold4; /* 0x210 */
> > - u32 boot_scratch_cold5;
> > - u32 boot_scratch_cold6;
> > - u32 boot_scratch_cold7;
> > - u32 boot_scratch_cold8; /* 0x220 */
> > - u32 boot_scratch_cold9;
> > - u32 _pad_0x228_0xffc[886];
> > - /* Pin select and pin control group */
> > - u32 pinsel0[40]; /* 0x1000 */
> > - u32 _pad_0x10a0_0x10fc[24];
> > - u32 pinsel40[8];
> > - u32 _pad_0x1120_0x112c[4];
> > - u32 ioctrl0[28];
> > - u32 _pad_0x11a0_0x11fc[24];
> > - u32 ioctrl28[20];
> > - u32 _pad_0x1250_0x12fc[44];
> > - /* Use FPGA mux */
> > - u32 rgmii0usefpga; /* 0x1300 */
> > - u32 rgmii1usefpga;
> > - u32 rgmii2usefpga;
> > - u32 i2c0usefpga;
> > - u32 i2c1usefpga;
> > - u32 i2c_emac0_usefpga;
> > - u32 i2c_emac1_usefpga;
> > - u32 i2c_emac2_usefpga;
> > - u32 nandusefpga;
> > - u32 _pad_0x1324;
> > - u32 spim0usefpga;
> > - u32 spim1usefpga;
> > - u32 spis0usefpga;
> > - u32 spis1usefpga;
> > - u32 uart0usefpga;
> > - u32 uart1usefpga;
> > - u32 mdio0usefpga;
> > - u32 mdio1usefpga;
> > - u32 mdio2usefpga;
> > - u32 _pad_0x134c;
> > - u32 jtagusefpga;
> > - u32 sdmmcusefpga;
> > - u32 hps_osc_clk;
> > - u32 _pad_0x135c_0x13fc[41];
> > - u32 iodelay0[40];
> > - u32 _pad_0x14a0_0x14fc[24];
> > - u32 iodelay40[8];
> > +#define SYSMGR_S10_WDDBG 0x8
> > +#define SYSMGR_S10_DMA 0x20
> > +#define SYSMGR_S10_DMA_PERIPH 0x24
> > +#define SYSMGR_S10_SDMMC 0x28
> > +#define SYSMGR_S10_SDMMC_L3MASTER 0x2c
> > +#define SYSMGR_S10_EMAC_GLOBAL 0x40
> > +#define SYSMGR_S10_EMAC0 0x44
> > +#define SYSMGR_S10_EMAC1 0x48
> > +#define SYSMGR_S10_EMAC2 0x4c
> > +#define SYSMGR_S10_EMAC0_ACE 0x50
> > +#define SYSMGR_S10_EMAC1_ACE 0x54
> > +#define SYSMGR_S10_EMAC2_ACE 0x58
> > +#define SYSMGR_S10_NAND_AXUSER 0x5c
> > +#define SYSMGR_S10_FPGAINTF_EN1 0x68
> > +#define SYSMGR_S10_FPGAINTF_EN2 0x6c
> > +#define SYSMGR_S10_FPGAINTF_EN3 0x70
> > +#define SYSMGR_S10_DMA_L3MASTER 0x74
> > +#define SYSMGR_S10_HMC_CLK 0xb4
> > +#define SYSMGR_S10_IO_PA_CTRL 0xb8
> > +#define SYSMGR_S10_NOC_TIMEOUT 0xc0
> > +#define SYSMGR_S10_NOC_IDLEREQ_SET 0xc4
> > +#define SYSMGR_S10_NOC_IDLEREQ_CLR 0xc8
> > +#define SYSMGR_S10_NOC_IDLEREQ_VAL 0xcc
> > +#define SYSMGR_S10_NOC_IDLEACK 0xd0
> > +#define SYSMGR_S10_NOC_IDLESTATUS 0xd4
> > +#define SYSMGR_S10_FPGA2SOC_CTRL 0xd8
> > +#define SYSMGR_S10_FPGA_CONFIG 0xdc
> > +#define SYSMGR_S10_IOCSRCLK_GATE 0xe0
> > +#define SYSMGR_S10_GPO 0xe4
> > +#define SYSMGR_S10_GPI 0xe8
> > +#define SYSMGR_S10_MPU 0xf0
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD0 0x200
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD1 0x204
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD2 0x208
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD3 0x20c
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD4 0x210
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD5 0x214
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD6 0x218
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD7 0x21c
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD8 0x220
> > +#define SYSMGR_S10_BOOT_SCRATCH_COLD9 0x224
> > +#define SYSMGR_S10_PINSEL0 0x1000
> > +#define SYSMGR_S10_IOCTRL0 0x1130
> > +#define SYSMGR_S10_EMAC0_USEFPGA 0x1300
> > +#define SYSMGR_S10_EMAC1_USEFPGA 0x1304
> > +#define SYSMGR_S10_EMAC2_USEFPGA 0x1308
> > +#define SYSMGR_S10_I2C0_USEFPGA 0x130c
> > +#define SYSMGR_S10_I2C1_USEFPGA 0x1310
> > +#define SYSMGR_S10_I2C_EMAC0_USEFPGA 0x1314
> > +#define SYSMGR_S10_I2C_EMAC1_USEFPGA 0x1318
> > +#define SYSMGR_S10_I2C_EMAC2_USEFPGA 0x131c
> > +#define SYSMGR_S10_NAND_USEFPGA 0x1320
> > +#define SYSMGR_S10_SPIM0_USEFPGA 0x1328
> > +#define SYSMGR_S10_SPIM1_USEFPGA 0x132c
> > +#define SYSMGR_S10_SPIS0_USEFPGA 0x1330
> > +#define SYSMGR_S10_SPIS1_USEFPGA 0x1334
> > +#define SYSMGR_S10_UART0_USEFPGA 0x1338
> > +#define SYSMGR_S10_UART1_USEFPGA 0x133c
> > +#define SYSMGR_S10_MDIO0_USEFPGA 0x1340
> > +#define SYSMGR_S10_MDIO1_USEFPGA 0x1344
> > +#define SYSMGR_S10_MDIO2_USEFPGA 0x1348
> > +#define SYSMGR_S10_JTAG_USEFPGA 0x1350
> > +#define SYSMGR_S10_SDMMC_USEFPGA 0x1354
> > +#define SYSMGR_S10_HPS_OSC_CLK 0x1358
> > +#define SYSMGR_S10_IODELAY0 0x1400
> >
> > -};
> > +#define SYSMGR_SDMMC SYSMGR_S10_SDMMC
> >
> > #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX BIT(0)
> > #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO BIT(1)
> > diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c
> > index 4498ab55df..11b57361c7 100644
> > --- a/arch/arm/mach-socfpga/mailbox_s10.c
> > +++ b/arch/arm/mach-socfpga/mailbox_s10.c
> > @@ -287,9 +287,6 @@ int mbox_qspi_close(void)
> >
> > int mbox_qspi_open(void)
> > {
> > - static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > int ret;
> > u32 resp_buf[1];
> > u32 resp_buf_len;
> > @@ -318,7 +315,8 @@ int mbox_qspi_open(void)
> >
> > /* We are getting QSPI ref clock and set into sysmgr boot register */
> > printf("QSPI: Reference clock at %d Hz\n", resp_buf[0]);
> > - writel(resp_buf[0], &sysmgr_regs->boot_scratch_cold0);
> > + writel(resp_buf[0],
> > + socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD0);
> >
> > return 0;
> >
> > diff --git a/arch/arm/mach-socfpga/misc.c b/arch/arm/mach-socfpga/misc.c
> > index 901c432f82..fcc53b6fbc 100644
> > --- a/arch/arm/mach-socfpga/misc.c
> > +++ b/arch/arm/mach-socfpga/misc.c
> > @@ -23,6 +23,7 @@
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > phys_addr_t socfpga_rstmgr_base __section(".data");
> > +phys_addr_t socfpga_sysmgr_base __section(".data");
> >
> > #ifdef CONFIG_SYS_L2_PL310
> > static const struct pl310_regs *const pl310 =
> > @@ -233,4 +234,8 @@ void socfpga_get_manager_addr(void)
> > socfpga_rstmgr_base = socfpga_get_base_addr("altr,rst-mgr");
> > if (!socfpga_rstmgr_base)
> > hang();
> > +
> > + socfpga_sysmgr_base = socfpga_get_base_addr("altr,sys-mgr");
> > + if (!socfpga_sysmgr_base)
> > + hang();
> > }
> > diff --git a/arch/arm/mach-socfpga/misc_arria10.c b/arch/arm/mach-socfpga/misc_arria10.c
> > index 2e2a40b65d..ff6ab83441 100644
> > --- a/arch/arm/mach-socfpga/misc_arria10.c
> > +++ b/arch/arm/mach-socfpga/misc_arria10.c
> > @@ -28,9 +28,6 @@
> > #define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q3_7 0x78
> > #define PINMUX_UART1_TX_SHARED_IO_OFFSET_Q4_3 0x98
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /*
> > * FPGA programming support for SoC FPGA Arria 10
> > */
> > @@ -81,7 +78,7 @@ void socfpga_init_security_policies(void)
> > writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST);
> > writel(~0, SOCFPGA_NOC_FW_H2F_SCR_OFST + 4);
> >
> > - writel(0x0007FFFF, &sysmgr_regs->ecc_intmask_set);
> > + writel(0x0007FFFF, socfpga_sysmgr_base + SYSMGR_A10_ECC_INTMASK_SET);
> > }
> >
> > void socfpga_sdram_remap_zero(void)
> > @@ -105,8 +102,8 @@ int arch_early_init_r(void)
> > #if defined(CONFIG_DISPLAY_CPUINFO)
> > int print_cpuinfo(void)
> > {
> > - const u32 bsel =
> > - SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
> > + u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
> > + const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
> >
> > puts("CPU: Altera SoCFPGA Arria 10\n");
> >
> > diff --git a/arch/arm/mach-socfpga/misc_gen5.c b/arch/arm/mach-socfpga/misc_gen5.c
> > index b39a66562d..7735958e9c 100644
> > --- a/arch/arm/mach-socfpga/misc_gen5.c
> > +++ b/arch/arm/mach-socfpga/misc_gen5.c
> > @@ -28,8 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
> >
> > static struct pl310_regs *const pl310 =
> > (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > static struct nic301_registers *nic301_regs =
> > (struct nic301_registers *)SOCFPGA_L3REGS_ADDRESS;
> > static struct scu_registers *scu_regs =
> > @@ -118,8 +116,8 @@ static int socfpga_fpga_id(const bool print_id)
> > #if defined(CONFIG_DISPLAY_CPUINFO)
> > int print_cpuinfo(void)
> > {
> > - const u32 bsel =
> > - SYSMGR_GET_BOOTINFO_BSEL(readl(&sysmgr_regs->bootinfo));
> > + u32 bootinfo = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
> > + const u32 bsel = SYSMGR_GET_BOOTINFO_BSEL(bootinfo);
> >
> > puts("CPU: Altera SoCFPGA Platform\n");
> > socfpga_fpga_id(1);
> > @@ -132,7 +130,8 @@ int print_cpuinfo(void)
> > #ifdef CONFIG_ARCH_MISC_INIT
> > int arch_misc_init(void)
> > {
> > - const u32 bsel = readl(&sysmgr_regs->bootinfo) & 0x7;
> > + const u32 bsel = readl(socfpga_sysmgr_base +
> > + SYSMGR_GEN5_BOOTINFO) & 0x7;
> > const int fpga_id = socfpga_fpga_id(0);
> > env_set("bootmode", bsel_str[bsel].mode);
> > if (fpga_id >= 0)
> > @@ -190,10 +189,11 @@ int arch_early_init_r(void)
> > * to support that old code, we write it here instead of in the
> > * reset_cpu() function just before resetting the CPU.
> > */
> > - writel(0xae9efebc, &sysmgr_regs->romcodegrp_warmramgrp_enable);
> > + writel(0xae9efebc, socfpga_sysmgr_base + SYSMGR_GEN5_WARMRAMGRP_EN);
> >
> > for (i = 0; i < 8; i++) /* Cache initial SW setting regs */
> > - iswgrp_handoff[i] = readl(&sysmgr_regs->iswgrp_handoff[i]);
> > + iswgrp_handoff[i] = readl(socfpga_sysmgr_base +
> > + SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
> >
> > socfpga_bridges_reset(1);
> >
> > @@ -219,16 +219,18 @@ void do_bridge_reset(int enable, unsigned int mask)
> > !(mask & BIT(2)));
> > for (i = 0; i < 2; i++) { /* Reload SW setting cache */
> > iswgrp_handoff[i] =
> > - readl(&sysmgr_regs->iswgrp_handoff[i]);
> > + readl(socfpga_sysmgr_base +
> > + SYSMGR_ISWGRP_HANDOFF_OFFSET(i));
> > }
> >
> > - writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
> > + writel(iswgrp_handoff[2],
> > + socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> > writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
> > writel(iswgrp_handoff[0],
> > socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> > writel(iswgrp_handoff[1], &nic301_regs->remap);
> > } else {
> > - writel(0, &sysmgr_regs->fpgaintfgrp_module);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> > writel(0, &sdr_ctrl->fpgaport_rst);
> > writel(0, socfpga_rstmgr_base + RSTMGR_GEN5_BRGMODRST);
> > writel(1, &nic301_regs->remap);
> > diff --git a/arch/arm/mach-socfpga/misc_s10.c b/arch/arm/mach-socfpga/misc_s10.c
> > index 0a5fab11c0..16fbf71599 100644
> > --- a/arch/arm/mach-socfpga/misc_s10.c
> > +++ b/arch/arm/mach-socfpga/misc_s10.c
> > @@ -23,9 +23,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /*
> > * FPGA programming support for SoC FPGA Stratix 10
> > */
> > @@ -68,9 +65,9 @@ static u32 socfpga_phymode_setup(u32 gmac_index, const char *phymode)
> > else
> > return -EINVAL;
> >
> > - clrsetbits_le32(&sysmgr_regs->emac0 + gmac_index,
> > - SYSMGR_EMACGRP_CTRL_PHYSEL_MASK,
> > - modereg);
> > + clrsetbits_le32((unsigned long)(socfpga_sysmgr_base + SYSMGR_S10_EMAC0 +
> > + gmac_index),
> > + SYSMGR_EMACGRP_CTRL_PHYSEL_MASK, modereg);
> >
> > return 0;
> > }
> > diff --git a/arch/arm/mach-socfpga/reset_manager_arria10.c b/arch/arm/mach-socfpga/reset_manager_arria10.c
> > index 4553653992..5611e784e6 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_arria10.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_arria10.c
> > @@ -15,9 +15,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > struct bridge_cfg {
> > int compat_id;
> > u32 mask_noc;
> > @@ -98,14 +95,16 @@ int socfpga_reset_deassert_bridges_handoff(void)
> > }
> >
> > /* clear idle request to all bridges */
> > - setbits_le32(&sysmgr_regs->noc_idlereq_clr, mask_noc);
> > + setbits_le32(socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_CLR,
> > + mask_noc);
> >
> > /* Release bridges from reset state per handoff value */
> > clrbits_le32(socfpga_rstmgr_base + RSTMGR_A10_BRGMODRST, mask_rstmgr);
> >
> > /* Poll until all idleack to 0, timeout at 1000ms */
> > - return wait_for_bit_le32(&sysmgr_regs->noc_idleack, mask_noc,
> > - false, 1000, false);
> > + return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> > + SYSMGR_A10_NOC_IDLEACK),
> > + mask_noc, false, 1000, false);
> > }
> >
> > /* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
> > @@ -195,13 +194,15 @@ int socfpga_bridges_reset(void)
> > ALT_SYSMGR_NOC_F2SDR0_SET_MSK |
> > ALT_SYSMGR_NOC_F2SDR1_SET_MSK |
> > ALT_SYSMGR_NOC_F2SDR2_SET_MSK,
> > - &sysmgr_regs->noc_idlereq_set);
> > + socfpga_sysmgr_base + SYSMGR_A10_NOC_IDLEREQ_SET);
> >
> > /* Enable the NOC timeout */
> > - writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK, &sysmgr_regs->noc_timeout);
> > + writel(ALT_SYSMGR_NOC_TMO_EN_SET_MSK,
> > + socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
> >
> > /* Poll until all idleack to 1 */
> > - ret = wait_for_bit_le32(&sysmgr_regs->noc_idleack,
> > + ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> > + SYSMGR_A10_NOC_IDLEACK),
> > ALT_SYSMGR_NOC_H2F_SET_MSK |
> > ALT_SYSMGR_NOC_LWH2F_SET_MSK |
> > ALT_SYSMGR_NOC_F2H_SET_MSK |
> > @@ -213,7 +214,8 @@ int socfpga_bridges_reset(void)
> > return ret;
> >
> > /* Poll until all idlestatus to 1 */
> > - ret = wait_for_bit_le32(&sysmgr_regs->noc_idlestatus,
> > + ret = wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> > + SYSMGR_A10_NOC_IDLESTATUS),
> > ALT_SYSMGR_NOC_H2F_SET_MSK |
> > ALT_SYSMGR_NOC_LWH2F_SET_MSK |
> > ALT_SYSMGR_NOC_F2H_SET_MSK |
> > @@ -234,7 +236,7 @@ int socfpga_bridges_reset(void)
> > ALT_RSTMGR_BRGMODRST_F2SSDRAM2_SET_MSK));
> >
> > /* Disable NOC timeout */
> > - writel(0, &sysmgr_regs->noc_timeout);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_A10_NOC_TIMEOUT);
> >
> > return 0;
> > }
> > diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c b/arch/arm/mach-socfpga/reset_manager_gen5.c
> > index ad31214711..6b617fd016 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_gen5.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_gen5.c
> > @@ -10,9 +10,6 @@
> > #include <asm/arch/reset_manager.h>
> > #include <asm/arch/system_manager.h>
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /* Assert or de-assert SoCFPGA reset manager reset. */
> > void socfpga_per_reset(u32 reset, int set)
> > {
> > @@ -83,8 +80,8 @@ void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h)
> > if (f2h)
> > brgmask |= BIT(2);
> >
> > - writel(brgmask, &sysmgr_regs->iswgrp_handoff[0]);
> > - writel(l3rmask, &sysmgr_regs->iswgrp_handoff[1]);
> > + writel(brgmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(0));
> > + writel(l3rmask, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(1));
> > }
> >
> > void socfpga_bridges_reset(int enable)
> > diff --git a/arch/arm/mach-socfpga/reset_manager_s10.c b/arch/arm/mach-socfpga/reset_manager_s10.c
> > index b196d58d3d..50a2d80930 100644
> > --- a/arch/arm/mach-socfpga/reset_manager_s10.c
> > +++ b/arch/arm/mach-socfpga/reset_manager_s10.c
> > @@ -12,9 +12,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_system_manager *system_manager_base =
> > - (void *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /* Assert or de-assert SoCFPGA reset manager reset. */
> > void socfpga_per_reset(u32 reset, int set)
> > {
> > @@ -59,28 +56,29 @@ void socfpga_bridges_reset(int enable)
> > {
> > if (enable) {
> > /* clear idle request to all bridges */
> > - setbits_le32(&system_manager_base->noc_idlereq_clr, ~0);
> > + setbits_le32(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_CLR,
> > + ~0);
> >
> > /* Release all bridges from reset state */
> > clrbits_le32(socfpga_rstmgr_base + RSTMGR_S10_BRGMODRST, ~0);
> >
> > /* Poll until all idleack to 0 */
> > - while (readl(&system_manager_base->noc_idleack))
> > + while (readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK))
> > ;
> > } else {
> > /* set idle request to all bridges */
> > - writel(~0, &system_manager_base->noc_idlereq_set);
> > + writel(~0, socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEREQ_SET);
> >
> > /* Enable the NOC timeout */
> > - writel(1, &system_manager_base->noc_timeout);
> > + writel(1, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
> >
> > /* Poll until all idleack to 1 */
> > - while ((readl(&system_manager_base->noc_idleack) ^
> > + while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLEACK) ^
> > (SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
> > ;
> >
> > /* Poll until all idlestatus to 1 */
> > - while ((readl(&system_manager_base->noc_idlestatus) ^
> > + while ((readl(socfpga_sysmgr_base + SYSMGR_S10_NOC_IDLESTATUS) ^
> > (SYSMGR_NOC_H2F_MSK | SYSMGR_NOC_LWH2F_MSK)))
> > ;
> >
> > @@ -90,7 +88,7 @@ void socfpga_bridges_reset(int enable)
> > RSTMGR_BRGMODRST_FPGA2SOC_MASK));
> >
> > /* Disable NOC timeout */
> > - writel(0, &system_manager_base->noc_timeout);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_S10_NOC_TIMEOUT);
> > }
> > }
> >
> > diff --git a/arch/arm/mach-socfpga/scan_manager.c b/arch/arm/mach-socfpga/scan_manager.c
> > index 52175af48b..f1d5f69caa 100644
> > --- a/arch/arm/mach-socfpga/scan_manager.c
> > +++ b/arch/arm/mach-socfpga/scan_manager.c
> > @@ -31,8 +31,6 @@ static const struct socfpga_scan_manager *scan_manager_base =
> > (void *)(SOCFPGA_SCANMGR_ADDRESS);
> > static const struct socfpga_freeze_controller *freeze_controller_base =
> > (void *)(SOCFPGA_SYSMGR_ADDRESS + SYSMGR_FRZCTRL_ADDRESS);
> > -static struct socfpga_system_manager *sys_mgr_base =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > /**
> > * scan_chain_engine_is_idle() - Check if the JTAG scan chain is idle
> > @@ -218,7 +216,7 @@ u32 scan_mgr_get_fpga_id(void)
> > int ret;
> >
> > /* Enable HPS to talk to JTAG in the FPGA through the System Manager */
> > - writel(0x1, &sys_mgr_base->scanmgrgrp_ctrl);
> > + writel(0x1, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
> >
> > /* Enable port 7 */
> > writel(0x80, &scan_manager_base->en);
> > @@ -253,7 +251,7 @@ u32 scan_mgr_get_fpga_id(void)
> >
> > /* Disable all port */
> > writel(0, &scan_manager_base->en);
> > - writel(0, &sys_mgr_base->scanmgrgrp_ctrl);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_SCANMGRGRP_CTRL);
> >
> > return id;
> > }
> > diff --git a/arch/arm/mach-socfpga/spl_a10.c b/arch/arm/mach-socfpga/spl_a10.c
> > index a0d80fd47e..ee811e4ee9 100644
> > --- a/arch/arm/mach-socfpga/spl_a10.c
> > +++ b/arch/arm/mach-socfpga/spl_a10.c
> > @@ -31,12 +31,9 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > u32 spl_boot_device(void)
> > {
> > - const u32 bsel = readl(&sysmgr_regs->bootinfo);
> > + const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_A10_BOOTINFO);
> >
> > switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
> > case 0x1: /* FPGA (HPS2FPGA Bridge) */
> > diff --git a/arch/arm/mach-socfpga/spl_gen5.c b/arch/arm/mach-socfpga/spl_gen5.c
> > index 9ee053da3a..82d9fe0824 100644
> > --- a/arch/arm/mach-socfpga/spl_gen5.c
> > +++ b/arch/arm/mach-socfpga/spl_gen5.c
> > @@ -24,12 +24,9 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > u32 spl_boot_device(void)
> > {
> > - const u32 bsel = readl(&sysmgr_regs->bootinfo);
> > + const u32 bsel = readl(socfpga_sysmgr_base + SYSMGR_GEN5_BOOTINFO);
> >
> > switch (SYSMGR_GET_BOOTINFO_BSEL(bsel)) {
> > case 0x1: /* FPGA (HPS2FPGA Bridge) */
> > @@ -77,13 +74,13 @@ void board_init_f(ulong dummy)
> > * First C code to run. Clear fake OCRAM ECC first as SBE
> > * and DBE might triggered during power on
> > */
> > - reg = readl(&sysmgr_regs->eccgrp_ocram);
> > + reg = readl(socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
> > if (reg & SYSMGR_ECC_OCRAM_SERR)
> > writel(SYSMGR_ECC_OCRAM_SERR | SYSMGR_ECC_OCRAM_EN,
> > - &sysmgr_regs->eccgrp_ocram);
> > + socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
> > if (reg & SYSMGR_ECC_OCRAM_DERR)
> > writel(SYSMGR_ECC_OCRAM_DERR | SYSMGR_ECC_OCRAM_EN,
> > - &sysmgr_regs->eccgrp_ocram);
> > + socfpga_sysmgr_base + SYSMGR_GEN5_ECCGRP_OCRAM);
> >
> > socfpga_sdram_remap_zero();
> > socfpga_pl310_clear();
> > diff --git a/arch/arm/mach-socfpga/spl_s10.c b/arch/arm/mach-socfpga/spl_s10.c
> > index 9a97a84e1e..16f19f901d 100644
> > --- a/arch/arm/mach-socfpga/spl_s10.c
> > +++ b/arch/arm/mach-socfpga/spl_s10.c
> > @@ -22,9 +22,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > u32 spl_boot_device(void)
> > {
> > /* TODO: Get from SDM or handoff */
> > @@ -129,7 +126,8 @@ void board_init_f(ulong dummy)
> >
> > #ifdef CONFIG_HW_WATCHDOG
> > /* Ensure watchdog is paused when debugging is happening */
> > - writel(SYSMGR_WDDBG_PAUSE_ALL_CPU, &sysmgr_regs->wddbg);
> > + writel(SYSMGR_WDDBG_PAUSE_ALL_CPU,
> > + socfpga_sysmgr_base + SYSMGR_S10_WDDBG);
> >
> > /* Enable watchdog before initializing the HW */
> > socfpga_per_reset(SOCFPGA_RESET(L4WD0), 1);
> > @@ -157,8 +155,10 @@ void board_init_f(ulong dummy)
> > cm_print_clock_quick_summary();
> >
> > /* enable non-secure interface to DMA330 DMA and peripherals */
> > - writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS, &sysmgr_regs->dma);
> > - writel(SYSMGR_DMAPERIPH_ALL_NS, &sysmgr_regs->dma_periph);
> > + writel(SYSMGR_DMA_IRQ_NS | SYSMGR_DMA_MGR_NS,
> > + socfpga_sysmgr_base + SYSMGR_S10_DMA);
> > + writel(SYSMGR_DMAPERIPH_ALL_NS,
> > + socfpga_sysmgr_base + SYSMGR_S10_DMA_PERIPH);
> >
> > spl_disable_firewall_l4_per();
> >
> > diff --git a/arch/arm/mach-socfpga/system_manager_gen5.c b/arch/arm/mach-socfpga/system_manager_gen5.c
> > index 9d04aea2a8..1053a47201 100644
> > --- a/arch/arm/mach-socfpga/system_manager_gen5.c
> > +++ b/arch/arm/mach-socfpga/system_manager_gen5.c
> > @@ -8,9 +8,6 @@
> > #include <asm/arch/system_manager.h>
> > #include <asm/arch/fpga_manager.h>
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /*
> > * Populate the value for SYSMGR.FPGAINTF.MODULE based on pinmux setting.
> > * The value is not wrote to SYSMGR.FPGAINTF.MODULE but
> > @@ -21,30 +18,39 @@ static void populate_sysmgr_fpgaintf_module(void)
> > u32 handoff_val = 0;
> >
> > /* ISWGRP_HANDOFF_FPGAINTF */
> > - writel(0, &sysmgr_regs->iswgrp_handoff[2]);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
> >
> > /* Enable the signal for those HPS peripherals that use FPGA. */
> > - if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_NAND_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_NAND;
> > - if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII1_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_EMAC1;
> > - if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SDMMC_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SDMMC;
> > - if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_RGMII0_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_EMAC0;
> > - if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM0_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SPIM0;
> > - if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_GEN5_SPIM1_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SPIM1;
> >
> > /* populate (not writing) the value for SYSMGR.FPGAINTF.MODULE
> > based on pinmux setting */
> > - setbits_le32(&sysmgr_regs->iswgrp_handoff[2], handoff_val);
> > + setbits_le32(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(2),
> > + handoff_val);
> >
> > - handoff_val = readl(&sysmgr_regs->iswgrp_handoff[2]);
> > + handoff_val = readl(socfpga_sysmgr_base +
> > + SYSMGR_ISWGRP_HANDOFF_OFFSET(2));
> > if (fpgamgr_test_fpga_ready()) {
> > /* Enable the required signals only */
> > - writel(handoff_val, &sysmgr_regs->fpgaintfgrp_module);
> > + writel(handoff_val,
> > + socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> > }
> > }
> >
> > @@ -53,7 +59,7 @@ static void populate_sysmgr_fpgaintf_module(void)
> > */
> > void sysmgr_pinmux_init(void)
> > {
> > - u32 regs = (u32)&sysmgr_regs->emacio[0];
> > + u32 regs = (u32)socfpga_sysmgr_base + SYSMGR_GEN5_EMACIO;
> > const u8 *sys_mgr_init_table;
> > unsigned int len;
> > int i;
> > @@ -74,9 +80,9 @@ void sysmgr_pinmux_init(void)
> > void sysmgr_config_warmrstcfgio(int enable)
> > {
> > if (enable)
> > - setbits_le32(&sysmgr_regs->romcodegrp_ctrl,
> > + setbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
> > SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
> > else
> > - clrbits_le32(&sysmgr_regs->romcodegrp_ctrl,
> > + clrbits_le32(socfpga_sysmgr_base + SYSMGR_GEN5_ROMCODEGRP_CTRL,
> > SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO);
> > }
> > diff --git a/arch/arm/mach-socfpga/system_manager_s10.c b/arch/arm/mach-socfpga/system_manager_s10.c
> > index 122828c9ce..c046bb17c9 100644
> > --- a/arch/arm/mach-socfpga/system_manager_s10.c
> > +++ b/arch/arm/mach-socfpga/system_manager_s10.c
> > @@ -10,9 +10,6 @@
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > /*
> > * Configure all the pin muxes
> > */
> > @@ -32,24 +29,31 @@ void populate_sysmgr_fpgaintf_module(void)
> > u32 handoff_val = 0;
> >
> > /* Enable the signal for those HPS peripherals that use FPGA. */
> > - if (readl(&sysmgr_regs->nandusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_NAND_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_NAND;
> > - if (readl(&sysmgr_regs->sdmmcusefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SDMMC_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SDMMC;
> > - if (readl(&sysmgr_regs->spim0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM0_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SPIM0;
> > - if (readl(&sysmgr_regs->spim1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_SPIM1_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_SPIM1;
> > - writel(handoff_val, &sysmgr_regs->fpgaintf_en_2);
> > + writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN2);
> >
> > handoff_val = 0;
> > - if (readl(&sysmgr_regs->rgmii0usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_EMAC0;
> > - if (readl(&sysmgr_regs->rgmii1usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC1_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_EMAC1;
> > - if (readl(&sysmgr_regs->rgmii2usefpga) == SYSMGR_FPGAINTF_USEFPGA)
> > + if (readl(socfpga_sysmgr_base + SYSMGR_S10_EMAC2_USEFPGA) ==
> > + SYSMGR_FPGAINTF_USEFPGA)
> > handoff_val |= SYSMGR_FPGAINTF_EMAC2;
> > - writel(handoff_val, &sysmgr_regs->fpgaintf_en_3);
> > + writel(handoff_val, socfpga_sysmgr_base + SYSMGR_S10_FPGAINTF_EN3);
> > }
> >
> > /*
> > @@ -64,14 +68,16 @@ void populate_sysmgr_pinmux(void)
> > sysmgr_pinmux_table_sel(&sys_mgr_table_u32, &len);
> > for (i = 0; i < len; i = i + 2) {
> > writel(sys_mgr_table_u32[i + 1],
> > - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->pinsel0[0]);
> > + sys_mgr_table_u32[i] +
> > + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_PINSEL0);
> > }
> >
> > /* setup the pin ctrl */
> > sysmgr_pinmux_table_ctrl(&sys_mgr_table_u32, &len);
> > for (i = 0; i < len; i = i + 2) {
> > writel(sys_mgr_table_u32[i + 1],
> > - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->ioctrl0[0]);
> > + sys_mgr_table_u32[i] +
> > + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IOCTRL0);
> > }
> >
> > /* setup the fpga use */
> > @@ -79,13 +85,14 @@ void populate_sysmgr_pinmux(void)
> > for (i = 0; i < len; i = i + 2) {
> > writel(sys_mgr_table_u32[i + 1],
> > sys_mgr_table_u32[i] +
> > - (u8 *)&sysmgr_regs->rgmii0usefpga);
> > + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_EMAC0_USEFPGA);
> > }
> >
> > /* setup the IO delay */
> > sysmgr_pinmux_table_delay(&sys_mgr_table_u32, &len);
> > for (i = 0; i < len; i = i + 2) {
> > writel(sys_mgr_table_u32[i + 1],
> > - sys_mgr_table_u32[i] + (u8 *)&sysmgr_regs->iodelay0[0]);
> > + sys_mgr_table_u32[i] +
> > + (u8 *)socfpga_sysmgr_base + SYSMGR_S10_IODELAY0);
> > }
> > }
> > diff --git a/arch/arm/mach-socfpga/wrap_pll_config_s10.c b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> > index 7cafc7dcfc..c9570fea38 100644
> > --- a/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> > +++ b/arch/arm/mach-socfpga/wrap_pll_config_s10.c
> > @@ -10,9 +10,6 @@
> > #include <asm/arch/handoff_s10.h>
> > #include <asm/arch/system_manager.h>
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > const struct cm_config * const cm_get_default_config(void)
> > {
> > struct cm_config *cm_handoff_cfg = (struct cm_config *)
> > @@ -38,9 +35,9 @@ const unsigned int cm_get_osc_clk_hz(void)
> > #ifdef CONFIG_SPL_BUILD
> > u32 clock = readl(S10_HANDOFF_CLOCK_OSC);
> >
> > - writel(clock, &sysmgr_regs->boot_scratch_cold1);
> > + writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
> > #endif
> > - return readl(&sysmgr_regs->boot_scratch_cold1);
> > + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD1);
> > }
> >
> > const unsigned int cm_get_intosc_clk_hz(void)
> > @@ -53,7 +50,7 @@ const unsigned int cm_get_fpga_clk_hz(void)
> > #ifdef CONFIG_SPL_BUILD
> > u32 clock = readl(S10_HANDOFF_CLOCK_FPGA);
> >
> > - writel(clock, &sysmgr_regs->boot_scratch_cold2);
> > + writel(clock, socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
> > #endif
> > - return readl(&sysmgr_regs->boot_scratch_cold2);
> > + return readl(socfpga_sysmgr_base + SYSMGR_S10_BOOT_SCRATCH_COLD2);
> > }
> > diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
> > index fcd89b619d..46a5c466a7 100644
> > --- a/drivers/ddr/altera/sdram_gen5.c
> > +++ b/drivers/ddr/altera/sdram_gen5.c
> > @@ -40,9 +40,6 @@ struct sdram_prot_rule {
> > u32 hi_prot_id;
> > };
> >
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl);
> >
> > /**
> > @@ -455,12 +452,13 @@ int sdram_mmr_init_full(struct socfpga_sdr_ctrl *sdr_ctrl,
> > SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB;
> > int ret;
> >
> > - writel(rows, &sysmgr_regs->iswgrp_handoff[4]);
> > + writel(rows, socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
> >
> > sdr_load_regs(sdr_ctrl, cfg);
> >
> > /* saving this value to SYSMGR.ISWGRP.HANDOFF.FPGA2SDR */
> > - writel(cfg->fpgaport_rst, &sysmgr_regs->iswgrp_handoff[3]);
> > + writel(cfg->fpgaport_rst,
> > + socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(3));
> >
> > /* only enable if the FPGA is programmed */
> > if (fpgamgr_test_fpga_ready()) {
> > @@ -516,7 +514,7 @@ static unsigned long sdram_calculate_size(struct socfpga_sdr_ctrl *sdr_ctrl)
> > * since the FB specifies we modify ROWBITs to work around SDRAM
> > * controller issue.
> > */
> > - row = readl(&sysmgr_regs->iswgrp_handoff[4]);
> > + row = readl(socfpga_sysmgr_base + SYSMGR_ISWGRP_HANDOFF_OFFSET(4));
> > if (row == 0)
> > row = rowbits;
> > /*
> > diff --git a/drivers/ddr/altera/sdram_s10.c b/drivers/ddr/altera/sdram_s10.c
> > index 56cbbac9fe..d5812f2fd7 100644
> > --- a/drivers/ddr/altera/sdram_s10.c
> > +++ b/drivers/ddr/altera/sdram_s10.c
> > @@ -32,9 +32,6 @@ struct altera_sdram_platdata {
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > -static const struct socfpga_system_manager *sysmgr_regs =
> > - (void *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > #define DDR_CONFIG(A, B, C, R) (((A) << 24) | ((B) << 16) | ((C) << 8) | (R))
> >
> > #define PGTABLE_OFF 0x4000
> > @@ -150,7 +147,8 @@ static int emif_reset(struct altera_sdram_platdata *plat)
> >
> > static int poll_hmc_clock_status(void)
> > {
> > - return wait_for_bit_le32(&sysmgr_regs->hmc_clk,
> > + return wait_for_bit_le32((const void *)(socfpga_sysmgr_base +
> > + SYSMGR_S10_HMC_CLK),
> > SYSMGR_HMC_CLK_STATUS_MSK, true, 1000, false);
> > }
> >
> > diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
> > index 5fb9d6a191..743326cdb3 100644
> > --- a/drivers/fpga/socfpga_arria10.c
> > +++ b/drivers/fpga/socfpga_arria10.c
> > @@ -30,9 +30,6 @@ DECLARE_GLOBAL_DATA_PTR;
> > static const struct socfpga_fpga_manager *fpga_manager_base =
> > (void *)SOCFPGA_FPGAMGRREGS_ADDRESS;
> >
> > -static const struct socfpga_system_manager *system_manager_base =
> > - (void *)SOCFPGA_SYSMGR_ADDRESS;
> > -
> > static void fpgamgr_set_cd_ratio(unsigned long ratio);
> >
> > static uint32_t fpgamgr_get_msel(void)
> > @@ -818,7 +815,7 @@ int socfpga_loadfs(fpga_fs_info *fpga_fsinfo, const void *buf, size_t bsize,
> > }
> >
> > /* Disable all signals from HPS peripheral controller to FPGA */
> > - writel(0, &system_manager_base->fpgaintf_en_global);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
> >
> > /* Disable all axi bridges (hps2fpga, lwhps2fpga & fpga2hps) */
> > socfpga_bridges_reset();
> > @@ -910,7 +907,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
> > memset(&rbfinfo, 0, sizeof(rbfinfo));
> >
> > /* Disable all signals from hps peripheral controller to fpga */
> > - writel(0, &system_manager_base->fpgaintf_en_global);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_A10_FPGAINTF_EN_GLOBAL);
> >
> > /* Disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
> > socfpga_bridges_reset();
> > diff --git a/drivers/fpga/socfpga_gen5.c b/drivers/fpga/socfpga_gen5.c
> > index 6d16e0b37f..2b98572742 100644
> > --- a/drivers/fpga/socfpga_gen5.c
> > +++ b/drivers/fpga/socfpga_gen5.c
> > @@ -15,8 +15,6 @@
> >
> > static struct socfpga_fpga_manager *fpgamgr_regs =
> > (struct socfpga_fpga_manager *)SOCFPGA_FPGAMGRREGS_ADDRESS;
> > -static struct socfpga_system_manager *sysmgr_regs =
> > - (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > /* Set CD ratio */
> > static void fpgamgr_set_cd_ratio(unsigned long ratio)
> > @@ -214,7 +212,7 @@ int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
> > /* Prior programming the FPGA, all bridges need to be shut off */
> >
> > /* Disable all signals from hps peripheral controller to fpga */
> > - writel(0, &sysmgr_regs->fpgaintfgrp_module);
> > + writel(0, socfpga_sysmgr_base + SYSMGR_GEN5_FPGAINFGRP_MODULE);
> >
> > /* Disable all signals from FPGA to HPS SDRAM */
> > #define SDR_CTRLGRP_FPGAPORTRST_ADDRESS 0x5080
> > diff --git a/drivers/mmc/socfpga_dw_mmc.c b/drivers/mmc/socfpga_dw_mmc.c
> > index 739c1629a2..bdcd568d60 100644
> > --- a/drivers/mmc/socfpga_dw_mmc.c
> > +++ b/drivers/mmc/socfpga_dw_mmc.c
> > @@ -20,8 +20,6 @@ DECLARE_GLOBAL_DATA_PTR;
> >
> > static const struct socfpga_clock_manager *clock_manager_base =
> > (void *)SOCFPGA_CLKMGR_ADDRESS;
> > -static const struct socfpga_system_manager *system_manager_base =
> > - (void *)SOCFPGA_SYSMGR_ADDRESS;
> >
> > struct socfpga_dwmci_plat {
> > struct mmc_config cfg;
> > @@ -61,10 +59,10 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
> >
> > debug("%s: drvsel %d smplsel %d\n", __func__,
> > priv->drvsel, priv->smplsel);
> > - writel(sdmmc_mask, &system_manager_base->sdmmcgrp_ctrl);
> > + writel(sdmmc_mask, socfpga_sysmgr_base + SYSMGR_SDMMC);
> >
> > debug("%s: SYSMGR_SDMMCGRP_CTRL_REG = 0x%x\n", __func__,
> > - readl(&system_manager_base->sdmmcgrp_ctrl));
> > + readl(socfpga_sysmgr_base + SYSMGR_SDMMC));
> >
> > /* Enable SDMMC clock */
> > setbits_le32(&clock_manager_base->per_pll.en,
> > --
> > 2.19.0
> >
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-10-02 9:23 ` Simon Goldschmidt
@ 2019-10-09 18:42 ` Simon Goldschmidt
2019-10-10 0:47 ` Ley Foon Tan
0 siblings, 1 reply; 21+ messages in thread
From: Simon Goldschmidt @ 2019-10-09 18:42 UTC (permalink / raw)
To: u-boot
Am 02.10.2019 um 11:23 schrieb Simon Goldschmidt:
> On Wed, Oct 2, 2019 at 10:13 AM Ley Foon Tan <lftan.linux@gmail.com> wrote:
>>
>> On Wed, Sep 18, 2019 at 12:23 PM Simon Goldschmidt
>> <simon.k.r.goldschmidt@gmail.com> wrote:
>>>
>>>
>>>
>>> Ley Foon Tan <lftan.linux@gmail.com> schrieb am Mi., 18. Sep. 2019, 04:32:
>>>>
>>>> On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 9/10/19 3:37 AM, Ley Foon Tan wrote:
>>>>>> This is 2nd version of patchset to convert reset, system and clock manager
>>>>>> drivers to use #define instead of struct.
>>>>>>
>>>>>> Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
>>>>>>
>>>>>> Patch 1 is new one, patch 2 to 4 have changes.
>>>>>>
>>>>>> Main changes in this version are:
>>>>>> - Get base address from DT
>>>>>> - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
>>>>>> - Add prefix to defines.
>>>>>> - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
>>>>>>
>>>>>> History:
>>>>>> v1: https://patchwork.ozlabs.org/cover/1149731/
>>>>>>
>>>>>
>>>>> I think you also need to Simon Goldschmidt to this series.
>>>> Simon is in the CC list in my original email.
>>>
>>>
>>> And I'm trying my best to catch up with u-boot mails and patches. I already read it through but failed to find the time to review and test it. Next week, hopefully...
>>>
>>> Regards,
>>> Simon
>>>
>>>>>
>>>>> Beside the minor incorrect address missing a zero in patch 1, I've
>>>>> tested this series on the Sockit.
>>>>>
>>>>> Tested-by: Dinh Nguyen <dinguyen@kernel.org>
>>
>> Hi Marek and Simon
>>
>> Any further comment for this series? Otherwise, I will send v3 with
>> minor change for Dinh's comment.
>
> I did my best to catch up now. Ping back if there are still patches missing/
> uncommented, please.
So could we have v3 with those minor changes (and adjusted commit
messages)? I'd like to base my series on these changes to prevent merge
conflicts.
Thanks,
Simon
>
> Regards,
> Simon
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines
2019-10-09 18:42 ` Simon Goldschmidt
@ 2019-10-10 0:47 ` Ley Foon Tan
0 siblings, 0 replies; 21+ messages in thread
From: Ley Foon Tan @ 2019-10-10 0:47 UTC (permalink / raw)
To: u-boot
On Thu, Oct 10, 2019 at 2:42 AM Simon Goldschmidt
<simon.k.r.goldschmidt@gmail.com> wrote:
>
> Am 02.10.2019 um 11:23 schrieb Simon Goldschmidt:
> > On Wed, Oct 2, 2019 at 10:13 AM Ley Foon Tan <lftan.linux@gmail.com> wrote:
> >>
> >> On Wed, Sep 18, 2019 at 12:23 PM Simon Goldschmidt
> >> <simon.k.r.goldschmidt@gmail.com> wrote:
> >>>
> >>>
> >>>
> >>> Ley Foon Tan <lftan.linux@gmail.com> schrieb am Mi., 18. Sep. 2019, 04:32:
> >>>>
> >>>> On Wed, Sep 18, 2019 at 6:33 AM Dinh Nguyen <dinguyen@kernel.org> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>> On 9/10/19 3:37 AM, Ley Foon Tan wrote:
> >>>>>> This is 2nd version of patchset to convert reset, system and clock manager
> >>>>>> drivers to use #define instead of struct.
> >>>>>>
> >>>>>> Tested on Cyclone 5, Arria 10 and Stratix 10 devices.
> >>>>>>
> >>>>>> Patch 1 is new one, patch 2 to 4 have changes.
> >>>>>>
> >>>>>> Main changes in this version are:
> >>>>>> - Get base address from DT
> >>>>>> - Change to use writel(), readl(), setbits_le32() and clrbits_le32().
> >>>>>> - Add prefix to defines.
> >>>>>> - Add "u-boot,dm-pre-reloc" to clock and system manager nodes.
> >>>>>>
> >>>>>> History:
> >>>>>> v1: https://patchwork.ozlabs.org/cover/1149731/
> >>>>>>
> >>>>>
> >>>>> I think you also need to Simon Goldschmidt to this series.
> >>>> Simon is in the CC list in my original email.
> >>>
> >>>
> >>> And I'm trying my best to catch up with u-boot mails and patches. I already read it through but failed to find the time to review and test it. Next week, hopefully...
> >>>
> >>> Regards,
> >>> Simon
> >>>
> >>>>>
> >>>>> Beside the minor incorrect address missing a zero in patch 1, I've
> >>>>> tested this series on the Sockit.
> >>>>>
> >>>>> Tested-by: Dinh Nguyen <dinguyen@kernel.org>
> >>
> >> Hi Marek and Simon
> >>
> >> Any further comment for this series? Otherwise, I will send v3 with
> >> minor change for Dinh's comment.
> >
> > I did my best to catch up now. Ping back if there are still patches missing/
> > uncommented, please.
>
> So could we have v3 with those minor changes (and adjusted commit
> messages)? I'd like to base my series on these changes to prevent merge
> conflicts.
>
Sure, I have make those updates. Will send out today.
Thanks.
Regards
Ley Foon
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2019-10-10 0:47 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-10 8:37 [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers from struct to defines Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 1/4] arm: dts: socfpga: Add u-boot, dm-pre-reloc for sysmgr and clkmgr nodes Ley Foon Tan
2019-09-16 14:09 ` Dinh Nguyen
2019-09-18 2:32 ` Ley Foon Tan
2019-10-02 9:18 ` Simon Goldschmidt
2019-09-10 8:38 ` [U-Boot] [PATCH v2 2/4] arm: socfpga: Convert reset manager from struct to defines Ley Foon Tan
2019-10-02 9:20 ` Simon Goldschmidt
2019-10-04 3:03 ` Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 3/4] arm: socfpga: Convert system " Ley Foon Tan
2019-10-02 9:20 ` Simon Goldschmidt
2019-10-04 3:05 ` Ley Foon Tan
2019-09-10 8:38 ` [U-Boot] [PATCH v2 4/4] arm: socfpga: Convert clock " Ley Foon Tan
2019-10-02 9:22 ` Simon Goldschmidt
2019-10-04 2:57 ` Ley Foon Tan
2019-09-17 22:33 ` [U-Boot] [PATCH v2 0/4] arm: socfpga: Convert drivers " Dinh Nguyen
2019-09-18 2:32 ` Ley Foon Tan
2019-09-18 4:22 ` Simon Goldschmidt
2019-10-02 8:13 ` Ley Foon Tan
2019-10-02 9:23 ` Simon Goldschmidt
2019-10-09 18:42 ` Simon Goldschmidt
2019-10-10 0:47 ` Ley Foon Tan
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.