// 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.

library fuchsia.pci;

extend uint fuchsia.BIND_PROTOCOL {
  DEVICE = 31,
};

extend uint fuchsia.BIND_FIDL_PROTOCOL {
  DEVICE = 4,
};

extend uint fuchsia.BIND_PCI_VID {
  TEST = 0x0eff,
  AMD = 0x1002,
  REALTEK = 0x10ec,
  NVIDIA = 0x10de,
  GOOGLE = 0x1ae0,
  VIRTIO = 0x1af4,
  BROADCOM = 0x14e4,
  ATHEROS = 0x168c,
  INTEL = 0x8086,
};

extend uint fuchsia.BIND_PCI_DID {
  TEST = 0x0fff,
  VIRTIO_DEV_TYPE_NETWORK = 0x1041,
  VIRTIO_DEV_TYPE_BLOCK = 0x1042,
  VIRTIO_DEV_TYPE_BALLOON = 0x104d,
  VIRTIO_DEV_TYPE_CONSOLE = 0x1043,
  VIRTIO_DEV_TYPE_SCSI = 0x1048,
  VIRTIO_DEV_TYPE_ENTROPY = 0x1044,
  VIRTIO_DEV_TYPE_GPU = 0x1050,
  VIRTIO_DEV_TYPE_INPUT = 0x1052,
  VIRTIO_DEV_TYPE_SOCKET = 0x1053,
  VIRTIO_DEV_TYPE_T_NETWORK = 0x1000,
  VIRTIO_DEV_TYPE_T_BLOCK = 0x1001,
  VIRTIO_DEV_TYPE_T_BALLOON = 0x1002,
  VIRTIO_DEV_TYPE_T_CONSOLE = 0x1003,
  VIRTIO_DEV_TYPE_T_SCSI_HOST = 0x1004,
  VIRTIO_DEV_TYPE_T_ENTROPY = 0x1005,
  VIRTIO_DEV_TYPE_T_9P = 0x1009,
  RTL8111 = 0x8168,
  INTEL_SPT_SPI0 = 0x9d29,
  GOOGLE_GRAPHICS_ADAPTER = 0xa002,
};

extend uint fuchsia.BIND_PCI_CLASS {
  UNCLASSIFIED = 0x00,
  MASS_STORAGE = 0x01,
  NETWORK = 0x02,
  DISPLAY = 0x03,
  MULTIMEDIA = 0x04,
  MEMORY_CONTROLLER = 0x05,
  BRIDGE = 0x06,
  COMMUNICATION_CONTROLLER = 0x07,
  GENERIC_SYSTEM_PERIPHERAL = 0x08,
  INPUT_DEVICE_CONTROLLER = 0x09,
  DOCKING_STATION = 0x0a,
  PROCESSOR = 0x0b,
  SERIAL_BUS_CONTROLLER = 0x0c,
  WIRELESS_CONTROLLER = 0x0d,
  INTELLIGENT_CONTROLLER = 0x0e,
  SATELLITE_COMMUNICATIONS_CONTROLLER = 0x0f,
  ENCRYPTION_CONTROLLER = 0x10,
  SIGNAL_PROCESSING_CONTROLLER = 0x11,
  PROCESSING_ACCELERATORS = 0x12,
  NONESSENTIAL_INSTRUMENTATION = 0x13,
  COPROCESSOR = 0x40,
  UNASSIGNED = 0xff,
};

// TODO(fxb.dev/74834): Necessary to migrate PCI drivers from Simple device
// drivers to Composite device drivers.
extend uint fuchsia.BIND_PCI_COMPONENT {
  NOT_MIGRATED = 0, // Old style simple device.
  COMPONENT = 1, // Device for fragment to bind to.
  COMPOSITE = 2, // Composite device, child of device with COMPONENT.
};
