1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2021 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker mod pci_bridge; 6*bb4ee6a4SAndroid Build Coastguard Worker mod pcie_device; 7*bb4ee6a4SAndroid Build Coastguard Worker mod pcie_host; 8*bb4ee6a4SAndroid Build Coastguard Worker mod pcie_port; 9*bb4ee6a4SAndroid Build Coastguard Worker mod pcie_rp; 10*bb4ee6a4SAndroid Build Coastguard Worker mod pcie_switch; 11*bb4ee6a4SAndroid Build Coastguard Worker 12*bb4ee6a4SAndroid Build Coastguard Worker pub use pci_bridge::PciBridge; 13*bb4ee6a4SAndroid Build Coastguard Worker pub use pcie_host::PcieHostPort; 14*bb4ee6a4SAndroid Build Coastguard Worker pub use pcie_rp::PcieRootPort; 15*bb4ee6a4SAndroid Build Coastguard Worker pub use pcie_switch::PcieDownstreamPort; 16*bb4ee6a4SAndroid Build Coastguard Worker pub use pcie_switch::PcieUpstreamPort; 17*bb4ee6a4SAndroid Build Coastguard Worker 18*bb4ee6a4SAndroid Build Coastguard Worker #[allow(dead_code)] 19*bb4ee6a4SAndroid Build Coastguard Worker #[derive(Clone, Copy, Eq, PartialEq)] 20*bb4ee6a4SAndroid Build Coastguard Worker pub enum PcieDevicePortType { 21*bb4ee6a4SAndroid Build Coastguard Worker PcieEndpoint = 0, 22*bb4ee6a4SAndroid Build Coastguard Worker PcieLegacyEndpoint = 1, 23*bb4ee6a4SAndroid Build Coastguard Worker RootPort = 4, 24*bb4ee6a4SAndroid Build Coastguard Worker UpstreamPort = 5, 25*bb4ee6a4SAndroid Build Coastguard Worker DownstreamPort = 6, 26*bb4ee6a4SAndroid Build Coastguard Worker Pcie2PciBridge = 7, 27*bb4ee6a4SAndroid Build Coastguard Worker Pci2PcieBridge = 8, 28*bb4ee6a4SAndroid Build Coastguard Worker RCIntegratedEndpoint = 9, 29*bb4ee6a4SAndroid Build Coastguard Worker RCEventCollector = 0xa, 30*bb4ee6a4SAndroid Build Coastguard Worker } 31*bb4ee6a4SAndroid Build Coastguard Worker 32*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_CAP_LEN: usize = 0x3C; 33*bb4ee6a4SAndroid Build Coastguard Worker 34*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_CAP_VERSION: u16 = 0x2; 35*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_TYPE_SHIFT: u16 = 0x4; 36*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_CAP_SLOT_SHIFT: u16 = 0x8; 37*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_CAP_IRQ_NUM_SHIFT: u16 = 0x9; 38*bb4ee6a4SAndroid Build Coastguard Worker 39*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_DEVCAP_RBER: u32 = 0x0000_8000; 40*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_LINK_X1: u16 = 0x10; 41*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_LINK_2_5GT: u16 = 0x01; 42*bb4ee6a4SAndroid Build Coastguard Worker 43*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCAP_ABP: u32 = 0x01; // Attention Button Present 44*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCAP_AIP: u32 = 0x08; // Attention Indicator Present 45*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCAP_PIP: u32 = 0x10; // Power Indicator Present 46*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCAP_HPS: u32 = 0x20; // Hot-Plug Surprise 47*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCAP_HPC: u32 = 0x40; // Hot-Plug Capable 48*bb4ee6a4SAndroid Build Coastguard Worker 49*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_OFFSET: usize = 0x18; 50*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_PIC: u16 = 0x300; // Power indicator 51*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_PIC_ON: u16 = 0x100; // Power indicator on 52*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_PIC_BLINK: u16 = 0x200; // Power indicator blink 53*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_PIC_OFF: u16 = 0x300; // Power indicator off 54*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_AIC_OFF: u16 = 0xC0; 55*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_ABPE: u16 = 0x01; 56*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_PDCE: u16 = 0x08; 57*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_CCIE: u16 = 0x10; 58*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTCTL_HPIE: u16 = 0x20; 59*bb4ee6a4SAndroid Build Coastguard Worker 60*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_OFFSET: usize = 0x1A; 61*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_ABP: u16 = 0x0001; 62*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_PFD: u16 = 0x0002; 63*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_PDC: u16 = 0x0008; 64*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_CC: u16 = 0x0010; 65*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_PDS: u16 = 0x0040; 66*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_SLTSTA_DLLSC: u16 = 0x0100; 67*bb4ee6a4SAndroid Build Coastguard Worker 68*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTCTL_OFFSET: usize = 0x1C; 69*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTCTL_PME_ENABLE: u16 = 0x08; 70*bb4ee6a4SAndroid Build Coastguard Worker 71*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTSTA_OFFSET: usize = 0x20; 72*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTSTA_PME_REQ_ID_MASK: u32 = 0xFFFF; 73*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTSTA_PME_STATUS: u32 = 0x10000; 74*bb4ee6a4SAndroid Build Coastguard Worker const PCIE_ROOTSTA_PME_PENDING: u32 = 0x20000; 75