]> sigrok.org Git - sigrok-firmware-fx2lafw.git/commitdiff
scopes: Rename dscr_hantek_6022be.inc to dscr_scope.inc.
authorUwe Hermann <redacted>
Mon, 24 Apr 2017 13:04:09 +0000 (15:04 +0200)
committerUwe Hermann <redacted>
Sun, 17 Dec 2017 23:38:41 +0000 (00:38 +0100)
Makefile.am
hw/hantek-6022be/dscr.a51
hw/hantek-6022bl/dscr.a51
hw/sainsmart-dds120/dscr.a51
include/dscr_hantek_6022be.inc [deleted file]
include/dscr_scope.inc [new file with mode: 0644]

index 63967c3304225782d2ea60d1c061de3e3d5d65d9..e8d0abb20bc52619af9a0b195cd5d66476766810 100644 (file)
@@ -84,7 +84,7 @@ fx2lafw_objects = \
        gpif-acquisition.rel
 
 scope_headers = \
-       include/dscr_hantek_6022be.inc \
+       include/dscr_scope.inc \
        include/scope.inc \
        include/common.inc
 
@@ -310,9 +310,9 @@ hw/cypress-fx2/dscr.rel: hw/cypress-fx2/$(dirstamp) include/dscr.inc
 hw/saleae-logic/dscr.rel: hw/saleae-logic/$(dirstamp) include/dscr.inc
 hw/sigrok-fx2-8ch/dscr.rel: hw/sigrok-fx2-8ch/$(dirstamp) include/dscr.inc
 hw/sigrok-fx2-16ch/dscr.rel: hw/sigrok-fx2-16ch/$(dirstamp) include/dscr.inc
-hw/hantek-6022be/dscr.rel: hw/hantek-6022be/$(dirstamp) include/dscr_hantek_6022be.inc
-hw/hantek-6022bl/dscr.rel: hw/hantek-6022bl/$(dirstamp) include/dscr_hantek_6022be.inc
-hw/sainsmart-dds120/dscr.rel: hw/sainsmart-dds120/$(dirstamp) include/dscr_hantek_6022be.inc
+hw/hantek-6022be/dscr.rel: hw/hantek-6022be/$(dirstamp) include/dscr_scope.inc
+hw/hantek-6022bl/dscr.rel: hw/hantek-6022bl/$(dirstamp) include/dscr_scope.inc
+hw/sainsmart-dds120/dscr.rel: hw/sainsmart-dds120/$(dirstamp) include/dscr_scope.inc
 
 
 # Create build subdirectories
index ae077270bbbe72b34b290ca6a6dd8b6e61c42135..04b2628b48bf9e1e5fff7be87a91d18206b574ec 100644 (file)
@@ -21,7 +21,7 @@ VID = 0x501d  ; Manufacturer ID (0x1d50)
 PID = 0x8e60   ; Product ID (0x608e)
 VER = 0x0100   ; Product "version". 0x0001 == Hantek 6022BE.
 
-.include "dscr_hantek_6022be.inc"
+.include "dscr_scope.inc"
 string_descriptor_a 3,^"Hantek 6022BE"
 _dev_strings_end:
        .dw     0x0000
index 1bba4154b565142e5c75203b6aa9063d27d66fcb..1e74a5639336a974d19110dec95629ff5b8766da 100644 (file)
@@ -22,7 +22,7 @@ VID = 0x501d  ; Manufacturer ID (0x1d50)
 PID = 0x8e60   ; Product ID (0x608e)
 VER = 0x0300   ; Product "version". 0x0003 == Hantek 6022BL.
 
-.include "dscr_hantek_6022be.inc"
+.include "dscr_scope.inc"
 string_descriptor_a 3,^"Hantek 6022BL"
 _dev_strings_end:
        .dw     0x0000
index e8d906f3430f2d25ca530a72e52f93afe338d929..6c5fe9de44d35bdaf4dd13a06c1a181b38883f1a 100644 (file)
@@ -21,7 +21,7 @@ VID = 0x501d  ; Manufacturer ID (0x1d50)
 PID = 0x8e60   ; Product ID (0x608e)
 VER = 0x0200   ; Product "version". 0x0002 == SainSmart DDS120.
 
-.include "dscr_hantek_6022be.inc"
+.include "dscr_scope.inc"
 string_descriptor_a 3,^"SainSmart DDS120"
 _dev_strings_end:
        .dw     0x0000
