From d6e0e1c552fe83f6694acebf3a34e4b66a143e05 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 6 Sep 2014 13:13:13 -0700 Subject: [PATCH] greybus: add es1_ap_desc.c to describe the ES1 USB device descriptors --- drivers/staging/greybus/es1_ap_desc.c | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 drivers/staging/greybus/es1_ap_desc.c diff --git a/drivers/staging/greybus/es1_ap_desc.c b/drivers/staging/greybus/es1_ap_desc.c new file mode 100644 index 0000000..eec7349 --- /dev/null +++ b/drivers/staging/greybus/es1_ap_desc.c @@ -0,0 +1,63 @@ + +static const u8 es1_dev_descriptor[] = { + 0x12, /* __u8 bLength */ + 0x01, /* __u8 bDescriptorType; Device */ + 0x00, 0x02 /* __le16 bcdUSB v2.0 */ + 0x00, /* __u8 bDeviceClass */ + 0x00, /* __u8 bDeviceClass */ + 0x00, /* __u8 bDeviceSubClass; */ + 0x00, /* __u8 bDeviceProtocol; */ + 0x40, /* __u8 bMaxPacketSize0; 2^64 = 512 Bytes */ + + 0xff, 0xff, /* __le16 idVendor; 0xffff made up for now */ + 0x01, 0x00, /* __le16 idProduct; 0x0001 made up for now */ + 0x01, 0x00, /* __le16 bcdDevice; ES1 */ + + 0x03, /* __u8 iManufacturer; */ + 0x02, /* __u8 iProduct; */ + 0x01, /* __u8 iSerialNumber; */ + 0x01 /* __u8 bNumConfigurations; */ +}; + +static const u8 es1_config_descriptor[] = { + /* one configuration */ + 0x09, /* __u8 bLength; */ + 0x02, /* __u8 bDescriptorType; Configuration */ + 0x19, 0x00, /* __le16 wTotalLength; */ + 0x01, /* __u8 bNumInterfaces; (1) */ + 0x01, /* __u8 bConfigurationValue; */ + 0x00, /* __u8 iConfiguration; */ + 0xc0, /* __u8 bmAttributes; + Bit 7: must be set, + 6: Self-powered, + 5: Remote wakeup, + 4..0: resvd */ + 0x00, /* __u8 MaxPower; */ + + /* one interface */ + 0x09, /* __u8 if_bLength; */ + 0x04, /* __u8 if_bDescriptorType; Interface */ + 0x00, /* __u8 if_bInterfaceNumber; */ + 0x00, /* __u8 if_bAlternateSetting; */ + 0x02, /* __u8 if_bNumEndpoints; */ + 0xff, /* __u8 if_bInterfaceClass; Vendor-specific */ + 0xff, /* __u8 if_bInterfaceSubClass; Vendor-specific */ + 0xff, /* __u8 if_bInterfaceProtocol; Vendor-specific */ + 0x00, /* __u8 if_iInterface; */ + + /* two endpoints */ + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ + 0x02, /* __u8 ep_bmAttributes; Bulk */ + 0x40, 0x00, /* __le16 ep_wMaxPacketSize; 64??? */ + 0x00 /* __u8 ep_bInterval; */ + + 0x07, /* __u8 ep_bLength; */ + 0x05, /* __u8 ep_bDescriptorType; Endpoint */ + 0x02, /* __u8 ep_bEndpointAddress; Out Endpoint 2 */ + 0x02, /* __u8 ep_bmAttributes; Bulk */ + 0x40, 0x00, /* __le16 ep_wMaxPacketSize; 64??? */ + 0x00 /* __u8 ep_bInterval; */ + +}; -- 2.7.4