Add firmware for the ATUSB IEEE 802.15.4 USB Adapter
[linux-libre-firmware.git] / atusb / descr.c
diff --git a/atusb/descr.c b/atusb/descr.c
new file mode 100644 (file)
index 0000000..f96b0ee
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * fw/descr.c - USB descriptors
+ *
+ * Written 2008-2011, 2014 by Werner Almesberger
+ * Copyright 2008-2011, 2014 Werner Almesberger
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+
+#include "usb.h"
+#include "dfu.h"
+#include "board.h"
+
+
+#define LE(x) ((uint16_t) (x) & 0xff), ((uint16_t) (x) >> 8)
+
+/*
+ * Device descriptor
+ */
+
+const uint8_t device_descriptor[18] = {
+       18,                     /* bLength */
+       USB_DT_DEVICE,          /* bDescriptorType */
+       LE(0x200),              /* bcdUSB */
+       USB_CLASS_VENDOR_SPEC,  /* bDeviceClass */
+       0x00,                   /* bDeviceSubClass */
+       0x00,                   /* bDeviceProtocol */
+       EP0_SIZE,               /* bMaxPacketSize */
+       LE(USB_VENDOR),         /* idVendor */
+       LE(USB_PRODUCT),        /* idProduct */
+       LE(0x0001),             /* bcdDevice */
+       0,                      /* iManufacturer */
+       0,                      /* iProduct */
+#ifdef HAS_BOARD_SERNUM
+       1,                      /* iSerialNumber */
+#else
+       0,                      /* iSerialNumber */
+#endif
+       1                       /* bNumConfigurations */
+};
+
+
+/*
+ * Our configuration
+ *
+ * We're always bus-powered.
+ */
+
+const uint8_t config_descriptor[] = {
+       9,                      /* bLength */
+       USB_DT_CONFIG,          /* bDescriptorType */
+#if 0
+       LE(9+9+7+7),            /* wTotalLength */
+#else
+       LE(9+9+7+9),            /* wTotalLength */
+#endif
+       2,                      /* bNumInterfaces */
+       1,                      /* bConfigurationValue (> 0 !) */
+       0,                      /* iConfiguration */
+       USB_ATTR_BUS_POWERED,   /* bmAttributes */
+       ((BOARD_MAX_mA)+1)/2,   /* bMaxPower */
+
+       /* Interface #0 */
+
+       9,                      /* bLength */
+       USB_DT_INTERFACE,       /* bDescriptorType */
+       0,                      /* bInterfaceNumber */
+       0,                      /* bAlternateSetting */
+       1,                      /* bNumEndpoints */
+       USB_CLASS_VENDOR_SPEC,  /* bInterfaceClass */
+       0,                      /* bInterfaceSubClass */
+       0,                      /* bInterfaceProtocol */
+       0,                      /* iInterface */
+
+#if 0
+       /* EP OUT */
+
+       7,                      /* bLength */
+       USB_DT_ENDPOINT,        /* bDescriptorType */
+       0x01,                   /* bEndPointAddress */
+       0x02,                   /* bmAttributes (bulk) */
+       LE(EP1_SIZE),           /* wMaxPacketSize */
+       0,                      /* bInterval */
+#endif
+
+#if 1
+       /* EP IN */
+
+       7,                      /* bLength */
+       USB_DT_ENDPOINT,        /* bDescriptorType */
+       0x81,                   /* bEndPointAddress */
+       0x02,                   /* bmAttributes (bulk) */
+       LE(EP1_SIZE),           /* wMaxPacketSize */
+       0,                      /* bInterval */
+#endif
+
+       /* Interface #1 */
+
+       DFU_ITF_DESCR(1, 0, dfu_proto_runtime, 0)
+};