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 struct AcpiGsiRoute {
38    pub gsi: u32,
39    pub vector: usize,
40    pub controller_id: u8,
41    pub controller_address: u32,
42    pub controller_input: u8,
43    pub trigger: AcpiIrqTrigger,
44    pub polarity: AcpiIrqPolarity,
45}