mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
irq_domain: Move irq_domain code from powerpc to kernel/irq
This patch only moves the code. It doesn't make any changes, and the code is still only compiled for powerpc. Follow-on patches will generalize the code for other architectures. Signed-off-by: Grant Likely <grant.likely@secretlab.ca> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Milton Miller <miltonm@bga.com> Tested-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
parent
6d9285b00f
commit
cc79ca691c
5 changed files with 643 additions and 650 deletions
|
@ -16,6 +16,17 @@
|
|||
* (though a domain can cover more than one PIC if they have a flat number
|
||||
* model). It's the domain callbacks that are responsible for setting the
|
||||
* irq_chip on a given irq_desc after it's been mapped.
|
||||
*
|
||||
* The host code and data structures are agnostic to whether or not
|
||||
* we use an open firmware device-tree. We do have references to struct
|
||||
* device_node in two places: in irq_find_host() to find the host matching
|
||||
* a given interrupt controller node, and of course as an argument to its
|
||||
* counterpart domain->ops->match() callback. However, those are treated as
|
||||
* generic pointers by the core and the fact that it's actually a device-node
|
||||
* pointer is purely a convention between callers and implementation. This
|
||||
* code could thus be used on other architectures by replacing those two
|
||||
* by some sort of arch-specific void * "token" used to identify interrupt
|
||||
* controllers.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_IRQDOMAIN_H
|
||||
|
@ -108,6 +119,32 @@ struct irq_domain {
|
|||
};
|
||||
|
||||
#ifdef CONFIG_IRQ_DOMAIN
|
||||
#ifdef CONFIG_PPC
|
||||
extern struct irq_domain *irq_alloc_host(struct device_node *of_node,
|
||||
unsigned int revmap_type,
|
||||
unsigned int revmap_arg,
|
||||
struct irq_domain_ops *ops,
|
||||
irq_hw_number_t inval_irq);
|
||||
extern struct irq_domain *irq_find_host(struct device_node *node);
|
||||
extern void irq_set_default_host(struct irq_domain *host);
|
||||
extern void irq_set_virq_count(unsigned int count);
|
||||
|
||||
|
||||
extern unsigned int irq_create_mapping(struct irq_domain *host,
|
||||
irq_hw_number_t hwirq);
|
||||
extern void irq_dispose_mapping(unsigned int virq);
|
||||
extern unsigned int irq_find_mapping(struct irq_domain *host,
|
||||
irq_hw_number_t hwirq);
|
||||
extern unsigned int irq_create_direct_mapping(struct irq_domain *host);
|
||||
extern void irq_radix_revmap_insert(struct irq_domain *host, unsigned int virq,
|
||||
irq_hw_number_t hwirq);
|
||||
extern unsigned int irq_radix_revmap_lookup(struct irq_domain *host,
|
||||
irq_hw_number_t hwirq);
|
||||
extern unsigned int irq_linear_revmap(struct irq_domain *host,
|
||||
irq_hw_number_t hwirq);
|
||||
|
||||
#else /* CONFIG_PPC */
|
||||
|
||||
/**
|
||||
* irq_domain_to_irq() - Translate from a hardware irq to a linux irq number
|
||||
*
|
||||
|
@ -137,15 +174,16 @@ extern void irq_domain_add(struct irq_domain *domain);
|
|||
extern void irq_domain_del(struct irq_domain *domain);
|
||||
|
||||
extern struct irq_domain_ops irq_domain_simple_ops;
|
||||
#endif /* CONFIG_IRQ_DOMAIN */
|
||||
|
||||
#if defined(CONFIG_IRQ_DOMAIN) && defined(CONFIG_OF_IRQ)
|
||||
#if defined(CONFIG_OF_IRQ)
|
||||
extern void irq_domain_add_simple(struct device_node *controller, int irq_base);
|
||||
extern void irq_domain_generate_simple(const struct of_device_id *match,
|
||||
u64 phys_base, unsigned int irq_start);
|
||||
#else /* CONFIG_IRQ_DOMAIN && CONFIG_OF_IRQ */
|
||||
#else /* CONFIG_OF_IRQ */
|
||||
static inline void irq_domain_generate_simple(const struct of_device_id *match,
|
||||
u64 phys_base, unsigned int irq_start) { }
|
||||
#endif /* CONFIG_IRQ_DOMAIN && CONFIG_OF_IRQ */
|
||||
#endif /* !CONFIG_OF_IRQ */
|
||||
#endif /* !CONFIG_PPC */
|
||||
#endif /* CONFIG_IRQ_DOMAIN */
|
||||
|
||||
#endif /* _LINUX_IRQDOMAIN_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue