diff options
author | Tero Kristo <t-kristo@ti.com> | 2018-03-14 15:53:10 +0200 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2018-03-20 08:06:07 -0700 |
commit | 04dfac09068766550e3173aac88ff70d70958050 (patch) | |
tree | f0b3606306f889511b8184b0367291ab357e33c1 /arch/arm/mach-omap2 | |
parent | e33509c19da5931e4363c85f6e83bd11803ba121 (diff) | |
download | linux-stable-04dfac09068766550e3173aac88ff70d70958050.tar.gz linux-stable-04dfac09068766550e3173aac88ff70d70958050.tar.bz2 linux-stable-04dfac09068766550e3173aac88ff70d70958050.zip |
ARM: omap2+: control: add support for auxiliary control module instances
Control module can have multiple instances in a system, each with separate
address space and features. Add base support for these auxiliary instances,
with support for syscon and clock mappings under them.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/control.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c index bd8089ff929f..632adb2b7d03 100644 --- a/arch/arm/mach-omap2/control.c +++ b/arch/arm/mach-omap2/control.c @@ -623,6 +623,7 @@ void __init omap3_ctrl_init(void) struct control_init_data { int index; + void __iomem *mem; s16 offset; }; @@ -660,15 +661,21 @@ int __init omap2_control_base_init(void) struct device_node *np; const struct of_device_id *match; struct control_init_data *data; + void __iomem *mem; for_each_matching_node_and_match(np, omap_scrm_dt_match_table, &match) { data = (struct control_init_data *)match->data; - omap2_ctrl_base = of_iomap(np, 0); - if (!omap2_ctrl_base) + mem = of_iomap(np, 0); + if (!mem) return -ENOMEM; - omap2_ctrl_offset = data->offset; + if (data->index == TI_CLKM_CTRL) { + omap2_ctrl_base = mem; + omap2_ctrl_offset = data->offset; + } + + data->mem = mem; } return 0; @@ -713,7 +720,7 @@ int __init omap_control_init(void) } else { /* No scm_conf found, direct access */ ret = omap2_clk_provider_init(np, data->index, NULL, - omap2_ctrl_base); + data->mem); if (ret) return ret; } |