2021-01-22 19:29:04 +00:00
/* SPDX-License-Identifier: MIT */
2019-08-11 22:06:33 +01:00
/*
* Copyright © 2019 Intel Corporation
*/
# ifndef INTEL_GT_IRQ_H
# define INTEL_GT_IRQ_H
# include <linux/types.h>
2021-05-21 11:32:15 -07:00
# include "intel_engine_types.h"
2019-08-11 22:06:33 +01:00
struct intel_gt ;
# define GEN8_GT_IRQS (GEN8_GT_RCS_IRQ | \
GEN8_GT_BCS_IRQ | \
GEN8_GT_VCS0_IRQ | \
GEN8_GT_VCS1_IRQ | \
GEN8_GT_VECS_IRQ | \
GEN8_GT_PM_IRQ | \
GEN8_GT_GUC_IRQ )
void gen11_gt_irq_reset ( struct intel_gt * gt ) ;
void gen11_gt_irq_postinstall ( struct intel_gt * gt ) ;
void gen11_gt_irq_handler ( struct intel_gt * gt , const u32 master_ctl ) ;
bool gen11_gt_reset_one_iir ( struct intel_gt * gt ,
const unsigned int bank ,
const unsigned int bit ) ;
void gen5_gt_irq_handler ( struct intel_gt * gt , u32 gt_iir ) ;
void gen5_gt_irq_postinstall ( struct intel_gt * gt ) ;
void gen5_gt_irq_reset ( struct intel_gt * gt ) ;
void gen5_gt_disable_irq ( struct intel_gt * gt , u32 mask ) ;
void gen5_gt_enable_irq ( struct intel_gt * gt , u32 mask ) ;
void gen6_gt_irq_handler ( struct intel_gt * gt , u32 gt_iir ) ;
2020-01-27 23:15:36 +00:00
void gen8_gt_irq_handler ( struct intel_gt * gt , u32 master_ctl ) ;
2019-08-11 22:06:33 +01:00
void gen8_gt_irq_reset ( struct intel_gt * gt ) ;
void gen8_gt_irq_postinstall ( struct intel_gt * gt ) ;
2021-05-21 11:32:15 -07:00
static inline void intel_engine_cs_irq ( struct intel_engine_cs * engine , u16 iir )
{
if ( iir )
engine - > irq_handler ( engine , iir ) ;
}
static inline void
intel_engine_set_irq_handler ( struct intel_engine_cs * engine ,
void ( * fn ) ( struct intel_engine_cs * engine ,
u16 iir ) )
{
/*
* As the interrupt is live as allocate and setup the engines ,
* err on the side of caution and apply barriers to updating
* the irq handler callback . This assures that when we do use
* the engine , we will receive interrupts only to ourselves ,
* and not lose any .
*/
smp_store_mb ( engine - > irq_handler , fn ) ;
}
2019-08-11 22:06:33 +01:00
# endif /* INTEL_GT_IRQ_H */