mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 01:24:33 +00:00
xtensa: variant irq set callbacks
Allow the core variant code to provide irq enable/disable callbacks. Signed-off-by: Johannes Weiner <jw@emlix.com> Signed-off-by: Chris Zankel <chris@zankel.net>
This commit is contained in:
parent
72197b18bc
commit
4c0d214144
@ -51,6 +51,9 @@ source "kernel/Kconfig.freezer"
|
||||
config MMU
|
||||
def_bool n
|
||||
|
||||
config VARIANT_IRQ_SWITCH
|
||||
def_bool n
|
||||
|
||||
menu "Processor type and features"
|
||||
|
||||
choice
|
||||
|
@ -14,6 +14,13 @@
|
||||
#include <platform/hardware.h>
|
||||
#include <variant/core.h>
|
||||
|
||||
#ifdef CONFIG_VARIANT_IRQ_SWITCH
|
||||
#include <variant/irq.h>
|
||||
#else
|
||||
static inline void variant_irq_enable(unsigned int irq) { }
|
||||
static inline void variant_irq_disable(unsigned int irq) { }
|
||||
#endif
|
||||
|
||||
#ifndef PLATFORM_NR_IRQS
|
||||
# define PLATFORM_NR_IRQS 0
|
||||
#endif
|
||||
|
@ -132,6 +132,18 @@ static void xtensa_irq_unmask(unsigned int irq)
|
||||
set_sr (cached_irq_mask, INTENABLE);
|
||||
}
|
||||
|
||||
static void xtensa_irq_enable(unsigned int irq)
|
||||
{
|
||||
variant_irq_enable(irq);
|
||||
xtensa_irq_unmask(irq);
|
||||
}
|
||||
|
||||
static void xtensa_irq_disable(unsigned int irq)
|
||||
{
|
||||
xtensa_irq_mask(irq);
|
||||
variant_irq_disable(irq);
|
||||
}
|
||||
|
||||
static void xtensa_irq_ack(unsigned int irq)
|
||||
{
|
||||
set_sr(1 << irq, INTCLEAR);
|
||||
@ -146,6 +158,8 @@ static int xtensa_irq_retrigger(unsigned int irq)
|
||||
|
||||
static struct irq_chip xtensa_irq_chip = {
|
||||
.name = "xtensa",
|
||||
.enable = xtensa_irq_enable,
|
||||
.disable = xtensa_irq_disable,
|
||||
.mask = xtensa_irq_mask,
|
||||
.unmask = xtensa_irq_unmask,
|
||||
.ack = xtensa_irq_ack,
|
||||
|
Loading…
x
Reference in New Issue
Block a user