x86, irq, devicetree: Use common irqdomain map interface to program IOAPIC pins

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.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Tony Lindgren <tony@atomide.com>
Link: http://lkml.kernel.org/r/1402302011-23642-34-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Jiang Liu 2014-06-09 16:20:02 +08:00 committed by Thomas Gleixner
parent ecc527d560
commit 795aacf63f
1 changed files with 5 additions and 9 deletions

View File

@ -201,10 +201,8 @@ static int ioapic_xlate(struct irq_domain *domain,
const u32 *intspec, u32 intsize, const u32 *intspec, u32 intsize,
irq_hw_number_t *out_hwirq, u32 *out_type) irq_hw_number_t *out_hwirq, u32 *out_type)
{ {
struct io_apic_irq_attr attr;
struct of_ioapic_type *it; struct of_ioapic_type *it;
u32 line, idx; u32 line, idx, gsi;
int rc;
if (WARN_ON(intsize < 2)) if (WARN_ON(intsize < 2))
return -EINVAL; return -EINVAL;
@ -217,12 +215,9 @@ static int ioapic_xlate(struct irq_domain *domain,
it = &of_ioapic_type[intspec[1]]; it = &of_ioapic_type[intspec[1]];
idx = (u32)(long)domain->host_data; idx = (u32)(long)domain->host_data;
set_io_apic_irq_attr(&attr, idx, line, it->trigger, it->polarity); gsi = mp_pin_to_gsi(idx, line);
if (mp_set_gsi_attr(gsi, it->trigger, it->polarity, cpu_to_node(0)))
rc = io_apic_setup_irq_pin_once(irq_find_mapping(domain, line), return -EBUSY;
cpu_to_node(0), &attr);
if (rc)
return rc;
*out_hwirq = line; *out_hwirq = line;
*out_type = it->out_type; *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 = { const struct irq_domain_ops ioapic_irq_domain_ops = {
.map = mp_irqdomain_map,
.xlate = ioapic_xlate, .xlate = ioapic_xlate,
}; };