uboot/include/usbroothubdes.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * USB virtual root hub descriptors
   4 *
   5 * (C) Copyright 2014
   6 * Stephen Warren swarren@wwwdotorg.org
   7 *
   8 * Based on ohci-hcd.c
   9 */
  10
  11#ifndef __USBROOTHUBDES_H__
  12#define __USBROOTHUBDES_H__
  13
  14/* Device descriptor */
  15static __u8 root_hub_dev_des[] = {
  16        0x12,           /* __u8  bLength; */
  17        0x01,           /* __u8  bDescriptorType; Device */
  18        0x10,           /* __u16 bcdUSB; v1.1 */
  19        0x01,
  20        0x09,           /* __u8  bDeviceClass; HUB_CLASSCODE */
  21        0x00,           /* __u8  bDeviceSubClass; */
  22        0x00,           /* __u8  bDeviceProtocol; */
  23        0x08,           /* __u8  bMaxPacketSize0; 8 Bytes */
  24        0x00,           /* __u16 idVendor; */
  25        0x00,
  26        0x00,           /* __u16 idProduct; */
  27        0x00,
  28        0x00,           /* __u16 bcdDevice; */
  29        0x00,
  30        0x00,           /* __u8  iManufacturer; */
  31        0x01,           /* __u8  iProduct; */
  32        0x00,           /* __u8  iSerialNumber; */
  33        0x01,           /* __u8  bNumConfigurations; */
  34};
  35
  36/* Configuration descriptor */
  37static __u8 root_hub_config_des[] = {
  38        0x09,           /* __u8  bLength; */
  39        0x02,           /* __u8  bDescriptorType; Configuration */
  40        0x19,           /* __u16 wTotalLength; */
  41        0x00,
  42        0x01,           /* __u8  bNumInterfaces; */
  43        0x01,           /* __u8  bConfigurationValue; */
  44        0x00,           /* __u8  iConfiguration; */
  45        0x40,           /* __u8  bmAttributes;
  46                         *       Bit 7: Bus-powered
  47                         *       6: Self-powered,
  48                         *       5 Remote-wakwup,
  49                         *       4..0: resvd
  50                         */
  51        0x00,           /* __u8  MaxPower; */
  52        /* interface */
  53        0x09,           /* __u8  if_bLength; */
  54        0x04,           /* __u8  if_bDescriptorType; Interface */
  55        0x00,           /* __u8  if_bInterfaceNumber; */
  56        0x00,           /* __u8  if_bAlternateSetting; */
  57        0x01,           /* __u8  if_bNumEndpoints; */
  58        0x09,           /* __u8  if_bInterfaceClass; HUB_CLASSCODE */
  59        0x00,           /* __u8  if_bInterfaceSubClass; */
  60        0x00,           /* __u8  if_bInterfaceProtocol; */
  61        0x00,           /* __u8  if_iInterface; */
  62        /* endpoint */
  63        0x07,           /* __u8  ep_bLength; */
  64        0x05,           /* __u8  ep_bDescriptorType; Endpoint */
  65        0x81,           /* __u8  ep_bEndpointAddress; IN Endpoint 1 */
  66        0x03,           /* __u8  ep_bmAttributes; Interrupt */
  67        0x02,           /* __u16 ep_wMaxPacketSize; ((MAX_ROOT_PORTS + 1) / 8 */
  68        0x00,
  69        0xff,           /* __u8  ep_bInterval; 255 ms */
  70};
  71
  72#ifdef WANT_USB_ROOT_HUB_HUB_DES
  73static unsigned char root_hub_hub_des[] = {
  74        0x09,           /* __u8  bLength; */
  75        0x29,           /* __u8  bDescriptorType; Hub-descriptor */
  76        0x02,           /* __u8  bNbrPorts; */
  77        0x00,           /* __u16 wHubCharacteristics; */
  78        0x00,
  79        0x01,           /* __u8  bPwrOn2pwrGood; 2ms */
  80        0x00,           /* __u8  bHubContrCurrent; 0 mA */
  81        0x00,           /* __u8  DeviceRemovable; *** 7 Ports max *** */
  82        0xff,           /* __u8  PortPwrCtrlMask; *** 7 ports max *** */
  83};
  84#endif
  85
  86static unsigned char root_hub_str_index0[] = {
  87        0x04,           /* __u8  bLength; */
  88        0x03,           /* __u8  bDescriptorType; String-descriptor */
  89        0x09,           /* __u8  lang ID */
  90        0x04,           /* __u8  lang ID */
  91};
  92
  93static unsigned char root_hub_str_index1[] = {
  94        32,             /* __u8  bLength; */
  95        0x03,           /* __u8  bDescriptorType; String-descriptor */
  96        'U',            /* __u8  Unicode */
  97        0,              /* __u8  Unicode */
  98        '-',            /* __u8  Unicode */
  99        0,              /* __u8  Unicode */
 100        'B',            /* __u8  Unicode */
 101        0,              /* __u8  Unicode */
 102        'o',            /* __u8  Unicode */
 103        0,              /* __u8  Unicode */
 104        'o',            /* __u8  Unicode */
 105        0,              /* __u8  Unicode */
 106        't',            /* __u8  Unicode */
 107        0,              /* __u8  Unicode */
 108        ' ',            /* __u8  Unicode */
 109        0,              /* __u8  Unicode */
 110        'R',            /* __u8  Unicode */
 111        0,              /* __u8  Unicode */
 112        'o',            /* __u8  Unicode */
 113        0,              /* __u8  Unicode */
 114        'o',            /* __u8  Unicode */
 115        0,              /* __u8  Unicode */
 116        't',            /* __u8  Unicode */
 117        0,              /* __u8  Unicode */
 118        ' ',            /* __u8  Unicode */
 119        0,              /* __u8  Unicode */
 120        'H',            /* __u8  Unicode */
 121        0,              /* __u8  Unicode */
 122        'u',            /* __u8  Unicode */
 123        0,              /* __u8  Unicode */
 124        'b',            /* __u8  Unicode */
 125        0,              /* __u8  Unicode */
 126};
 127
 128#endif
 129