2012-03-30 11:47:00 -07:00
/*
* Copyright ( C ) 2012 Advanced Micro Devices , Inc .
* Author : Joerg Roedel < joerg . roedel @ amd . com >
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
* This header file contains the interface of the interrupt remapping code to
* the x86 interrupt management code .
*/
2012-03-30 11:47:08 -07:00
# ifndef __X86_IRQ_REMAPPING_H
# define __X86_IRQ_REMAPPING_H
2012-03-30 11:47:00 -07:00
2012-05-08 00:08:52 -07:00
# include <asm/io_apic.h>
2012-03-30 11:47:00 -07:00
2013-04-19 20:34:55 +02:00
struct IO_APIC_route_entry ;
struct io_apic_irq_attr ;
struct irq_chip ;
struct msi_msg ;
struct pci_dev ;
struct irq_cfg ;
2012-05-08 00:08:52 -07:00
# ifdef CONFIG_IRQ_REMAP
2012-03-30 11:47:02 -07:00
2013-04-16 16:38:32 -04:00
extern void set_irq_remapping_broken ( void ) ;
2012-03-30 11:47:07 -07:00
extern int irq_remapping_prepare ( void ) ;
extern int irq_remapping_enable ( void ) ;
extern void irq_remapping_disable ( void ) ;
extern int irq_remapping_reenable ( int ) ;
extern int irq_remap_enable_fault_handling ( void ) ;
extern int setup_ioapic_remapped_entry ( int irq ,
struct IO_APIC_route_entry * entry ,
unsigned int destination ,
int vector ,
struct io_apic_irq_attr * attr ) ;
extern void free_remapped_irq ( int irq ) ;
extern void compose_remapped_msi_msg ( struct pci_dev * pdev ,
unsigned int irq , unsigned int dest ,
struct msi_msg * msg , u8 hpet_id ) ;
extern int setup_hpet_msi_remapped ( unsigned int irq , unsigned int id ) ;
2012-09-26 12:44:41 +02:00
extern void panic_if_irq_remap ( const char * msg ) ;
2012-09-26 12:44:48 +02:00
extern bool setup_remapped_irq ( int irq ,
struct irq_cfg * cfg ,
struct irq_chip * chip ) ;
2012-03-30 11:47:00 -07:00
2012-09-26 12:44:45 +02:00
void irq_remap_modify_chip_defaults ( struct irq_chip * chip ) ;
2012-03-30 11:47:00 -07:00
# else /* CONFIG_IRQ_REMAP */
2013-04-16 16:38:32 -04:00
static inline void set_irq_remapping_broken ( void ) { }
2012-03-30 11:47:07 -07:00
static inline int irq_remapping_prepare ( void ) { return - ENODEV ; }
static inline int irq_remapping_enable ( void ) { return - ENODEV ; }
static inline void irq_remapping_disable ( void ) { }
static inline int irq_remapping_reenable ( int eim ) { return - ENODEV ; }
static inline int irq_remap_enable_fault_handling ( void ) { return - ENODEV ; }
static inline int setup_ioapic_remapped_entry ( int irq ,
struct IO_APIC_route_entry * entry ,
unsigned int destination ,
int vector ,
struct io_apic_irq_attr * attr )
2012-03-30 11:47:02 -07:00
{
return - ENODEV ;
}
2012-03-30 11:47:07 -07:00
static inline void free_remapped_irq ( int irq ) { }
static inline void compose_remapped_msi_msg ( struct pci_dev * pdev ,
unsigned int irq , unsigned int dest ,
struct msi_msg * msg , u8 hpet_id )
2012-03-30 11:47:05 -07:00
{
}
2012-03-30 11:47:07 -07:00
static inline int setup_hpet_msi_remapped ( unsigned int irq , unsigned int id )
2012-03-30 11:47:05 -07:00
{
return - ENODEV ;
}
2012-09-26 12:44:41 +02:00
static inline void panic_if_irq_remap ( const char * msg )
{
}
2012-09-26 12:44:45 +02:00
static inline void irq_remap_modify_chip_defaults ( struct irq_chip * chip )
{
}
2012-09-26 12:44:48 +02:00
static inline bool setup_remapped_irq ( int irq ,
struct irq_cfg * cfg ,
struct irq_chip * chip )
{
return false ;
}
2012-03-30 11:47:00 -07:00
# endif /* CONFIG_IRQ_REMAP */
2015-04-13 14:11:29 +08:00
extern int dmar_alloc_hwirq ( void ) ;
extern void dmar_free_hwirq ( int irq ) ;
2014-05-07 15:44:11 +00:00
2012-03-30 11:47:08 -07:00
# endif /* __X86_IRQ_REMAPPING_H */