blob: 46692dc2ead579eef8ab7e9b5a55321b9bb0315d [file] [log] [blame]
// Copyright 2016 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.
#pragma once
#include <ddk/device.h>
#include <ddk/protocol/pciroot.h>
#include <zircon/types.h>
typedef struct kpci_device {
zx_device_t* zxdev;
// only set for non-shadow devices
pciroot_protocol_t pciroot;
// only set for shadow devices
zx_handle_t pciroot_rpcch;
// kernel pci handle, only set for shadow devices
zx_handle_t handle;
// nth device index
uint32_t index;
zx_pcie_device_info_t info;
} kpci_device_t;
typedef enum {
PCI_OP_GET_AUXDATA,
PCI_OP_MAX,
} pci_op_t;
extern _Atomic zx_txid_t pci_global_txid;
#define PCI_MAX_DATA 4096
typedef struct {
zx_txid_t txid; // FIDL2 message header
uint32_t reserved0;
uint32_t flags;
uint32_t ordinal;
uint32_t datalen;
uint8_t data[PCI_MAX_DATA];
} pci_msg_t;