// Copyright 2018 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 SYSROOT_ZIRCON_HW_PCI_H_
#define SYSROOT_ZIRCON_HW_PCI_H_

#include <stdint.h>
#include <zircon/compiler.h>

__BEGIN_CDECLS

// Structure for passing around PCI address information
typedef struct pci_bdf {
  uint8_t bus_id;
  uint8_t device_id;
  uint8_t function_id;
} pci_bdf_t;

// TODO(cja): This header is used for the transition of these defines from
// kernel to userspace, but due to pci_bdf_t some of the kernel includes it.
// Make sure defines here don't clash with those in pci_common.h by having this
// guard, but remove it after the transition.
#ifndef WITH_KERNEL_PCIE

#define PCI_MAX_BUSES (256u)
#define PCI_MAX_DEVICES_PER_BUS (32u)
#define PCI_MAX_FUNCTIONS_PER_DEVICE (8u)
#define PCI_MAX_FUNCTIONS_PER_BUS (PCI_MAX_DEVICES_PER_BUS * PCI_MAX_FUNCTIONS_PER_DEVICE)

#define PCI_STANDARD_CONFIG_HDR_SIZE (64u)
#define PCI_BASE_CONFIG_SIZE (256u)
#define PCIE_EXTENDED_CONFIG_SIZE (4096u)
#define PCIE_ECAM_BYTES_PER_BUS (PCIE_EXTENDED_CONFIG_SIZE * PCI_MAX_FUNCTIONS_PER_BUS)

#define PCI_BAR_REGS_PER_BRIDGE (2u)
#define PCI_BAR_REGS_PER_DEVICE (6u)
#define PCI_MAX_BAR_REGS (6u)

#define PCI_MAX_LEGACY_IRQ_PINS (4u)
#define PCI_MAX_MSI_IRQS (32u)
#define PCIE_MAX_MSIX_IRQS (2048u)

#define PCI_INVALID_VENDOR_ID (0xFFFF)

#endif  // WITH_KERNEL_PCIE

__END_CDECLS

#endif  // SYSROOT_ZIRCON_HW_PCI_H_