diff --git a/include/dscr_hantek_6022be.inc b/include/dscr_hantek_6022be.inc
deleted file mode 100644 (file)
index c7dee45..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-;;
-;; This file is part of the sigrok-firmware-fx2lafw project.
-;;
-;; Copyright (C) 2009 Ubixum, Inc. 
-;;
-;; This library is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU Lesser General Public
-;; License as published by the Free Software Foundation; either
-;; version 2.1 of the License, or (at your option) any later version.
-;;
-;; This library is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; Lesser General Public License for more details.
-;;
-;; You should have received a copy of the GNU Lesser General Public
-;; License along with this library; if not, see <http://www.gnu.org/licenses/>.
-;;
-
-.include "common.inc"
-
-.module DEV_DSCR
-
-; Descriptor types
-DSCR_DEVICE_TYPE       = 1
-DSCR_CONFIG_TYPE       = 2
-DSCR_STRING_TYPE       = 3
-DSCR_INTERFACE_TYPE    = 4
-DSCR_ENDPOINT_TYPE     = 5
-DSCR_DEVQUAL_TYPE      = 6
-
-; Descriptor lengths
-DSCR_INTERFACE_LEN     = 9
-DSCR_ENDPOINT_LEN      = 7
-
-; Endpoint types
-ENDPOINT_TYPE_CONTROL  = 0
-ENDPOINT_TYPE_ISO      = 1
-ENDPOINT_TYPE_BULK     = 2
-ENDPOINT_TYPE_INT      = 3
-
-.globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
-.area DSCR_AREA (CODE)
-
-; -----------------------------------------------------------------------------
-; Device descriptor
-; -----------------------------------------------------------------------------
-_dev_dscr:
-       .db     dev_dscr_end - _dev_dscr
-       .db     DSCR_DEVICE_TYPE
-       .dw     0x0002                  ; USB 2.0
-       .db     0xff                    ; Class (vendor specific)
-       .db     0xff                    ; Subclass (vendor specific)
-       .db     0xff                    ; Protocol (vendor specific)
-       .db     64                      ; Max. EP0 packet size
-       .dw     VID                     ; Manufacturer ID
-       .dw     PID                     ; Product ID
-       .dw     VER                     ; Product version/type
-       .db     1                       ; Manufacturer string index
-       .db     2                       ; Product string index
-       .db     3                       ; Serial number string index
-       .db     1                       ; Number of configurations
-dev_dscr_end:
-
-; -----------------------------------------------------------------------------
-; Device qualifier (for "other device speed")
-; -----------------------------------------------------------------------------
-_dev_qual_dscr:
-       .db     dev_qualdscr_end - _dev_qual_dscr
-       .db     DSCR_DEVQUAL_TYPE
-       .dw     0x0002                  ; USB 2.0
-       .db     0                       ; Class (0)
-       .db     0                       ; Subclass (0)
-       .db     0                       ; Protocol (0)
-       .db     64                      ; Max. EP0 packet size
-       .db     1                       ; Number of configurations
-       .db     0                       ; Extra reserved byte
-dev_qualdscr_end:
-
-; -----------------------------------------------------------------------------
-; High-Speed configuration descriptor
-; -----------------------------------------------------------------------------
-_highspd_dscr:
-       .db     highspd_dscr_end - _highspd_dscr
-       .db     DSCR_CONFIG_TYPE
-       ; Total length of the configuration (1st line LSB, 2nd line MSB)
-       .db     (highspd_dscr_realend - _highspd_dscr) % 256
-       .db     (highspd_dscr_realend - _highspd_dscr) / 256
-       .db     1                       ; Number of interfaces
-       .db     1                       ; Configuration number
-       .db     0                       ; Configuration string (none)
-       .db     0x80                    ; Attributes (bus powered, no wakeup)
-       .db     0x37                    ; Max. power (110mA)
-highspd_dscr_end:
-
-       ; Bulk interface 0, alt 0
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     0                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     0                       ; Protocol (0)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 6 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x86                    ; EP number (6), direction (IN)
-       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
-       .db     0x00                    ; Max. packet size, LSB (512 bytes)
-       .db     0x02                    ; Max. packet size, MSB (512 bytes)
-       .db     0x00                    ; Polling interval (ignored for bulk)
-
-       ; Isochronous interface 0, alt 1
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     1                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (3*1024 bytes)
-       .db     0x14                    ; Max. packet size, MSB (3*1024 bytes)
-                                       ; 12:11 = 0b10 (3 tr. per microframe)
-                                       ; 10:00 = 1024
-       .db     0x01                    ; Polling interval (1 microframe)
-
-       ; Isochronous interface 0, alt 2, 16MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     2                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (2*1024 bytes)
-       .db     0x0c                    ; Max. packet size, MSB (2*1024 bytes)
-                                       ; 12:11 = 0b01 (2 tr. per microframe)
-                                       ; 10:00 = 1024
-       .db     0x01                    ; Polling interval (1 microframe)
-
-       ; Isochronous interface 0, alt 3, 8MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     3                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
-       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
-       .db     0x01                    ; Polling interval (1 microframe)
-
-       ; Isochronous interface 0, alt 4, 4MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     4                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
-       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
-       .db     0x02                    ; Polling interval (2 microframes)
-
-       ; Isochronous interface 0, alt 5, 2MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     5                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
-       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
-       .db     0x03                    ; Polling interval (4 microframes)
-
-       ; Isochronous interface 0, alt 6, 1MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     6                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
-       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
-       .db     0x04                    ; Polling interval (8 microframes)
-
-       ; Isochronous interface 0, alt 7, 500kB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     7                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (512 bytes)
-       .db     0x02                    ; Max. packet size, MSB (512 bytes)
-       .db     0x04                    ; Polling interval (8 microframes)
-
-highspd_dscr_realend:
-
-       .even
-
-; -----------------------------------------------------------------------------
-; Full-Speed configuration descriptor
-; -----------------------------------------------------------------------------
-_fullspd_dscr:
-       .db     fullspd_dscr_end - _fullspd_dscr
-       .db     DSCR_CONFIG_TYPE
-       ; Total length of the configuration (1st line LSB, 2nd line MSB)
-       .db     (fullspd_dscr_realend - _fullspd_dscr) % 256
-       .db     (fullspd_dscr_realend - _fullspd_dscr) / 256
-       .db     2                       ; Number of interfaces
-       .db     1                       ; Configuration number
-       .db     0                       ; Configuration string (none)
-       .db     0x80                    ; Attributes (bus powered, no wakeup)
-       .db     0x37                    ; Max. power (110mA)
-fullspd_dscr_end:
-
-       ; Bulk interface 0, alt 0
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     0                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     0                       ; Protocol (0)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 6 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x86                    ; EP number (6), direction (IN)
-       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
-       .db     0x40                    ; Max. packet size, LSB (64 bytes)
-       .db     0x00                    ; Max. packet size, MSB (64 bytes)
-       .db     0x00                    ; Polling interval (ignored for bulk)
-
-       ; Isochronous interface 0, alt 1, 1MB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     1                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0xff                    ; Max. packet size, LSB (1023 bytes)
-       .db     0x03                    ; Max. packet size, MSB (1023 bytes)
-       .db     0x01                    ; Polling interval (1 frame)
-
-       ; Isochronous interface 0, alt 2, 500kB/s
-       .db     DSCR_INTERFACE_LEN
-       .db     DSCR_INTERFACE_TYPE
-       .db     0                       ; Interface index
-       .db     2                       ; Alternate setting index
-       .db     1                       ; Number of endpoints
-       .db     0xff                    ; Class (vendor specific)
-       .db     0                       ; Subclass (0)
-       .db     1                       ; Protocol (1)
-       .db     0                       ; String index (none)
-
-       ; Endpoint 2 (IN)
-       .db     DSCR_ENDPOINT_LEN
-       .db     DSCR_ENDPOINT_TYPE
-       .db     0x82                    ; EP number (2), direction (IN)
-       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
-       .db     0x00                    ; Max. packet size, LSB (512 bytes)
-       .db     0x02                    ; Max. packet size, MSB (512 bytes)
-       .db     0x01                    ; Polling interval (1 frame)
-
-fullspd_dscr_realend:
-
-       .even
-
-; -----------------------------------------------------------------------------
-; Strings
-; -----------------------------------------------------------------------------
-
-_dev_strings:
-
-; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
-string_descriptor_lang 0 0x0409 ; Language code 0x0409 (English, US)
-
-string_descriptor_a 1,^"sigrok"
-string_descriptor_a 2,^"fx2lafw"
diff --git a/include/dscr_scope.inc b/include/dscr_scope.inc
new file mode 100644 (file)
index 0000000..c7dee45
--- /dev/null
@@ -0,0 +1,354 @@
+;;
+;; This file is part of the sigrok-firmware-fx2lafw project.
+;;
+;; Copyright (C) 2009 Ubixum, Inc. 
+;;
+;; This library is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU Lesser General Public
+;; License as published by the Free Software Foundation; either
+;; version 2.1 of the License, or (at your option) any later version.
+;;
+;; This library is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; Lesser General Public License for more details.
+;;
+;; You should have received a copy of the GNU Lesser General Public
+;; License along with this library; if not, see <http://www.gnu.org/licenses/>.
+;;
+
+.include "common.inc"
+
+.module DEV_DSCR
+
+; Descriptor types
+DSCR_DEVICE_TYPE       = 1
+DSCR_CONFIG_TYPE       = 2
+DSCR_STRING_TYPE       = 3
+DSCR_INTERFACE_TYPE    = 4
+DSCR_ENDPOINT_TYPE     = 5
+DSCR_DEVQUAL_TYPE      = 6
+
+; Descriptor lengths
+DSCR_INTERFACE_LEN     = 9
+DSCR_ENDPOINT_LEN      = 7
+
+; Endpoint types
+ENDPOINT_TYPE_CONTROL  = 0
+ENDPOINT_TYPE_ISO      = 1
+ENDPOINT_TYPE_BULK     = 2
+ENDPOINT_TYPE_INT      = 3
+
+.globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
+.area DSCR_AREA (CODE)
+
+; -----------------------------------------------------------------------------
+; Device descriptor
+; -----------------------------------------------------------------------------
+_dev_dscr:
+       .db     dev_dscr_end - _dev_dscr
+       .db     DSCR_DEVICE_TYPE
+       .dw     0x0002                  ; USB 2.0
+       .db     0xff                    ; Class (vendor specific)
+       .db     0xff                    ; Subclass (vendor specific)
+       .db     0xff                    ; Protocol (vendor specific)
+       .db     64                      ; Max. EP0 packet size
+       .dw     VID                     ; Manufacturer ID
+       .dw     PID                     ; Product ID
+       .dw     VER                     ; Product version/type
+       .db     1                       ; Manufacturer string index
+       .db     2                       ; Product string index
+       .db     3                       ; Serial number string index
+       .db     1                       ; Number of configurations
+dev_dscr_end:
+
+; -----------------------------------------------------------------------------
+; Device qualifier (for "other device speed")
+; -----------------------------------------------------------------------------
+_dev_qual_dscr:
+       .db     dev_qualdscr_end - _dev_qual_dscr
+       .db     DSCR_DEVQUAL_TYPE
+       .dw     0x0002                  ; USB 2.0
+       .db     0                       ; Class (0)
+       .db     0                       ; Subclass (0)
+       .db     0                       ; Protocol (0)
+       .db     64                      ; Max. EP0 packet size
+       .db     1                       ; Number of configurations
+       .db     0                       ; Extra reserved byte
+dev_qualdscr_end:
+
+; -----------------------------------------------------------------------------
+; High-Speed configuration descriptor
+; -----------------------------------------------------------------------------
+_highspd_dscr:
+       .db     highspd_dscr_end - _highspd_dscr
+       .db     DSCR_CONFIG_TYPE
+       ; Total length of the configuration (1st line LSB, 2nd line MSB)
+       .db     (highspd_dscr_realend - _highspd_dscr) % 256
+       .db     (highspd_dscr_realend - _highspd_dscr) / 256
+       .db     1                       ; Number of interfaces
+       .db     1                       ; Configuration number
+       .db     0                       ; Configuration string (none)
+       .db     0x80                    ; Attributes (bus powered, no wakeup)
+       .db     0x37                    ; Max. power (110mA)
+highspd_dscr_end:
+
+       ; Bulk interface 0, alt 0
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     0                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     0                       ; Protocol (0)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 6 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x86                    ; EP number (6), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x00                    ; Max. packet size, LSB (512 bytes)
+       .db     0x02                    ; Max. packet size, MSB (512 bytes)
+       .db     0x00                    ; Polling interval (ignored for bulk)
+
+       ; Isochronous interface 0, alt 1
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     1                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (3*1024 bytes)
+       .db     0x14                    ; Max. packet size, MSB (3*1024 bytes)
+                                       ; 12:11 = 0b10 (3 tr. per microframe)
+                                       ; 10:00 = 1024
+       .db     0x01                    ; Polling interval (1 microframe)
+
+       ; Isochronous interface 0, alt 2, 16MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     2                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (2*1024 bytes)
+       .db     0x0c                    ; Max. packet size, MSB (2*1024 bytes)
+                                       ; 12:11 = 0b01 (2 tr. per microframe)
+                                       ; 10:00 = 1024
+       .db     0x01                    ; Polling interval (1 microframe)
+
+       ; Isochronous interface 0, alt 3, 8MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     3                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
+       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
+       .db     0x01                    ; Polling interval (1 microframe)
+
+       ; Isochronous interface 0, alt 4, 4MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     4                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
+       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
+       .db     0x02                    ; Polling interval (2 microframes)
+
+       ; Isochronous interface 0, alt 5, 2MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     5                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
+       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
+       .db     0x03                    ; Polling interval (4 microframes)
+
+       ; Isochronous interface 0, alt 6, 1MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     6                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (1024 bytes)
+       .db     0x04                    ; Max. packet size, MSB (1024 bytes)
+       .db     0x04                    ; Polling interval (8 microframes)
+
+       ; Isochronous interface 0, alt 7, 500kB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     7                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (512 bytes)
+       .db     0x02                    ; Max. packet size, MSB (512 bytes)
+       .db     0x04                    ; Polling interval (8 microframes)
+
+highspd_dscr_realend:
+
+       .even
+
+; -----------------------------------------------------------------------------
+; Full-Speed configuration descriptor
+; -----------------------------------------------------------------------------
+_fullspd_dscr:
+       .db     fullspd_dscr_end - _fullspd_dscr
+       .db     DSCR_CONFIG_TYPE
+       ; Total length of the configuration (1st line LSB, 2nd line MSB)
+       .db     (fullspd_dscr_realend - _fullspd_dscr) % 256
+       .db     (fullspd_dscr_realend - _fullspd_dscr) / 256
+       .db     2                       ; Number of interfaces
+       .db     1                       ; Configuration number
+       .db     0                       ; Configuration string (none)
+       .db     0x80                    ; Attributes (bus powered, no wakeup)
+       .db     0x37                    ; Max. power (110mA)
+fullspd_dscr_end:
+
+       ; Bulk interface 0, alt 0
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     0                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     0                       ; Protocol (0)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 6 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x86                    ; EP number (6), direction (IN)
+       .db     ENDPOINT_TYPE_BULK      ; Endpoint type (bulk)
+       .db     0x40                    ; Max. packet size, LSB (64 bytes)
+       .db     0x00                    ; Max. packet size, MSB (64 bytes)
+       .db     0x00                    ; Polling interval (ignored for bulk)
+
+       ; Isochronous interface 0, alt 1, 1MB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     1                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0xff                    ; Max. packet size, LSB (1023 bytes)
+       .db     0x03                    ; Max. packet size, MSB (1023 bytes)
+       .db     0x01                    ; Polling interval (1 frame)
+
+       ; Isochronous interface 0, alt 2, 500kB/s
+       .db     DSCR_INTERFACE_LEN
+       .db     DSCR_INTERFACE_TYPE
+       .db     0                       ; Interface index
+       .db     2                       ; Alternate setting index
+       .db     1                       ; Number of endpoints
+       .db     0xff                    ; Class (vendor specific)
+       .db     0                       ; Subclass (0)
+       .db     1                       ; Protocol (1)
+       .db     0                       ; String index (none)
+
+       ; Endpoint 2 (IN)
+       .db     DSCR_ENDPOINT_LEN
+       .db     DSCR_ENDPOINT_TYPE
+       .db     0x82                    ; EP number (2), direction (IN)
+       .db     ENDPOINT_TYPE_ISO       ; Endpoint type (iso)
+       .db     0x00                    ; Max. packet size, LSB (512 bytes)
+       .db     0x02                    ; Max. packet size, MSB (512 bytes)
+       .db     0x01                    ; Polling interval (1 frame)
+
+fullspd_dscr_realend:
+
+       .even
+
+; -----------------------------------------------------------------------------
+; Strings
+; -----------------------------------------------------------------------------
+
+_dev_strings:
+
+; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
+string_descriptor_lang 0 0x0409 ; Language code 0x0409 (English, US)
+
+string_descriptor_a 1,^"sigrok"
+string_descriptor_a 2,^"fx2lafw"