Commit 219595b6 authored by Tero Kristo's avatar Tero Kristo

ARM: OMAP4+: PRM: get rid of cpu_is_omap44xx calls from interrupt init

The compatible DT node is now passed with the prm init, so there is no
need to do node matching here again. Added a new flag to the init data
also, to detect default IRQ support for OMAP4. Also, any booting omap4
DT setup always has a PRM node, so there is no need to check against
the special case where it would be missing.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
parent 8b5b9a22
...@@ -29,9 +29,11 @@ int omap2_prcm_base_init(void); ...@@ -29,9 +29,11 @@ int omap2_prcm_base_init(void);
* *
* PRM_HAS_IO_WAKEUP: has IO wakeup capability * PRM_HAS_IO_WAKEUP: has IO wakeup capability
* PRM_HAS_VOLTAGE: has voltage domains * PRM_HAS_VOLTAGE: has voltage domains
* PRM_IRQ_DEFAULT: use default irq number for PRM irq
*/ */
#define PRM_HAS_IO_WAKEUP (1 << 0) #define PRM_HAS_IO_WAKEUP BIT(0)
#define PRM_HAS_VOLTAGE (1 << 1) #define PRM_HAS_VOLTAGE BIT(1)
#define PRM_IRQ_DEFAULT BIT(2)
/* /*
* MAX_MODULE_SOFTRESET_WAIT: Maximum microseconds to wait for OMAP * MAX_MODULE_SOFTRESET_WAIT: Maximum microseconds to wait for OMAP
......
...@@ -703,10 +703,14 @@ static struct prm_ll_data omap44xx_prm_ll_data = { ...@@ -703,10 +703,14 @@ static struct prm_ll_data omap44xx_prm_ll_data = {
.vp_clear_txdone = omap4_prm_vp_clear_txdone, .vp_clear_txdone = omap4_prm_vp_clear_txdone,
}; };
static const struct omap_prcm_init_data *prm_init_data;
int __init omap44xx_prm_init(const struct omap_prcm_init_data *data) int __init omap44xx_prm_init(const struct omap_prcm_init_data *data)
{ {
omap_prm_base_init(); omap_prm_base_init();
prm_init_data = data;
if (data->flags & PRM_HAS_IO_WAKEUP) if (data->flags & PRM_HAS_IO_WAKEUP)
prm_features |= PRM_HAS_IO_WAKEUP; prm_features |= PRM_HAS_IO_WAKEUP;
...@@ -718,16 +722,8 @@ int __init omap44xx_prm_init(const struct omap_prcm_init_data *data) ...@@ -718,16 +722,8 @@ int __init omap44xx_prm_init(const struct omap_prcm_init_data *data)
return prm_register(&omap44xx_prm_ll_data); return prm_register(&omap44xx_prm_ll_data);
} }
static const struct of_device_id omap_prm_dt_match_table[] = {
{ .compatible = "ti,omap4-prm" },
{ .compatible = "ti,omap5-prm" },
{ .compatible = "ti,dra7-prm" },
{ }
};
static int omap44xx_prm_late_init(void) static int omap44xx_prm_late_init(void)
{ {
struct device_node *np;
int irq_num; int irq_num;
if (!(prm_features & PRM_HAS_IO_WAKEUP)) if (!(prm_features & PRM_HAS_IO_WAKEUP))
...@@ -737,31 +733,23 @@ static int omap44xx_prm_late_init(void) ...@@ -737,31 +733,23 @@ static int omap44xx_prm_late_init(void)
if (!of_have_populated_dt()) if (!of_have_populated_dt())
return 0; return 0;
np = of_find_matching_node(NULL, omap_prm_dt_match_table); irq_num = of_irq_get(prm_init_data->np, 0);
/*
if (!np) { * Already have OMAP4 IRQ num. For all other platforms, we need
/* Default loaded up with OMAP4 values */ * IRQ numbers from DT
if (!cpu_is_omap44xx()) */
return 0; if (irq_num < 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
} else { if (irq_num == -EPROBE_DEFER)
irq_num = of_irq_get(np, 0); return irq_num;
/*
* Already have OMAP4 IRQ num. For all other platforms, we need /* Have nothing to do */
* IRQ numbers from DT return 0;
*/ }
if (irq_num < 0 && !cpu_is_omap44xx()) {
if (irq_num == -EPROBE_DEFER) /* Once OMAP4 DT is filled as well */
return irq_num; if (irq_num >= 0) {
omap4_prcm_irq_setup.irq = irq_num;
/* Have nothing to do */ omap4_prcm_irq_setup.xlate_irq = NULL;
return 0;
}
/* Once OMAP4 DT is filled as well */
if (irq_num >= 0) {
omap4_prcm_irq_setup.irq = irq_num;
omap4_prcm_irq_setup.xlate_irq = NULL;
}
} }
omap44xx_prm_enable_io_wakeup(); omap44xx_prm_enable_io_wakeup();
......
...@@ -669,7 +669,7 @@ static struct omap_prcm_init_data omap4_prm_data __initdata = { ...@@ -669,7 +669,7 @@ static struct omap_prcm_init_data omap4_prm_data __initdata = {
.index = TI_CLKM_PRM, .index = TI_CLKM_PRM,
.init = omap44xx_prm_init, .init = omap44xx_prm_init,
.device_inst_offset = OMAP4430_PRM_DEVICE_INST, .device_inst_offset = OMAP4430_PRM_DEVICE_INST,
.flags = PRM_HAS_IO_WAKEUP | PRM_HAS_VOLTAGE, .flags = PRM_HAS_IO_WAKEUP | PRM_HAS_VOLTAGE | PRM_IRQ_DEFAULT,
}; };
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment