mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 10:44:23 +08:00
f365355e65
Some PWRficient-based boards have a NMI button that's wired up to a GPIO as interrupt source. By configuring the openpic accordingly, these get delivered as a machine check with high priority, instead of as an external interrupt. The device tree contains a property "nmi-source" in the openpic node for these systems, and it's the (hwirq) source for the input. Also, for these interrupts, the IACK is read from another register than the regular (MCACK instead), but they are EOI'd as usual. So implement said function for the mpic driver. Finally, move a couple of external function defines to include/ instead of local under sysdev. Being able to mask/unmask and eoi directly saves us from setting up a dummy irq handler that will never be called. Signed-off-by: Olof Johansson <olof@lixom.net>
44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
#ifndef _POWERPC_SYSDEV_MPIC_H
|
|
#define _POWERPC_SYSDEV_MPIC_H
|
|
|
|
/*
|
|
* Copyright 2006-2007, Michael Ellerman, IBM Corporation.
|
|
*
|
|
* 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; version 2 of the
|
|
* License.
|
|
*
|
|
*/
|
|
|
|
#ifdef CONFIG_PCI_MSI
|
|
extern void mpic_msi_reserve_hwirq(struct mpic *mpic, irq_hw_number_t hwirq);
|
|
extern int mpic_msi_init_allocator(struct mpic *mpic);
|
|
extern irq_hw_number_t mpic_msi_alloc_hwirqs(struct mpic *mpic, int num);
|
|
extern void mpic_msi_free_hwirqs(struct mpic *mpic, int offset, int num);
|
|
extern int mpic_u3msi_init(struct mpic *mpic);
|
|
extern int mpic_pasemi_msi_init(struct mpic *mpic);
|
|
#else
|
|
static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
|
|
irq_hw_number_t hwirq)
|
|
{
|
|
return;
|
|
}
|
|
|
|
static inline int mpic_u3msi_init(struct mpic *mpic)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static inline int mpic_pasemi_msi_init(struct mpic *mpic)
|
|
{
|
|
return -1;
|
|
}
|
|
#endif
|
|
|
|
extern int mpic_set_irq_type(unsigned int virq, unsigned int flow_type);
|
|
extern void mpic_set_vector(unsigned int virq, unsigned int vector);
|
|
extern void mpic_set_affinity(unsigned int irq, cpumask_t cpumask);
|
|
|
|
#endif /* _POWERPC_SYSDEV_MPIC_H */
|