|
@@ -248,12 +248,25 @@ armada_370_xp_handle_irq(struct pt_regs *regs)
|
|
static int __init armada_370_xp_mpic_of_init(struct device_node *node,
|
|
static int __init armada_370_xp_mpic_of_init(struct device_node *node,
|
|
struct device_node *parent)
|
|
struct device_node *parent)
|
|
{
|
|
{
|
|
|
|
+ struct resource main_int_res, per_cpu_int_res;
|
|
u32 control;
|
|
u32 control;
|
|
|
|
|
|
- main_int_base = of_iomap(node, 0);
|
|
|
|
- per_cpu_int_base = of_iomap(node, 1);
|
|
|
|
|
|
+ BUG_ON(of_address_to_resource(node, 0, &main_int_res));
|
|
|
|
+ BUG_ON(of_address_to_resource(node, 1, &per_cpu_int_res));
|
|
|
|
|
|
|
|
+ BUG_ON(!request_mem_region(main_int_res.start,
|
|
|
|
+ resource_size(&main_int_res),
|
|
|
|
+ node->full_name));
|
|
|
|
+ BUG_ON(!request_mem_region(per_cpu_int_res.start,
|
|
|
|
+ resource_size(&per_cpu_int_res),
|
|
|
|
+ node->full_name));
|
|
|
|
+
|
|
|
|
+ main_int_base = ioremap(main_int_res.start,
|
|
|
|
+ resource_size(&main_int_res));
|
|
BUG_ON(!main_int_base);
|
|
BUG_ON(!main_int_base);
|
|
|
|
+
|
|
|
|
+ per_cpu_int_base = ioremap(per_cpu_int_res.start,
|
|
|
|
+ resource_size(&per_cpu_int_res));
|
|
BUG_ON(!per_cpu_int_base);
|
|
BUG_ON(!per_cpu_int_base);
|
|
|
|
|
|
control = readl(main_int_base + ARMADA_370_XP_INT_CONTROL);
|
|
control = readl(main_int_base + ARMADA_370_XP_INT_CONTROL);
|
|
@@ -262,8 +275,7 @@ static int __init armada_370_xp_mpic_of_init(struct device_node *node,
|
|
irq_domain_add_linear(node, (control >> 2) & 0x3ff,
|
|
irq_domain_add_linear(node, (control >> 2) & 0x3ff,
|
|
&armada_370_xp_mpic_irq_ops, NULL);
|
|
&armada_370_xp_mpic_irq_ops, NULL);
|
|
|
|
|
|
- if (!armada_370_xp_mpic_domain)
|
|
|
|
- panic("Unable to add Armada_370_Xp MPIC irq domain (DT)\n");
|
|
|
|
|
|
+ BUG_ON(!armada_370_xp_mpic_domain);
|
|
|
|
|
|
irq_set_default_host(armada_370_xp_mpic_domain);
|
|
irq_set_default_host(armada_370_xp_mpic_domain);
|
|
|
|
|