mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-28 10:45:22 +00:00
The BOS (Binary Device Object Store) descriptor was added to the USB
specification (3.0) to allow a richer set of device capability
specific descriptors.
The Billboard class is meant to expose (read-only) the status of USB
devices capable of alternate mode functions. It's required to use the
BOS descriptor type and at a high level looks like:
- BOS Device Descriptor (5bytes)
- Container ID Device Capability Descriptor (20bytes)
- Billboard Device Capability Descriptor (44byte + 4 * numSVIDs)
This CL adds:
1. Ability for Get Descriptor on BOS descriptors. Note hidden behind
CONFIG_USB_BOS as these descriptors change USB device requirements
to:
- bcdUSB >= 0201
- no interface descriptors
2. structures for all BOS, Container & Billboard descriptor elements
complete w/ CamelCase.
BRANCH=none
BUG=chrome-os-partner:32652
TEST=compiles with CONFIG_USB & CONFIG_USB_BOS enabled.
Change-Id: I1b24bc728f2ebba7d91840801d2ebe576e240e7c
Signed-off-by: Todd Broch <tbroch@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/221570
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*
|
|
* USB billboard definitions.
|
|
*/
|
|
|
|
#ifndef USB_BB_H
|
|
#define USB_BB_H
|
|
|
|
/* per Billboard Device Class Spec Revision 1.0 */
|
|
|
|
/* device descriptor fields */
|
|
#define USB_BB_BCDUSB_MIN 0x0201 /* v2.01 minimum */
|
|
#define USB_BB_SUBCLASS 0x00
|
|
#define USB_BB_PROTOCOL 0x00
|
|
#define USB_BB_EP0_PACKET_SIZE 8
|
|
#define USB_BB_CAP_DESC_TYPE 0x0d
|
|
|
|
|
|
#define USB_BB_CAPS_SVID_SIZE 4
|
|
struct usb_bb_caps_svid_descriptor {
|
|
uint16_t wSVID;
|
|
uint8_t bAlternateMode;
|
|
uint8_t iAlternateModeString;
|
|
} __packed;
|
|
|
|
#define USB_BB_CAPS_BASE_SIZE 44
|
|
struct usb_bb_caps_base_descriptor {
|
|
uint8_t bLength;
|
|
uint8_t bDescriptorType;
|
|
uint8_t bDevCapabilityType;
|
|
uint8_t iAdditionalInfoURL;
|
|
uint8_t bNumberOfAlternateModes;
|
|
uint8_t bPreferredAlternateMode;
|
|
uint16_t VconnPower;
|
|
uint8_t bmConfigured[32]; /* 2b per SVID w/ 128 SVIDs allowed. */
|
|
uint32_t bReserved; /* SBZ */
|
|
} __packed;
|
|
|
|
|
|
#define USB_BB_VCONN_PWRON(x) (x << 15)
|
|
#define USB_BB_VCONN_PWR_1W 0
|
|
#define USB_BB_VCONN_PWR_1p5W 1
|
|
#define USB_BB_VCONN_PWR_2W 2
|
|
#define USB_BB_VCONN_PWR_3W 3
|
|
#define USB_BB_VCONN_PWR_4W 4
|
|
#define USB_BB_VCONN_PWR_5W 5
|
|
#define USB_BB_VCONN_PWR_6W 6
|
|
/* Note, 7W (111b) is reserved */
|
|
|
|
|
|
#endif /* USB_BB_H */
|
|
|