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

extend uint fuchsia.BIND_PROTOCOL {
  BUS = 84,
  DEVICE = 85,
};

// NOTE(fxbug.dev/66206): Don't add more definitions here. Instead create a new
// bind library with the top-level namespace "fuchsia", use the name of the
// device vendor as the second level, and the name of the library should be
// "platform". For example, "fuchsia.realtek.platform".
extend uint fuchsia.BIND_PLATFORM_DEV_VID {
  GENERIC = 0,
  QEMU = 1,
};

extend uint fuchsia.BIND_PLATFORM_DEV_DID {
  KPCI = 0x03,
  USB_DWC2 = 0x05,
  RTC_PL031 = 0x06,
  GPIO_TEST = 0x08,
  OPTEE = 0x0E,
  ETH_MAC = 0x10,
  HID_BUTTONS = 0x13,
  FAKE_DISPLAY = 0x16,
  FOCALTOUCH = 0x17,
  GPIO_LIGHT = 0x1C,
  CPU_TRACE = 0x1D,
  XHCI = 0x1F,
  SSD1306 = 0x20,
  OT_RADIO = 0x23,
  POWER_DOMAIN_COMPOSITE = 0x27,
  PWM_VREG = 0x2B,
  FUSB302 = 0x2C,
  RAM_DISK = 0x2D,
  RAM_NAND = 0x2E,
  VIRTUAL_AUDIO = 0x2F,
  BT_HCI_EMULATOR = 0x30,
};

extend uint fuchsia.BIND_PLATFORM_DEV_PID {
  GENERIC = 0,
  QEMU = 1,
};
