// Copyright 2021 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.
library fuchsia.hardware.syscalls.pci;

using zx;

// Defines and structures related to zx_pci_*()
// Info returned to dev manager for PCIe devices when probing.
type PcieDeviceInfo = struct {
    vendor_id uint16;
    device_id uint16;

    base_class uint8;
    sub_class uint8;
    program_interface uint8;
    revision_id uint8;

    bus_id uint8;
    dev_id uint8;
    func_id uint8;

    padding1 uint8;
};

type PciIrqMode = strict enum : uint8 {
    DISABLED = 0;
    LEGACY = 1;
    LEGACY_NOACK = 2;
    MSI = 3;
    MSI_X = 4;
};

type PciBar = resource struct {
    id uint32;
    type uint32;
    size uint64;
    address uint64;
    handle zx.handle:VMO;
};
