blob: bc4197b7a5c05e4a6f8f1ffef819d61d9835b6ac [file] [log] [blame]
// 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.usb;
// TODO(fxb/62024): For now these protocol definitions are manually defined to match protodefs.h.
// Usually fuchsia.<namespace>.BIND_PROTOCOL.DEVICE would map to ZX_PROTOCOL_<namespace>, but in
// this case it maps to ZX_PROTOCOL_USB_DEVICE. This is because the USB protocol is implemented by
// two kinds of drivers: those that acquire an entire device (ZX_PROTOCOL_USB_DEVICE) and those
// acquire a single interface of the device (ZX_PROTOCOL_USB_INTERFACE). ZX_PROTOCOL_USB is still
// used for the banjo protocol for both kinds of drivers.
extend uint fuchsia.BIND_PROTOCOL {
DEVICE = 34,
BUS = 35,
COMPOSITE = 36,
DCI = 37,
INTERFACE = 38,
PERIPHERAL = 39,
FUNCTION = 40,
};
extend uint fuchsia.BIND_USB_VID {
FTDI = 0x0403,
CYPRESS = 0x04b4,
ASIX = 0x0b95,
REALTEK = 0x0bda,
ATHEROS = 0x0cf3,
SIERRA = 0x1199,
RALINK = 0x148f,
GOOGLE = 0x18d1,
INTEL = 0x8087,
};
extend uint fuchsia.BIND_USB_PID {
ASIX = 0x772B,
AX88179 = 0x1790,
};
// See https://www.usb.org/defined-class-codes
extend uint fuchsia.BIND_USB_CLASS {
AUDIO = 0x01,
COMM = 0x02,
HID = 0x03,
PHYSICAL = 0x05,
IMAGE = 0x06,
PRINTER = 0x07,
MASS_STORAGE = 0x08,
HUB = 0x09,
CDC_DATA = 0x10,
SMART_CARD = 0x0b,
CONTENT_SECURITY = 0x0d,
VIDEO = 0x0e,
PERSONAL_HEALTHCARE = 0x0f,
AUDIO_VIDEO = 0x10,
BILLBOARD = 0x11,
USB_C_BRIDGE = 0x12,
DIAGNOSTIC = 0xdc,
WIRELESS = 0xe0,
MISC = 0xef,
APPLICATION_SPECIFIC = 0xfe,
VENDOR_SPECIFIC = 0xff,
};
extend uint fuchsia.BIND_USB_SUBCLASS {
VIDEO_CONTROL = 0x01,
VIDEO_STREAMING = 0x02,
VIDEO_INTERFACE_COLLECTION = 0x03,
MISC_RNDIS = 0x04,
ETHERNET = 0x06,
};
extend uint fuchsia.BIND_USB_PROTOCOL {
UNDEFINED = 0x00,
MISC_RNDIS_ETHERNET = 0x01,
};