-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
of/irq: Move irq_of_parse_and_map() to common code
Merge common code between PowerPC and Microblaze. SPARC implements irq_of_parse_and_map(), but the implementation is different, so it does not use this code. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Michal Simek <monstr@monstr.eu> Cc: "David S. Miller" <davem@davemloft.net> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
- Loading branch information
Grant Likely
committed
Jun 28, 2010
1 parent
b505ff5
commit e387344
Showing
13 changed files
with
99 additions
and
128 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
/* | ||
* Derived from arch/i386/kernel/irq.c | ||
* Copyright (C) 1992 Linus Torvalds | ||
* Adapted from arch/i386 by Gary Thomas | ||
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | ||
* Updated and modified by Cort Dougan <cort@fsmlabs.com> | ||
* Copyright (C) 1996-2001 Cort Dougan | ||
* Adapted for Power Macintosh by Paul Mackerras | ||
* Copyright (C) 1996 Paul Mackerras (paulus@cs.anu.edu.au) | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation; either version | ||
* 2 of the License, or (at your option) any later version. | ||
* | ||
* This file contains the code used to make IRQ descriptions in the | ||
* device tree to actual irq numbers on an interrupt controller | ||
* driver. | ||
*/ | ||
|
||
#include <linux/errno.h> | ||
#include <linux/module.h> | ||
#include <linux/of.h> | ||
#include <linux/of_irq.h> | ||
#include <linux/string.h> | ||
|
||
/** | ||
* irq_of_parse_and_map - Parse and map an interrupt into linux virq space | ||
* @device: Device node of the device whose interrupt is to be mapped | ||
* @index: Index of the interrupt to map | ||
* | ||
* This function is a wrapper that chains of_irq_map_one() and | ||
* irq_create_of_mapping() to make things easier to callers | ||
*/ | ||
unsigned int irq_of_parse_and_map(struct device_node *dev, int index) | ||
{ | ||
struct of_irq oirq; | ||
|
||
if (of_irq_map_one(dev, index, &oirq)) | ||
return NO_IRQ; | ||
|
||
return irq_create_of_mapping(oirq.controller, oirq.specifier, | ||
oirq.size); | ||
} | ||
EXPORT_SYMBOL_GPL(irq_of_parse_and_map); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#ifndef __OF_IRQ_H | ||
#define __OF_IRQ_H | ||
|
||
#if defined(CONFIG_OF) | ||
struct of_irq; | ||
#include <linux/types.h> | ||
#include <linux/of.h> | ||
|
||
/* | ||
* irq_of_parse_and_map() is used ba all OF enabled platforms; but SPARC | ||
* implements it differently. However, the prototype is the same for all, | ||
* so declare it here regardless of the CONFIG_OF_IRQ setting. | ||
*/ | ||
extern unsigned int irq_of_parse_and_map(struct device_node *node, int index); | ||
|
||
#if defined(CONFIG_OF_IRQ) | ||
/** | ||
* of_irq - container for device_node/irq_specifier pair for an irq controller | ||
* @controller: pointer to interrupt controller device tree node | ||
* @size: size of interrupt specifier | ||
* @specifier: array of cells @size long specifing the specific interrupt | ||
* | ||
* This structure is returned when an interrupt is mapped. The controller | ||
* field needs to be put() after use | ||
*/ | ||
#define OF_MAX_IRQ_SPEC 4 /* We handle specifiers of at most 4 cells */ | ||
struct of_irq { | ||
struct device_node *controller; /* Interrupt controller node */ | ||
u32 size; /* Specifier size */ | ||
u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */ | ||
}; | ||
|
||
extern int of_irq_map_one(struct device_node *device, int index, | ||
struct of_irq *out_irq); | ||
extern unsigned int irq_create_of_mapping(struct device_node *controller, | ||
const u32 *intspec, | ||
unsigned int intsize); | ||
|
||
#endif /* CONFIG_OF_IRQ */ | ||
#endif /* CONFIG_OF */ | ||
#endif /* __OF_IRQ_H */ |