~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/usb/webusb.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0+ */
  2 /*
  3  * WebUSB descriptors and constants
  4  *
  5  * Copyright (C) 2023 Jó Ágila Bitsch <jgilab@gmail.com>
  6  */
  7 
  8 #ifndef __LINUX_USB_WEBUSB_H
  9 #define __LINUX_USB_WEBUSB_H
 10 
 11 #include "uapi/linux/usb/ch9.h"
 12 
 13 /*
 14  * Little Endian PlatformCapablityUUID for WebUSB
 15  * 3408b638-09a9-47a0-8bfd-a0768815b665
 16  * to identify Platform Device Capability descriptors as referring to WebUSB.
 17  */
 18 #define WEBUSB_UUID \
 19         GUID_INIT(0x3408b638, 0x09a9, 0x47a0, 0x8b, 0xfd, 0xa0, 0x76, 0x88, 0x15, 0xb6, 0x65)
 20 
 21 /*
 22  * WebUSB Platform Capability data
 23  *
 24  * A device announces support for the
 25  * WebUSB command set by including the following Platform Descriptor Data in its
 26  * Binary Object Store associated with the WebUSB_UUID above.
 27  * See: https://wicg.github.io/webusb/#webusb-platform-capability-descriptor
 28  */
 29 struct usb_webusb_cap_data {
 30         __le16 bcdVersion;
 31 #define WEBUSB_VERSION_1_00     cpu_to_le16(0x0100) /* currently only version 1.00 is defined */
 32         u8  bVendorCode;
 33         u8  iLandingPage;
 34 #define WEBUSB_LANDING_PAGE_NOT_PRESENT 0
 35 #define WEBUSB_LANDING_PAGE_PRESENT     1 /* we chose the fixed index 1 for the URL descriptor */
 36 } __packed;
 37 
 38 #define USB_WEBUSB_CAP_DATA_SIZE        4
 39 
 40 /*
 41  * Get URL Request
 42  *
 43  * The request to fetch an URL is defined in https://wicg.github.io/webusb/#get-url as:
 44  * bmRequestType: (USB_DIR_IN | USB_TYPE_VENDOR) = 11000000B
 45  * bRequest: bVendorCode
 46  * wValue: iLandingPage
 47  * wIndex: GET_URL = 2
 48  * wLength: Descriptor Length (typically U8_MAX = 255)
 49  * Data: URL Descriptor
 50  */
 51 #define WEBUSB_GET_URL 2
 52 
 53 /*
 54  * This descriptor contains a single URL and is returned by the Get URL request.
 55  *
 56  * See: https://wicg.github.io/webusb/#url-descriptor
 57  */
 58 struct webusb_url_descriptor {
 59         u8  bLength;
 60 #define WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH     3
 61         u8  bDescriptorType;
 62 #define WEBUSB_URL_DESCRIPTOR_TYPE              3
 63         u8  bScheme;
 64 #define WEBUSB_URL_SCHEME_HTTP                  0
 65 #define WEBUSB_URL_SCHEME_HTTPS                 1
 66 #define WEBUSB_URL_SCHEME_NONE                  255
 67         u8  URL[U8_MAX - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH];
 68 } __packed;
 69 
 70 /*
 71  * Buffer size to hold the longest URL that can be in an URL descriptor
 72  *
 73  * The descriptor can be U8_MAX  bytes long.
 74  * WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH bytes are used for a header.
 75  * Since the longest prefix that might be stripped is "https://", we may accommodate an additional
 76  * 8 bytes.
 77  */
 78 #define WEBUSB_URL_RAW_MAX_LENGTH (U8_MAX - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + 8)
 79 
 80 #endif /* __LINUX_USB_USBNET_H */
 81 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php