3af779eb17
This is a backport of the patches accepted to the Linux mainline related to mvebu SoC (Armada XP and Armada 370) between Linux v3.11, and Linux v3.12. This work mainly covers: * Ground work for sharing the pxa nand driver(drivers/mtd/nand/pxa3xx_nand.c) between the PXA family,and the Armada family. * Further updates to the mvebu MBus. * Work and ground work for enabling MSI on the Armada family. * some phy / mdio bus initialization related work. * Device tree binding documentation update. Signed-off-by: Seif Mazareeb <seif.mazareeb@gmail.com> CC: Luka Perkov <luka@openwrt.org> SVN-Revision: 39565
65 lines
2.4 KiB
Diff
65 lines
2.4 KiB
Diff
From c8efa45217cbd780dafe12d87b61554c2e19a010 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
Date: Thu, 6 Jun 2013 18:22:51 +0200
|
|
Subject: [PATCH 074/203] irqchip: armada-370-xp: properly request resources
|
|
|
|
Instead of using of_iomap(), we now use of_address_to_resource(),
|
|
request_mem_region() and ioremap(). This allows the corresponding I/O
|
|
regions to be properly requested and visible in /proc/iomem.
|
|
|
|
The main motivation for this change is that the introduction of the
|
|
MSI support requires us to get the physical address of the main
|
|
interrupt controller registers, so we will need the corresponding
|
|
'struct resource' anyway.
|
|
|
|
We also take this opportunity to change a panic() to BUG_ON(), in
|
|
order to be consistent with the rest of the driver.
|
|
|
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
Tested-by: Daniel Price <daniel.price@gmail.com>
|
|
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
|
|
---
|
|
drivers/irqchip/irq-armada-370-xp.c | 20 ++++++++++++++++----
|
|
1 file changed, 16 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/irqchip/irq-armada-370-xp.c
|
|
+++ b/drivers/irqchip/irq-armada-370-xp.c
|
|
@@ -248,12 +248,25 @@ armada_370_xp_handle_irq(struct pt_regs
|
|
static int __init armada_370_xp_mpic_of_init(struct device_node *node,
|
|
struct device_node *parent)
|
|
{
|
|
+ struct resource main_int_res, per_cpu_int_res;
|
|
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);
|
|
+
|
|
+ per_cpu_int_base = ioremap(per_cpu_int_res.start,
|
|
+ resource_size(&per_cpu_int_res));
|
|
BUG_ON(!per_cpu_int_base);
|
|
|
|
control = readl(main_int_base + ARMADA_370_XP_INT_CONTROL);
|
|
@@ -262,8 +275,7 @@ static int __init armada_370_xp_mpic_of_
|
|
irq_domain_add_linear(node, (control >> 2) & 0x3ff,
|
|
&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);
|
|
|