Skip to main content

rdif_def/
irq.rs

1custom_type!(
2    #[doc = "Hardware Interrupt ID"],
3    IrqId, usize, "{:#x}");
4
5/// The trigger configuration for an interrupt.
6#[derive(Copy, Clone, Debug, Eq, PartialEq)]
7pub enum Trigger {
8    EdgeBoth,
9    EdgeRising,
10    EdgeFailling,
11    LevelHigh,
12    LevelLow,
13}
14
15/// The configuration for setup an interrupt.
16#[derive(Debug, Clone)]
17pub struct IrqConfig {
18    pub irq: IrqId,
19    pub trigger: Trigger,
20    /// Is cpu private interrupt?
21    pub is_private: bool,
22}
23
24#[derive(Debug, Clone, Copy, PartialEq, Eq)]
25pub enum AcpiIrqTrigger {
26    Edge,
27    Level,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
31pub enum AcpiIrqPolarity {
32    ActiveHigh,
33    ActiveLow,
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub enum AcpiGsiController {
38    IoApic,
39    PchPic,
40}
41
42#[derive(Debug, Clone, Copy, PartialEq, Eq)]
43pub struct AcpiGsiRoute {
44    pub gsi: u32,
45    pub vector: usize,
46    pub controller: AcpiGsiController,
47    pub controller_id: u16,
48    pub controller_address: u64,
49    pub controller_input: u8,
50    pub trigger: AcpiIrqTrigger,
51    pub polarity: AcpiIrqPolarity,
52}