Merge branch 'omap-for-v4.8/legacy' into for-next
[deliverable/linux.git] / arch / mips / lantiq / irq.c
index ff17669e30a36363530358cf9f2301fbc0eb129d..8ac0e5994ed2926548e3da44b158b7a8aff4aa12 100644 (file)
@@ -66,7 +66,7 @@ int gic_present;
 #endif
 
 static int exin_avail;
-static struct resource ltq_eiu_irq[MAX_EIU];
+static u32 ltq_eiu_irq[MAX_EIU];
 static void __iomem *ltq_icu_membase[MAX_IM];
 static void __iomem *ltq_eiu_membase;
 static struct irq_domain *ltq_domain;
@@ -75,7 +75,7 @@ static int ltq_perfcount_irq;
 int ltq_eiu_get_irq(int exin)
 {
        if (exin < exin_avail)
-               return ltq_eiu_irq[exin].start;
+               return ltq_eiu_irq[exin];
        return -1;
 }
 
@@ -125,8 +125,8 @@ static int ltq_eiu_settype(struct irq_data *d, unsigned int type)
 {
        int i;
 
-       for (i = 0; i < MAX_EIU; i++) {
-               if (d->hwirq == ltq_eiu_irq[i].start) {
+       for (i = 0; i < exin_avail; i++) {
+               if (d->hwirq == ltq_eiu_irq[i]) {
                        int val = 0;
                        int edge = 0;
 
@@ -173,8 +173,8 @@ static unsigned int ltq_startup_eiu_irq(struct irq_data *d)
        int i;
 
        ltq_enable_irq(d);
-       for (i = 0; i < MAX_EIU; i++) {
-               if (d->hwirq == ltq_eiu_irq[i].start) {
+       for (i = 0; i < exin_avail; i++) {
+               if (d->hwirq == ltq_eiu_irq[i]) {
                        /* by default we are low level triggered */
                        ltq_eiu_settype(d, IRQF_TRIGGER_LOW);
                        /* clear all pending */
@@ -195,8 +195,8 @@ static void ltq_shutdown_eiu_irq(struct irq_data *d)
        int i;
 
        ltq_disable_irq(d);
-       for (i = 0; i < MAX_EIU; i++) {
-               if (d->hwirq == ltq_eiu_irq[i].start) {
+       for (i = 0; i < exin_avail; i++) {
+               if (d->hwirq == ltq_eiu_irq[i]) {
                        /* disable */
                        ltq_eiu_w32(ltq_eiu_r32(LTQ_EIU_EXIN_INEN) & ~BIT(i),
                                LTQ_EIU_EXIN_INEN);
@@ -206,7 +206,7 @@ static void ltq_shutdown_eiu_irq(struct irq_data *d)
 }
 
 static struct irq_chip ltq_irq_type = {
-       "icu",
+       .name = "icu",
        .irq_enable = ltq_enable_irq,
        .irq_disable = ltq_disable_irq,
        .irq_unmask = ltq_enable_irq,
@@ -216,7 +216,7 @@ static struct irq_chip ltq_irq_type = {
 };
 
 static struct irq_chip ltq_eiu_type = {
-       "eiu",
+       .name = "eiu",
        .irq_startup = ltq_startup_eiu_irq,
        .irq_shutdown = ltq_shutdown_eiu_irq,
        .irq_enable = ltq_enable_irq,
@@ -341,10 +341,10 @@ static int icu_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
                return 0;
 
        for (i = 0; i < exin_avail; i++)
-               if (hw == ltq_eiu_irq[i].start)
+               if (hw == ltq_eiu_irq[i])
                        chip = &ltq_eiu_type;
 
-       irq_set_chip_and_handler(hw, chip, handle_level_irq);
+       irq_set_chip_and_handler(irq, chip, handle_level_irq);
 
        return 0;
 }
@@ -439,14 +439,15 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
        eiu_node = of_find_compatible_node(NULL, NULL, "lantiq,eiu-xway");
        if (eiu_node && !of_address_to_resource(eiu_node, 0, &res)) {
                /* find out how many external irq sources we have */
-               exin_avail = of_irq_count(eiu_node);
+               exin_avail = of_property_count_u32_elems(eiu_node,
+                                                        "lantiq,eiu-irqs");
 
                if (exin_avail > MAX_EIU)
                        exin_avail = MAX_EIU;
 
-               ret = of_irq_to_resource_table(eiu_node,
+               ret = of_property_read_u32_array(eiu_node, "lantiq,eiu-irqs",
                                                ltq_eiu_irq, exin_avail);
-               if (ret != exin_avail)
+               if (ret)
                        panic("failed to load external irq resources");
 
                if (!request_mem_region(res.start, resource_size(&res),
This page took 0.031717 seconds and 5 git commands to generate.