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, see <http://www.gnu.org/licenses/>.
28 DSCR_INTERFACE_TYPE = 4
29 DSCR_ENDPOINT_TYPE = 5
33 DSCR_INTERFACE_LEN = 9
37 ENDPOINT_TYPE_CONTROL = 0
39 ENDPOINT_TYPE_BULK = 2
42 .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
43 .area DSCR_AREA (CODE)
45 ; -----------------------------------------------------------------------------
47 ; -----------------------------------------------------------------------------
49 .db dev_dscr_end - _dev_dscr
52 .db 0xff ; Class (vendor specific)
53 .db 0xff ; Subclass (vendor specific)
54 .db 0xff ; Protocol (vendor specific)
55 .db 64 ; Max. EP0 packet size
56 .dw VID ; Manufacturer ID
58 .dw VER ; Product version/type
59 .db 1 ; Manufacturer string index
60 .db 2 ; Product string index
61 .db 3 ; Serial number string index
62 .db 1 ; Number of configurations
65 ; -----------------------------------------------------------------------------
66 ; Device qualifier (for "other device speed")
67 ; -----------------------------------------------------------------------------
69 .db dev_qualdscr_end - _dev_qual_dscr
75 .db 64 ; Max. EP0 packet size
76 .db 1 ; Number of configurations
77 .db 0 ; Extra reserved byte
80 ; -----------------------------------------------------------------------------
81 ; High-Speed configuration descriptor
82 ; -----------------------------------------------------------------------------
84 .db highspd_dscr_end - _highspd_dscr
86 ; Total length of the configuration (1st line LSB, 2nd line MSB)
87 .db (highspd_dscr_realend - _highspd_dscr) % 256
88 .db (highspd_dscr_realend - _highspd_dscr) / 256
89 .db 1 ; Number of interfaces
90 .db 1 ; Configuration number
91 .db 0 ; Configuration string (none)
92 .db 0x80 ; Attributes (bus powered, no wakeup)
93 .db 0x37 ; Max. power (110mA)
96 ; Bulk interface 0, alt 0
97 .db DSCR_INTERFACE_LEN
98 .db DSCR_INTERFACE_TYPE
99 .db 0 ; Interface index
100 .db 0 ; Alternate setting index
101 .db 1 ; Number of endpoints
102 .db 0xff ; Class (vendor specific)
105 .db 0 ; String index (none)
108 .db DSCR_ENDPOINT_LEN
109 .db DSCR_ENDPOINT_TYPE
110 .db 0x86 ; EP number (6), direction (IN)
111 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
112 .db 0x00 ; Max. packet size, LSB (512 bytes)
113 .db 0x02 ; Max. packet size, MSB (512 bytes)
114 .db 0x00 ; Polling interval (ignored for bulk)
116 ; Isochronous interface 0, alt 1
117 .db DSCR_INTERFACE_LEN
118 .db DSCR_INTERFACE_TYPE
119 .db 0 ; Interface index
120 .db 1 ; Alternate setting index
121 .db 1 ; Number of endpoints
122 .db 0xff ; Class (vendor specific)
125 .db 0 ; String index (none)
128 .db DSCR_ENDPOINT_LEN
129 .db DSCR_ENDPOINT_TYPE
130 .db 0x82 ; EP number (2), direction (IN)
131 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
132 .db 0x00 ; Max. packet size, LSB (3*1024 bytes)
133 .db 0x14 ; Max. packet size, MSB (3*1024 bytes)
134 ; 12:11 = 0b10 (3 tr. per microframe)
136 .db 0x01 ; Polling interval (1 microframe)
138 ; Isochronous interface 0, alt 2, 16MB/s
139 .db DSCR_INTERFACE_LEN
140 .db DSCR_INTERFACE_TYPE
141 .db 0 ; Interface index
142 .db 2 ; Alternate setting index
143 .db 1 ; Number of endpoints
144 .db 0xff ; Class (vendor specific)
147 .db 0 ; String index (none)
150 .db DSCR_ENDPOINT_LEN
151 .db DSCR_ENDPOINT_TYPE
152 .db 0x82 ; EP number (2), direction (IN)
153 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
154 .db 0x00 ; Max. packet size, LSB (2*1024 bytes)
155 .db 0x0c ; Max. packet size, MSB (2*1024 bytes)
156 ; 12:11 = 0b01 (2 tr. per microframe)
158 .db 0x01 ; Polling interval (1 microframe)
160 ; Isochronous interface 0, alt 3, 8MB/s
161 .db DSCR_INTERFACE_LEN
162 .db DSCR_INTERFACE_TYPE
163 .db 0 ; Interface index
164 .db 3 ; Alternate setting index
165 .db 1 ; Number of endpoints
166 .db 0xff ; Class (vendor specific)
169 .db 0 ; String index (none)
172 .db DSCR_ENDPOINT_LEN
173 .db DSCR_ENDPOINT_TYPE
174 .db 0x82 ; EP number (2), direction (IN)
175 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
176 .db 0x00 ; Max. packet size, LSB (1024 bytes)
177 .db 0x04 ; Max. packet size, MSB (1024 bytes)
178 .db 0x01 ; Polling interval (1 microframe)
180 ; Isochronous interface 0, alt 4, 4MB/s
181 .db DSCR_INTERFACE_LEN
182 .db DSCR_INTERFACE_TYPE
183 .db 0 ; Interface index
184 .db 4 ; Alternate setting index
185 .db 1 ; Number of endpoints
186 .db 0xff ; Class (vendor specific)
189 .db 0 ; String index (none)
192 .db DSCR_ENDPOINT_LEN
193 .db DSCR_ENDPOINT_TYPE
194 .db 0x82 ; EP number (2), direction (IN)
195 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
196 .db 0x00 ; Max. packet size, LSB (1024 bytes)
197 .db 0x04 ; Max. packet size, MSB (1024 bytes)
198 .db 0x02 ; Polling interval (2 microframes)
200 ; Isochronous interface 0, alt 5, 2MB/s
201 .db DSCR_INTERFACE_LEN
202 .db DSCR_INTERFACE_TYPE
203 .db 0 ; Interface index
204 .db 5 ; Alternate setting index
205 .db 1 ; Number of endpoints
206 .db 0xff ; Class (vendor specific)
209 .db 0 ; String index (none)
212 .db DSCR_ENDPOINT_LEN
213 .db DSCR_ENDPOINT_TYPE
214 .db 0x82 ; EP number (2), direction (IN)
215 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
216 .db 0x00 ; Max. packet size, LSB (1024 bytes)
217 .db 0x04 ; Max. packet size, MSB (1024 bytes)
218 .db 0x03 ; Polling interval (4 microframes)
220 ; Isochronous interface 0, alt 6, 1MB/s
221 .db DSCR_INTERFACE_LEN
222 .db DSCR_INTERFACE_TYPE
223 .db 0 ; Interface index
224 .db 6 ; Alternate setting index
225 .db 1 ; Number of endpoints
226 .db 0xff ; Class (vendor specific)
229 .db 0 ; String index (none)
232 .db DSCR_ENDPOINT_LEN
233 .db DSCR_ENDPOINT_TYPE
234 .db 0x82 ; EP number (2), direction (IN)
235 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
236 .db 0x00 ; Max. packet size, LSB (1024 bytes)
237 .db 0x04 ; Max. packet size, MSB (1024 bytes)
238 .db 0x04 ; Polling interval (8 microframes)
240 ; Isochronous interface 0, alt 7, 500kB/s
241 .db DSCR_INTERFACE_LEN
242 .db DSCR_INTERFACE_TYPE
243 .db 0 ; Interface index
244 .db 7 ; Alternate setting index
245 .db 1 ; Number of endpoints
246 .db 0xff ; Class (vendor specific)
249 .db 0 ; String index (none)
252 .db DSCR_ENDPOINT_LEN
253 .db DSCR_ENDPOINT_TYPE
254 .db 0x82 ; EP number (2), direction (IN)
255 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
256 .db 0x00 ; Max. packet size, LSB (512 bytes)
257 .db 0x02 ; Max. packet size, MSB (512 bytes)
258 .db 0x04 ; Polling interval (8 microframes)
260 highspd_dscr_realend:
264 ; -----------------------------------------------------------------------------
265 ; Full-Speed configuration descriptor
266 ; -----------------------------------------------------------------------------
268 .db fullspd_dscr_end - _fullspd_dscr
270 ; Total length of the configuration (1st line LSB, 2nd line MSB)
271 .db (fullspd_dscr_realend - _fullspd_dscr) % 256
272 .db (fullspd_dscr_realend - _fullspd_dscr) / 256
273 .db 2 ; Number of interfaces
274 .db 1 ; Configuration number
275 .db 0 ; Configuration string (none)
276 .db 0x80 ; Attributes (bus powered, no wakeup)
277 .db 0x37 ; Max. power (110mA)
280 ; Bulk interface 0, alt 0
281 .db DSCR_INTERFACE_LEN
282 .db DSCR_INTERFACE_TYPE
283 .db 0 ; Interface index
284 .db 0 ; Alternate setting index
285 .db 1 ; Number of endpoints
286 .db 0xff ; Class (vendor specific)
289 .db 0 ; String index (none)
292 .db DSCR_ENDPOINT_LEN
293 .db DSCR_ENDPOINT_TYPE
294 .db 0x86 ; EP number (6), direction (IN)
295 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
296 .db 0x40 ; Max. packet size, LSB (64 bytes)
297 .db 0x00 ; Max. packet size, MSB (64 bytes)
298 .db 0x00 ; Polling interval (ignored for bulk)
300 ; Isochronous interface 0, alt 1, 1MB/s
301 .db DSCR_INTERFACE_LEN
302 .db DSCR_INTERFACE_TYPE
303 .db 0 ; Interface index
304 .db 1 ; Alternate setting index
305 .db 1 ; Number of endpoints
306 .db 0xff ; Class (vendor specific)
309 .db 0 ; String index (none)
312 .db DSCR_ENDPOINT_LEN
313 .db DSCR_ENDPOINT_TYPE
314 .db 0x82 ; EP number (2), direction (IN)
315 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
316 .db 0xff ; Max. packet size, LSB (1023 bytes)
317 .db 0x03 ; Max. packet size, MSB (1023 bytes)
318 .db 0x01 ; Polling interval (1 frame)
320 ; Isochronous interface 0, alt 2, 500kB/s
321 .db DSCR_INTERFACE_LEN
322 .db DSCR_INTERFACE_TYPE
323 .db 0 ; Interface index
324 .db 2 ; Alternate setting index
325 .db 1 ; Number of endpoints
326 .db 0xff ; Class (vendor specific)
329 .db 0 ; String index (none)
332 .db DSCR_ENDPOINT_LEN
333 .db DSCR_ENDPOINT_TYPE
334 .db 0x82 ; EP number (2), direction (IN)
335 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
336 .db 0x00 ; Max. packet size, LSB (512 bytes)
337 .db 0x02 ; Max. packet size, MSB (512 bytes)
338 .db 0x01 ; Polling interval (1 frame)
340 fullspd_dscr_realend:
344 ; -----------------------------------------------------------------------------
346 ; -----------------------------------------------------------------------------
350 ; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
351 string_descriptor_lang 0 0x0409 ; Language code 0x0409 (English, US)
353 string_descriptor_a 1,^"sigrok"
354 string_descriptor_a 2,^"fx2lafw"