Refine devicetree to use common irqdomain map interface to program
IOAPIC pins, so we can unify the callsite to progam IOAPIC pins.

Signed-off-by: Jiang Liu <jiang....@linux.intel.com>
---
 arch/x86/kernel/devicetree.c |   14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index ee4737f4a1af..0c938dd7b3c8 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -201,10 +201,8 @@ static int ioapic_xlate(struct irq_domain *domain,
                        const u32 *intspec, u32 intsize,
                        irq_hw_number_t *out_hwirq, u32 *out_type)
 {
-       struct io_apic_irq_attr attr;
        struct of_ioapic_type *it;
-       u32 line, idx;
-       int rc;
+       u32 line, idx, gsi;
 
        if (WARN_ON(intsize < 2))
                return -EINVAL;
@@ -217,12 +215,9 @@ static int ioapic_xlate(struct irq_domain *domain,
        it = &of_ioapic_type[intspec[1]];
 
        idx = (u32)(long)domain->host_data;
-       set_io_apic_irq_attr(&attr, idx, line, it->trigger, it->polarity);
-
-       rc = io_apic_setup_irq_pin_once(irq_find_mapping(domain, line),
-                                       cpu_to_node(0), &attr);
-       if (rc)
-               return rc;
+       gsi = mp_pin_to_gsi(idx, line);
+       if (mp_set_gsi_attr(gsi, it->trigger, it->polarity, cpu_to_node(0)))
+               return -EBUSY;
 
        *out_hwirq = line;
        *out_type = it->out_type;
@@ -230,6 +225,7 @@ static int ioapic_xlate(struct irq_domain *domain,
 }
 
 const struct irq_domain_ops ioapic_irq_domain_ops = {
+       .map = mp_irqdomain_map,
        .xlate = ioapic_xlate,
 };
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to