aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/prm_common.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2017-06-18 23:46:30 -0400
committerOlof Johansson <olof@lixom.net>2017-06-18 23:46:30 -0400
commit2b1ee3061f09bd90a5c659b9cb45fcbf49c5fd4c (patch)
tree37fc6c42bc227468e0c60869fd60e59685726135 /arch/arm/mach-omap2/prm_common.c
parent6198c74939c085fbd31fab3ba6f1eb2ce2820b39 (diff)
parent1df5eaa6bced2d8a9de305d4a5f587adf57ddf35 (diff)
Merge tag 'omap-for-v4.13/soc-v4-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc
SoC changes for omap variants for v4.13 merge window: - PM clean-up in preparation of adding am335x/am437x PM support - Fixes for issues found by Coccinelle - Legacy code removal now that everything boots in device tree only mode - Interconnect changes in preparation of moving clkctrl clocks to be managed by clkctrl clock driver - Interconnect changes to add omap4 crypto acceclerator support * tag 'omap-for-v4.13/soc-v4-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (27 commits) ARM: OMAP4: hwmod_data: add SHAM crypto accelerator ARM: OMAP4: hwmod data: add des ARM: OMAP4: hwmod data: add aes2 ARM: OMAP4: hwmod data: add aes1 ARM: OMAP2+: Remove unused legacy code for n8x0 ARM: OMAP2+: Remove unused legacy code for watchdog ARM: OMAP2+: Remove unused legacy code for interconnects ARM: OMAP2+: Remove unused legacy code for PRM ARM: OMAP2+: Remove unused legacy code for io.c ARM: OMAP2+: Remove unused legacy code for McBSP ARM: OMAP2+: SmartReflex: Delete an error message for a failed memory allocation in two functions ARM: OMAP2+: Use kcalloc() in sr_set_nvalues() ARM: OMAP2+: Improve a size determination in sr_dev_init() ARM: OMAP2+: Delete an error message for a failed memory allocation in two functions ARM: OMAP2+: Remove unused legacy code for device init ARM: OMAP2+: Remove unused legacy code for PMU ARM: OMAP2+: Remove unused legacy code for opp ARM: OMAP2+: hwmod: populate clkctrl clocks for hwmods if available ARM: OMAP4: cminst: add support for clkdm_xlate_address ARM: omap2+: clockdomain: add clkdm_xlate_address ... Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-omap2/prm_common.c')
-rw-r--r--arch/arm/mach-omap2/prm_common.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index dc11841ca334..09180a59b1c9 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -66,7 +66,7 @@ static struct irq_chip_generic **prcm_irq_chips;
66static struct omap_prcm_irq_setup *prcm_irq_setup; 66static struct omap_prcm_irq_setup *prcm_irq_setup;
67 67
68/* prm_base: base virtual address of the PRM IP block */ 68/* prm_base: base virtual address of the PRM IP block */
69void __iomem *prm_base; 69struct omap_domain_base prm_base;
70 70
71u16 prm_features; 71u16 prm_features;
72 72
@@ -267,10 +267,9 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
267{ 267{
268 int nr_regs; 268 int nr_regs;
269 u32 mask[OMAP_PRCM_MAX_NR_PENDING_REG]; 269 u32 mask[OMAP_PRCM_MAX_NR_PENDING_REG];
270 int offset, i; 270 int offset, i, irq;
271 struct irq_chip_generic *gc; 271 struct irq_chip_generic *gc;
272 struct irq_chip_type *ct; 272 struct irq_chip_type *ct;
273 unsigned int irq;
274 273
275 if (!irq_setup) 274 if (!irq_setup)
276 return -EINVAL; 275 return -EINVAL;
@@ -325,7 +324,7 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
325 324
326 for (i = 0; i < irq_setup->nr_regs; i++) { 325 for (i = 0; i < irq_setup->nr_regs; i++) {
327 gc = irq_alloc_generic_chip("PRCM", 1, 326 gc = irq_alloc_generic_chip("PRCM", 1,
328 irq_setup->base_irq + i * 32, prm_base, 327 irq_setup->base_irq + i * 32, prm_base.va,
329 handle_level_irq); 328 handle_level_irq);
330 329
331 if (!gc) { 330 if (!gc) {
@@ -344,10 +343,8 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
344 prcm_irq_chips[i] = gc; 343 prcm_irq_chips[i] = gc;
345 } 344 }
346 345
347 if (of_have_populated_dt()) { 346 irq = omap_prcm_event_to_irq("io");
348 int irq = omap_prcm_event_to_irq("io"); 347 omap_pcs_legacy_init(irq, irq_setup->reconfigure_io_chain);
349 omap_pcs_legacy_init(irq, irq_setup->reconfigure_io_chain);
350 }
351 348
352 return 0; 349 return 0;
353 350
@@ -364,7 +361,7 @@ err:
364 */ 361 */
365void __init omap2_set_globals_prm(void __iomem *prm) 362void __init omap2_set_globals_prm(void __iomem *prm)
366{ 363{
367 prm_base = prm; 364 prm_base.va = prm;
368} 365}
369 366
370/** 367/**
@@ -755,19 +752,22 @@ int __init omap2_prm_base_init(void)
755 struct device_node *np; 752 struct device_node *np;
756 const struct of_device_id *match; 753 const struct of_device_id *match;
757 struct omap_prcm_init_data *data; 754 struct omap_prcm_init_data *data;
758 void __iomem *mem; 755 struct resource res;
756 int ret;
759 757
760 for_each_matching_node_and_match(np, omap_prcm_dt_match_table, &match) { 758 for_each_matching_node_and_match(np, omap_prcm_dt_match_table, &match) {
761 data = (struct omap_prcm_init_data *)match->data; 759 data = (struct omap_prcm_init_data *)match->data;
762 760
763 mem = of_iomap(np, 0); 761 ret = of_address_to_resource(np, 0, &res);
764 if (!mem) 762 if (ret)
765 return -ENOMEM; 763 return ret;
766 764
767 if (data->index == TI_CLKM_PRM) 765 data->mem = ioremap(res.start, resource_size(&res));
768 prm_base = mem + data->offset;
769 766
770 data->mem = mem; 767 if (data->index == TI_CLKM_PRM) {
768 prm_base.va = data->mem + data->offset;
769 prm_base.pa = res.start + data->offset;
770 }
771 771
772 data->np = np; 772 data->np = np;
773 773