2 ;; This file is part of the sigrok-firmware-fx2lafw project.
4 ;; Copyright (C) 2009 Ubixum, Inc.
6 ;; This library is free software; you can redistribute it and/or
7 ;; modify it under the terms of the GNU Lesser General Public
8 ;; License as published by the Free Software Foundation; either
9 ;; version 2.1 of the License, or (at your option) any later version.
11 ;; This library is distributed in the hope that it will be useful,
12 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 ;; Lesser General Public License for more details.
16 ;; You should have received a copy of the GNU Lesser General Public
17 ;; License along with this library; if not, write to the Free Software
18 ;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29 DSCR_INTERFACE_TYPE = 4
30 DSCR_ENDPOINT_TYPE = 5
34 DSCR_INTERFACE_LEN = 9
38 ENDPOINT_TYPE_CONTROL = 0
40 ENDPOINT_TYPE_BULK = 2
43 .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
44 .area DSCR_AREA (CODE)
46 ; -----------------------------------------------------------------------------
48 ; -----------------------------------------------------------------------------
50 .db dev_dscr_end - _dev_dscr
53 .db 0xff ; Class (vendor specific)
54 .db 0xff ; Subclass (vendor specific)
55 .db 0xff ; Protocol (vendor specific)
56 .db 64 ; Max. EP0 packet size
57 .dw VID ; Manufacturer ID
59 .dw VER ; Product version/type
60 .db 1 ; Manufacturer string index
61 .db 2 ; Product string index
62 .db 0 ; Serial number string index (none)
63 .db 1 ; Number of configurations
66 ; -----------------------------------------------------------------------------
67 ; Device qualifier (for "other device speed")
68 ; -----------------------------------------------------------------------------
70 .db dev_qualdscr_end - _dev_qual_dscr
76 .db 64 ; Max. EP0 packet size
77 .db 1 ; Number of configurations
78 .db 0 ; Extra reserved byte
81 ; -----------------------------------------------------------------------------
82 ; High-Speed configuration descriptor
83 ; -----------------------------------------------------------------------------
85 .db highspd_dscr_end - _highspd_dscr
87 ; Total length of the configuration (1st line LSB, 2nd line MSB)
88 .db (highspd_dscr_realend - _highspd_dscr) % 256
89 .db (highspd_dscr_realend - _highspd_dscr) / 256
90 .db 1 ; Number of interfaces
91 .db 1 ; Configuration number
92 .db 0 ; Configuration string (none)
93 .db 0x80 ; Attributes (bus powered, no wakeup)
94 .db 0x37 ; Max. power (110mA)
97 ; Bulk interface 0, alt 0
98 .db DSCR_INTERFACE_LEN
99 .db DSCR_INTERFACE_TYPE
100 .db 0 ; Interface index
101 .db 0 ; Alternate setting index
102 .db 1 ; Number of endpoints
103 .db 0xff ; Class (vendor specific)
106 .db 0 ; String index (none)
109 .db DSCR_ENDPOINT_LEN
110 .db DSCR_ENDPOINT_TYPE
111 .db 0x86 ; EP number (6), direction (IN)
112 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
113 .db 0x00 ; Max. packet size, LSB (512 bytes)
114 .db 0x02 ; Max. packet size, MSB (512 bytes)
115 .db 0x00 ; Polling interval (ignored for bulk)
117 ; Isochronous interface 0, alt 1
118 .db DSCR_INTERFACE_LEN
119 .db DSCR_INTERFACE_TYPE
120 .db 0 ; Interface index
121 .db 1 ; Alternate setting index
122 .db 1 ; Number of endpoints
123 .db 0xff ; Class (vendor specific)
126 .db 0 ; String index (none)
129 .db DSCR_ENDPOINT_LEN
130 .db DSCR_ENDPOINT_TYPE
131 .db 0x82 ; EP number (2), direction (IN)
132 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
133 .db 0x00 ; Max. packet size, LSB (3*1024 bytes)
134 .db 0x14 ; Max. packet size, MSB (3*1024 bytes)
135 ; 12:11 = 0b10 (3 tr. per microframe)
137 .db 0x01 ; Polling interval (1 microframe)
139 ; Isochronous interface 0, alt 2, 16MB/s
140 .db DSCR_INTERFACE_LEN
141 .db DSCR_INTERFACE_TYPE
142 .db 0 ; Interface index
143 .db 2 ; Alternate setting index
144 .db 1 ; Number of endpoints
145 .db 0xff ; Class (vendor specific)
148 .db 0 ; String index (none)
151 .db DSCR_ENDPOINT_LEN
152 .db DSCR_ENDPOINT_TYPE
153 .db 0x82 ; EP number (2), direction (IN)
154 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
155 .db 0x00 ; Max. packet size, LSB (2*1024 bytes)
156 .db 0x0c ; Max. packet size, MSB (2*1024 bytes)
157 ; 12:11 = 0b01 (2 tr. per microframe)
159 .db 0x01 ; Polling interval (1 microframe)
161 ; Isochronous interface 0, alt 3, 8MB/s
162 .db DSCR_INTERFACE_LEN
163 .db DSCR_INTERFACE_TYPE
164 .db 0 ; Interface index
165 .db 3 ; Alternate setting index
166 .db 1 ; Number of endpoints
167 .db 0xff ; Class (vendor specific)
170 .db 0 ; String index (none)
173 .db DSCR_ENDPOINT_LEN
174 .db DSCR_ENDPOINT_TYPE
175 .db 0x82 ; EP number (2), direction (IN)
176 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
177 .db 0x00 ; Max. packet size, LSB (1024 bytes)
178 .db 0x04 ; Max. packet size, MSB (1024 bytes)
179 .db 0x01 ; Polling interval (1 microframe)
181 ; Isochronous interface 0, alt 4, 4MB/s
182 .db DSCR_INTERFACE_LEN
183 .db DSCR_INTERFACE_TYPE
184 .db 0 ; Interface index
185 .db 4 ; Alternate setting index
186 .db 1 ; Number of endpoints
187 .db 0xff ; Class (vendor specific)
190 .db 0 ; String index (none)
193 .db DSCR_ENDPOINT_LEN
194 .db DSCR_ENDPOINT_TYPE
195 .db 0x82 ; EP number (2), direction (IN)
196 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
197 .db 0x00 ; Max. packet size, LSB (1024 bytes)
198 .db 0x04 ; Max. packet size, MSB (1024 bytes)
199 .db 0x02 ; Polling interval (2 microframes)
201 ; Isochronous interface 0, alt 5, 2MB/s
202 .db DSCR_INTERFACE_LEN
203 .db DSCR_INTERFACE_TYPE
204 .db 0 ; Interface index
205 .db 5 ; Alternate setting index
206 .db 1 ; Number of endpoints
207 .db 0xff ; Class (vendor specific)
210 .db 0 ; String index (none)
213 .db DSCR_ENDPOINT_LEN
214 .db DSCR_ENDPOINT_TYPE
215 .db 0x82 ; EP number (2), direction (IN)
216 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
217 .db 0x00 ; Max. packet size, LSB (1024 bytes)
218 .db 0x04 ; Max. packet size, MSB (1024 bytes)
219 .db 0x03 ; Polling interval (4 microframes)
221 ; Isochronous interface 0, alt 6, 1MB/s
222 .db DSCR_INTERFACE_LEN
223 .db DSCR_INTERFACE_TYPE
224 .db 0 ; Interface index
225 .db 6 ; Alternate setting index
226 .db 1 ; Number of endpoints
227 .db 0xff ; Class (vendor specific)
230 .db 0 ; String index (none)
233 .db DSCR_ENDPOINT_LEN
234 .db DSCR_ENDPOINT_TYPE
235 .db 0x82 ; EP number (2), direction (IN)
236 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
237 .db 0x00 ; Max. packet size, LSB (1024 bytes)
238 .db 0x04 ; Max. packet size, MSB (1024 bytes)
239 .db 0x04 ; Polling interval (8 microframes)
241 ; Isochronous interface 0, alt 7, 500kB/s
242 .db DSCR_INTERFACE_LEN
243 .db DSCR_INTERFACE_TYPE
244 .db 0 ; Interface index
245 .db 7 ; Alternate setting index
246 .db 1 ; Number of endpoints
247 .db 0xff ; Class (vendor specific)
250 .db 0 ; String index (none)
253 .db DSCR_ENDPOINT_LEN
254 .db DSCR_ENDPOINT_TYPE
255 .db 0x82 ; EP number (2), direction (IN)
256 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
257 .db 0x00 ; Max. packet size, LSB (512 bytes)
258 .db 0x02 ; Max. packet size, MSB (512 bytes)
259 .db 0x04 ; Polling interval (8 microframes)
261 highspd_dscr_realend:
265 ; -----------------------------------------------------------------------------
266 ; Full-Speed configuration descriptor
267 ; -----------------------------------------------------------------------------
269 .db fullspd_dscr_end - _fullspd_dscr
271 ; Total length of the configuration (1st line LSB, 2nd line MSB)
272 .db (fullspd_dscr_realend - _fullspd_dscr) % 256
273 .db (fullspd_dscr_realend - _fullspd_dscr) / 256
274 .db 2 ; Number of interfaces
275 .db 1 ; Configuration number
276 .db 0 ; Configuration string (none)
277 .db 0x80 ; Attributes (bus powered, no wakeup)
278 .db 0x37 ; Max. power (110mA)
281 ; Bulk interface 0, alt 0
282 .db DSCR_INTERFACE_LEN
283 .db DSCR_INTERFACE_TYPE
284 .db 0 ; Interface index
285 .db 0 ; Alternate setting index
286 .db 1 ; Number of endpoints
287 .db 0xff ; Class (vendor specific)
290 .db 0 ; String index (none)
293 .db DSCR_ENDPOINT_LEN
294 .db DSCR_ENDPOINT_TYPE
295 .db 0x86 ; EP number (6), direction (IN)
296 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
297 .db 0x40 ; Max. packet size, LSB (64 bytes)
298 .db 0x00 ; Max. packet size, MSB (64 bytes)
299 .db 0x00 ; Polling interval (ignored for bulk)
301 ; Isochronous interface 0, alt 1, 1MB/s
302 .db DSCR_INTERFACE_LEN
303 .db DSCR_INTERFACE_TYPE
304 .db 0 ; Interface index
305 .db 1 ; Alternate setting index
306 .db 1 ; Number of endpoints
307 .db 0xff ; Class (vendor specific)
310 .db 0 ; String index (none)
313 .db DSCR_ENDPOINT_LEN
314 .db DSCR_ENDPOINT_TYPE
315 .db 0x82 ; EP number (2), direction (IN)
316 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
317 .db 0xff ; Max. packet size, LSB (1023 bytes)
318 .db 0x03 ; Max. packet size, MSB (1023 bytes)
319 .db 0x01 ; Polling interval (1 frame)
321 ; Isochronous interface 0, alt 2, 500kB/s
322 .db DSCR_INTERFACE_LEN
323 .db DSCR_INTERFACE_TYPE
324 .db 0 ; Interface index
325 .db 2 ; Alternate setting index
326 .db 1 ; Number of endpoints
327 .db 0xff ; Class (vendor specific)
330 .db 0 ; String index (none)
333 .db DSCR_ENDPOINT_LEN
334 .db DSCR_ENDPOINT_TYPE
335 .db 0x82 ; EP number (2), direction (IN)
336 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
337 .db 0x00 ; Max. packet size, LSB (512 bytes)
338 .db 0x02 ; Max. packet size, MSB (512 bytes)
339 .db 0x01 ; Polling interval (1 frame)
341 fullspd_dscr_realend:
345 ; -----------------------------------------------------------------------------
347 ; -----------------------------------------------------------------------------
351 ; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
352 string_descriptor_lang 0 0x0409 ; Language code 0x0409 (English, US)
354 string_descriptor_a 1,^"sigrok"
355 string_descriptor_a 2,^"fx2lafw"