1mod pci_bridge;
6mod pcie_device;
7mod pcie_host;
8mod pcie_port;
9mod pcie_rp;
10mod pcie_switch;
11
12pub use pci_bridge::PciBridge;
13pub use pcie_host::PcieHostPort;
14pub use pcie_rp::PcieRootPort;
15pub use pcie_switch::PcieDownstreamPort;
16pub use pcie_switch::PcieUpstreamPort;
17
18#[allow(dead_code)]
19#[derive(Clone, Copy, Eq, PartialEq)]
20pub enum PcieDevicePortType {
21 PcieEndpoint = 0,
22 PcieLegacyEndpoint = 1,
23 RootPort = 4,
24 UpstreamPort = 5,
25 DownstreamPort = 6,
26 Pcie2PciBridge = 7,
27 Pci2PcieBridge = 8,
28 RCIntegratedEndpoint = 9,
29 RCEventCollector = 0xa,
30}
31
32const PCIE_CAP_LEN: usize = 0x3C;
33
34const PCIE_CAP_VERSION: u16 = 0x2;
35const PCIE_TYPE_SHIFT: u16 = 0x4;
36const PCIE_CAP_SLOT_SHIFT: u16 = 0x8;
37const PCIE_CAP_IRQ_NUM_SHIFT: u16 = 0x9;
38
39const PCIE_DEVCAP_RBER: u32 = 0x0000_8000;
40const PCIE_LINK_X1: u16 = 0x10;
41const PCIE_LINK_2_5GT: u16 = 0x01;
42
43const PCIE_SLTCAP_ABP: u32 = 0x01; const PCIE_SLTCAP_AIP: u32 = 0x08; const PCIE_SLTCAP_PIP: u32 = 0x10; const PCIE_SLTCAP_HPS: u32 = 0x20; const PCIE_SLTCAP_HPC: u32 = 0x40; const PCIE_SLTCTL_OFFSET: usize = 0x18;
50const PCIE_SLTCTL_PIC: u16 = 0x300; const PCIE_SLTCTL_PIC_ON: u16 = 0x100; const PCIE_SLTCTL_PIC_BLINK: u16 = 0x200; const PCIE_SLTCTL_PIC_OFF: u16 = 0x300; const PCIE_SLTCTL_AIC_OFF: u16 = 0xC0;
55const PCIE_SLTCTL_ABPE: u16 = 0x01;
56const PCIE_SLTCTL_PDCE: u16 = 0x08;
57const PCIE_SLTCTL_CCIE: u16 = 0x10;
58const PCIE_SLTCTL_HPIE: u16 = 0x20;
59
60const PCIE_SLTSTA_OFFSET: usize = 0x1A;
61const PCIE_SLTSTA_ABP: u16 = 0x0001;
62const PCIE_SLTSTA_PFD: u16 = 0x0002;
63const PCIE_SLTSTA_PDC: u16 = 0x0008;
64const PCIE_SLTSTA_CC: u16 = 0x0010;
65const PCIE_SLTSTA_PDS: u16 = 0x0040;
66const PCIE_SLTSTA_DLLSC: u16 = 0x0100;
67
68const PCIE_ROOTCTL_OFFSET: usize = 0x1C;
69const PCIE_ROOTCTL_PME_ENABLE: u16 = 0x08;
70
71const PCIE_ROOTSTA_OFFSET: usize = 0x20;
72const PCIE_ROOTSTA_PME_REQ_ID_MASK: u32 = 0xFFFF;
73const PCIE_ROOTSTA_PME_STATUS: u32 = 0x10000;
74const PCIE_ROOTSTA_PME_PENDING: u32 = 0x20000;