Commit 7c576f4d authored by Marc Zyngier's avatar Marc Zyngier
Browse files

powerpc: Convert irq_domain_add_legacy_isa use to irq_domain_add_legacy



irq_domain_add_legacy_isa is a pain. It only exists for the benefit of
two PPC-specific drivers, and creates an ugly dependency between asm/irq.h
and linux/irqdomain.h

Instead, let's convert these two drivers to irq_domain_add_legacy(),
stop using NUM_ISA_INTERRUPTS by directly setting NR_IRQS_LEGACY.

The dependency cannot be broken yet as there is a lot of PPC-related
code that depends on it, but that's the first step towards it.

A followup patch will remove irq_domain_add_legacy_isa.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 5951be4c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ extern atomic_t ppc_n_lost_interrupts;
/* Total number of virq in the platform */
#define NR_IRQS		CONFIG_NR_IRQS

/* Same thing, used by the generic IRQ code */
#define NR_IRQS_LEGACY		NUM_ISA_INTERRUPTS
/* Number of irqs reserved for a legacy isa controller */
#define NR_IRQS_LEGACY		16

extern irq_hw_number_t virq_to_hw(unsigned int virq);

+2 −2
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@
 * implementation equates HV plug value to Linux virq value, constrains each
 * interrupt to have a system wide unique plug number, and limits the range
 * of the plug values to map into the first dword of the bitmaps.  This
 * gives a usable range of plug values of  {NUM_ISA_INTERRUPTS..63}.  Note
 * gives a usable range of plug values of  {NR_IRQS_LEGACY..63}.  Note
 * that there is no constraint on how many in this set an individual thread
 * can acquire.
 *
@@ -722,7 +722,7 @@ static unsigned int ps3_get_irq(void)
	}

#if defined(DEBUG)
	if (unlikely(plug < NUM_ISA_INTERRUPTS || plug > PS3_PLUG_MAX)) {
	if (unlikely(plug < NR_IRQS_LEGACY || plug > PS3_PLUG_MAX)) {
		dump_bmp(&per_cpu(ps3_private, 0));
		dump_bmp(&per_cpu(ps3_private, 1));
		BUG();
+2 −1
Original line number Diff line number Diff line
@@ -260,7 +260,8 @@ void i8259_init(struct device_node *node, unsigned long intack_addr)
	raw_spin_unlock_irqrestore(&i8259_lock, flags);

	/* create a legacy host */
	i8259_host = irq_domain_add_legacy_isa(node, &i8259_host_ops, NULL);
	i8259_host = irq_domain_add_legacy(node, NR_IRQS_LEGACY, 0, 0,
					   &i8259_host_ops, NULL);
	if (i8259_host == NULL) {
		printk(KERN_ERR "i8259: failed to allocate irq host !\n");
		return;
+1 −1
Original line number Diff line number Diff line
@@ -602,7 +602,7 @@ static void __init mpic_scan_ht_pics(struct mpic *mpic)
/* Find an mpic associated with a given linux interrupt */
static struct mpic *mpic_find(unsigned int irq)
{
	if (irq < NUM_ISA_INTERRUPTS)
	if (irq < NR_IRQS_LEGACY)
		return NULL;

	return irq_get_chip_data(irq);
+2 −1
Original line number Diff line number Diff line
@@ -404,7 +404,8 @@ void __init tsi108_pci_int_init(struct device_node *node)
{
	DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");

	pci_irq_host = irq_domain_add_legacy_isa(node, &pci_irq_domain_ops, NULL);
	pci_irq_host = irq_domain_add_legacy(node, NR_IRQS_LEGACY, 0, 0,
					     &pci_irq_domain_ops, NULL);
	if (pci_irq_host == NULL) {
		printk(KERN_ERR "pci_irq_host: failed to allocate irq domain!\n");
		return;
Loading