ARM: imx: drop support for irq priorisation
The code for irq priorisation support doesn't have any in-tree users and the Kconfig description does wrong promises because nowadays irq handlers are called with irqs disabled, so no high prioritized irq can interrupt a lower prioritized handler. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
This commit is contained in:
parent
5a269d2284
commit
81efe0fc67
@ -20,16 +20,6 @@ config ARCH_MXC
|
|||||||
menu "Freescale i.MX support"
|
menu "Freescale i.MX support"
|
||||||
depends on ARCH_MXC
|
depends on ARCH_MXC
|
||||||
|
|
||||||
config MXC_IRQ_PRIOR
|
|
||||||
bool "Use IRQ priority"
|
|
||||||
help
|
|
||||||
Select this if you want to use prioritized IRQ handling.
|
|
||||||
This feature prevents higher priority ISR to be interrupted
|
|
||||||
by lower priority IRQ.
|
|
||||||
This may be useful in embedded applications, where are strong
|
|
||||||
requirements for timing.
|
|
||||||
Say N here, unless you have a specialized requirement.
|
|
||||||
|
|
||||||
config MXC_TZIC
|
config MXC_TZIC
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
@ -54,28 +54,6 @@
|
|||||||
static void __iomem *avic_base;
|
static void __iomem *avic_base;
|
||||||
static struct irq_domain *domain;
|
static struct irq_domain *domain;
|
||||||
|
|
||||||
#ifdef CONFIG_MXC_IRQ_PRIOR
|
|
||||||
static int avic_irq_set_priority(unsigned char irq, unsigned char prio)
|
|
||||||
{
|
|
||||||
struct irq_data *d = irq_get_irq_data(irq);
|
|
||||||
unsigned int temp;
|
|
||||||
unsigned int mask = 0x0F << irq % 8 * 4;
|
|
||||||
|
|
||||||
irq = d->hwirq;
|
|
||||||
|
|
||||||
if (irq >= AVIC_NUM_IRQS)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
temp = __raw_readl(avic_base + AVIC_NIPRIORITY(irq / 8));
|
|
||||||
temp &= ~mask;
|
|
||||||
temp |= prio & mask;
|
|
||||||
|
|
||||||
__raw_writel(temp, avic_base + AVIC_NIPRIORITY(irq / 8));
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_FIQ
|
#ifdef CONFIG_FIQ
|
||||||
static int avic_set_irq_fiq(unsigned int irq, unsigned int type)
|
static int avic_set_irq_fiq(unsigned int irq, unsigned int type)
|
||||||
{
|
{
|
||||||
@ -102,9 +80,6 @@ static int avic_set_irq_fiq(unsigned int irq, unsigned int type)
|
|||||||
|
|
||||||
|
|
||||||
static struct mxc_extra_irq avic_extra_irq = {
|
static struct mxc_extra_irq avic_extra_irq = {
|
||||||
#ifdef CONFIG_MXC_IRQ_PRIOR
|
|
||||||
.set_priority = avic_irq_set_priority,
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_FIQ
|
#ifdef CONFIG_FIQ
|
||||||
.set_irq_fiq = avic_set_irq_fiq,
|
.set_irq_fiq = avic_set_irq_fiq,
|
||||||
#endif
|
#endif
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
struct mxc_extra_irq
|
struct mxc_extra_irq
|
||||||
{
|
{
|
||||||
int (*set_priority)(unsigned char irq, unsigned char prio);
|
|
||||||
int (*set_irq_fiq)(unsigned int irq, unsigned int type);
|
int (*set_irq_fiq)(unsigned int irq, unsigned int type);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user