Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abd2363f authored by Grant Likely's avatar Grant Likely
Browse files

irq_domain/mips: Allow irq_domain on MIPS



This patch makes IRQ_DOMAIN usable on MIPS.  It uses an ugly workaround
to preserve current behaviour so that MIPS has time to add irq_domain
registration to the irq controller drivers.  The workaround will be
removed in Linux v3.6

Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Rob Herring <rob.herring@calxeda.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mips@linux-mips.org
parent b4e51854
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2327,6 +2327,7 @@ config USE_OF
	bool "Flattened Device Tree support"
	select OF
	select OF_EARLY_FLATTREE
	select IRQ_DOMAIN
	help
	  Include support for flattened device tree machine descriptions.

+1 −4
Original line number Diff line number Diff line
@@ -11,15 +11,12 @@

#include <linux/linkage.h>
#include <linux/smp.h>
#include <linux/irqdomain.h>

#include <asm/mipsmtregs.h>

#include <irq.h>

static inline void irq_dispose_mapping(unsigned int virq)
{
}

#ifdef CONFIG_I8259
static inline int irq_canonicalize(int irq)
{
+0 −14
Original line number Diff line number Diff line
@@ -60,20 +60,6 @@ void __init early_init_dt_setup_initrd_arch(unsigned long start,
}
#endif

/*
 * irq_create_of_mapping - Hook to resolve OF irq specifier into a Linux irq#
 *
 * Currently the mapping mechanism is trivial; simple flat hwirq numbers are
 * mapped 1:1 onto Linux irq numbers.  Cascaded irq controllers are not
 * supported.
 */
unsigned int irq_create_of_mapping(struct device_node *controller,
				   const u32 *intspec, unsigned int intsize)
{
	return intspec[0];
}
EXPORT_SYMBOL_GPL(irq_create_of_mapping);

void __init early_init_devtree(void *params)
{
	/* Setup flat device-tree pointer */
+12 −0
Original line number Diff line number Diff line
@@ -411,6 +411,18 @@ unsigned int irq_create_of_mapping(struct device_node *controller,

	domain = controller ? irq_find_host(controller) : irq_default_domain;
	if (!domain) {
#ifdef CONFIG_MIPS
		/*
		 * Workaround to avoid breaking interrupt controller drivers
		 * that don't yet register an irq_domain.  This is temporary
		 * code. ~~~gcl, Feb 24, 2012
		 *
		 * Scheduled for removal in Linux v3.6.  That should be enough
		 * time.
		 */
		if (intsize > 0)
			return intspec[0];
#endif
		printk(KERN_WARNING "irq: no irq domain found for %s !\n",
		       controller->full_name);
		return 0;