//////////////////////////////////////////////////////////////////////////////// /// Copyright (c) 2018, Evan Lojewski /// All rights reserved. /// /// Redistribution and use in source and binary forms, with or without /// modification, are permitted provided that the following conditions are met: /// * Redistributions of source code must retain the above copyright /// notice, this list of conditions and the following disclaimer. /// * Redistributions in binary form must reproduce the above copyright /// notice, this list of conditions and the following disclaimer in the /// documentation and/or other materials provided with the distribution. /// * Neither the name of the nor the /// names of its contributors may be used to endorse or promote products /// derived from this software without specific prior written permission. /// /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND /// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED /// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE /// DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY /// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES /// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; /// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND /// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT /// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS /// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //////////////////////////////////////////////////////////////////////////////// #ifndef PCI_CONFIG_H #define PCI_CONFIG_H #include typedef struct { uint16_t vendor_id; uint16_t device_id; uint16_t command; uint16_t device; uint8_t revision_id; uint8_t prog_if; uint8_t subdevclass; uint8_t devclass; uint8_t cache_line_size; uint8_t latency_timer; uint8_t header_type; uint8_t BIST; uint32_t BAR[6]; uint32_t aus; uint16_t subsystem_vendor_id; uint16_t subsystem_id; uint32_t expansion_base; uint8_t capabilities; uint8_t rsvd[7]; uint8_t int_line; uint8_t int_pin; uint8_t min_grant; uint8_t max_latency; } __attribute__((packed)) pci_config_t; #endif