blob: 9e3c61f546e6f2ee43e8bb0c640ec86309ab2ec8 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_DEVICES_BUS_DRIVERS_PCI_CAPABILITIES_PCI_EXPRESS_H_
#define SRC_DEVICES_BUS_DRIVERS_PCI_CAPABILITIES_PCI_EXPRESS_H_
#include "../capabilities.h"
namespace pci {
class PciExpressCapability : public Capability {
public:
PciExpressCapability(const Config& cfg, uint8_t base)
: Capability(static_cast<uint8_t>(Capability::Id::kPciExpress), base),
pcie_capabilities_(PciReg16(static_cast<uint16_t>(base + 0x2))),
device_capabilities_(PciReg32(static_cast<uint16_t>(base + 0x4))),
device_control_(PciReg16(static_cast<uint16_t>(base + 0x8))),
device_status_(PciReg16(static_cast<uint16_t>(base + 0xA))) {}
private:
const PciReg16 pcie_capabilities_;
const PciReg32 device_capabilities_;
const PciReg16 device_control_;
const PciReg16 device_status_;
};
} // namespace pci
#endif // SRC_DEVICES_BUS_DRIVERS_PCI_CAPABILITIES_PCI_EXPRESS_H_