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
27 DSCR_INTERFACE_TYPE = 4
28 DSCR_ENDPOINT_TYPE = 5
32 DSCR_INTERFACE_LEN = 9
36 ENDPOINT_TYPE_CONTROL = 0
38 ENDPOINT_TYPE_BULK = 2
41 .globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
42 .area DSCR_AREA (CODE)
44 ; -----------------------------------------------------------------------------
46 ; -----------------------------------------------------------------------------
48 .db dev_dscr_end - _dev_dscr
51 .db 0xff ; Class (vendor specific)
52 .db 0xff ; Subclass (vendor specific)
53 .db 0xff ; Protocol (vendor specific)
54 .db 64 ; Max. EP0 packet size
55 .dw VID ; Manufacturer ID
57 .dw 0x0000 ; Product version (0.00)
58 .db 1 ; Manufacturer string index
59 .db 2 ; Product string index
60 .db 0 ; Serial number string index (none)
61 .db 1 ; Number of configurations
64 ; -----------------------------------------------------------------------------
65 ; Device qualifier (for "other device speed")
66 ; -----------------------------------------------------------------------------
68 .db dev_qualdscr_end - _dev_qual_dscr
74 .db 64 ; Max. EP0 packet size
75 .db 1 ; Number of configurations
76 .db 0 ; Extra reserved byte
79 ; -----------------------------------------------------------------------------
80 ; High-Speed configuration descriptor
81 ; -----------------------------------------------------------------------------
83 .db highspd_dscr_end - _highspd_dscr
85 ; Total length of the configuration (1st line LSB, 2nd line MSB)
86 .db (highspd_dscr_realend - _highspd_dscr) % 256
87 .db (highspd_dscr_realend - _highspd_dscr) / 256
88 .db 1 ; Number of interfaces
89 .db 1 ; Configuration number
90 .db 0 ; Configuration string (none)
91 .db 0x80 ; Attributes (bus powered, no wakeup)
92 .db 0x37 ; Max. power (110mA)
95 ; Bulk interface 0, alt 0
96 .db DSCR_INTERFACE_LEN
97 .db DSCR_INTERFACE_TYPE
98 .db 0 ; Interface index
99 .db 0 ; Alternate setting index
100 .db 1 ; Number of endpoints
101 .db 0xff ; Class (vendor specific)
104 .db 0 ; String index (none)
107 .db DSCR_ENDPOINT_LEN
108 .db DSCR_ENDPOINT_TYPE
109 .db 0x86 ; EP number (6), direction (IN)
110 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
111 .db 0x00 ; Max. packet size, LSB (512 bytes)
112 .db 0x02 ; Max. packet size, MSB (512 bytes)
113 .db 0x00 ; Polling interval
115 ; Isochronous interface 0, alt 1
116 .db DSCR_INTERFACE_LEN
117 .db DSCR_INTERFACE_TYPE
118 .db 0 ; Interface index
119 .db 1 ; Alternate setting index
120 .db 1 ; Number of endpoints
121 .db 0xff ; Class (vendor specific)
124 .db 0 ; String index (none)
127 .db DSCR_ENDPOINT_LEN
128 .db DSCR_ENDPOINT_TYPE
129 .db 0x82 ; EP number (2), direction (IN)
130 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
131 .db 0x00 ; Max. packet size, LSB (3*1024 bytes)
132 .db 0x14 ; Max. packet size, MSB (3*1024 bytes)
133 .db 0x01 ; Polling interval
135 ; Isochronous interface 0, alt 2, 16MB/s
136 .db DSCR_INTERFACE_LEN
137 .db DSCR_INTERFACE_TYPE
138 .db 0 ; Interface index
139 .db 2 ; Alternate setting index
140 .db 1 ; Number of endpoints
141 .db 0xff ; Class (vendor specific)
144 .db 0 ; String index (none)
147 .db DSCR_ENDPOINT_LEN
148 .db DSCR_ENDPOINT_TYPE
149 .db 0x82 ; EP number (2), direction (IN)
150 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
151 .db 0x00 ; Max. packet size, LSB (2*1024 bytes)
152 .db 0x0c ; Max. packet size, MSB (2*1024 bytes)
153 .db 0x01 ; Polling interval
155 ; Isochronous interface 0, alt 3, 8MB/s
156 .db DSCR_INTERFACE_LEN
157 .db DSCR_INTERFACE_TYPE
158 .db 0 ; Interface index
159 .db 3 ; Alternate setting index
160 .db 1 ; Number of endpoints
161 .db 0xff ; Class (vendor specific)
164 .db 0 ; String index (none)
167 .db DSCR_ENDPOINT_LEN
168 .db DSCR_ENDPOINT_TYPE
169 .db 0x82 ; EP number (2), direction (IN)
170 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
171 .db 0x00 ; Max. packet size, LSB (1024 bytes)
172 .db 0x04 ; Max. packet size, MSB (1024 bytes)
173 .db 0x01 ; Polling interval
175 ; Isochronous interface 0, alt 4, 4MB/s
176 .db DSCR_INTERFACE_LEN
177 .db DSCR_INTERFACE_TYPE
178 .db 0 ; Interface index
179 .db 4 ; Alternate setting index
180 .db 1 ; Number of endpoints
181 .db 0xff ; Class (vendor specific)
184 .db 0 ; String index (none)
187 .db DSCR_ENDPOINT_LEN
188 .db DSCR_ENDPOINT_TYPE
189 .db 0x82 ; EP number (2), direction (IN)
190 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
191 .db 0x00 ; Max. packet size, LSB (1024 bytes)
192 .db 0x04 ; Max. packet size, MSB (1024 bytes)
193 .db 0x02 ; Polling interval
195 ; Isochronous interface 0, alt 5, 2MB/s
196 .db DSCR_INTERFACE_LEN
197 .db DSCR_INTERFACE_TYPE
198 .db 0 ; Interface index
199 .db 5 ; Alternate setting index
200 .db 1 ; Number of endpoints
201 .db 0xff ; Class (vendor specific)
204 .db 0 ; String index (none)
207 .db DSCR_ENDPOINT_LEN
208 .db DSCR_ENDPOINT_TYPE
209 .db 0x82 ; EP number (2), direction (IN)
210 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
211 .db 0x00 ; Max. packet size, LSB (1024 bytes)
212 .db 0x04 ; Max. packet size, MSB (1024 bytes)
213 .db 0x03 ; Polling interval
215 ; Isochronous interface 0, alt 6, 1MB/s
216 .db DSCR_INTERFACE_LEN
217 .db DSCR_INTERFACE_TYPE
218 .db 0 ; Interface index
219 .db 6 ; Alternate setting index
220 .db 1 ; Number of endpoints
221 .db 0xff ; Class (vendor specific)
224 .db 0 ; String index (none)
227 .db DSCR_ENDPOINT_LEN
228 .db DSCR_ENDPOINT_TYPE
229 .db 0x82 ; EP number (2), direction (IN)
230 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
231 .db 0x00 ; Max. packet size, LSB (1024 bytes)
232 .db 0x04 ; Max. packet size, MSB (1024 bytes)
233 .db 0x04 ; Polling interval
235 ; Isochronous interface 0, alt 7, 500kB/s
236 .db DSCR_INTERFACE_LEN
237 .db DSCR_INTERFACE_TYPE
238 .db 0 ; Interface index
239 .db 7 ; Alternate setting index
240 .db 1 ; Number of endpoints
241 .db 0xff ; Class (vendor specific)
244 .db 0 ; String index (none)
247 .db DSCR_ENDPOINT_LEN
248 .db DSCR_ENDPOINT_TYPE
249 .db 0x82 ; EP number (2), direction (IN)
250 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
251 .db 0x00 ; Max. packet size, LSB (512 bytes)
252 .db 0x02 ; Max. packet size, MSB (512 bytes)
253 .db 0x04 ; Polling interval
255 highspd_dscr_realend:
259 ; -----------------------------------------------------------------------------
260 ; Full-Speed configuration descriptor
261 ; -----------------------------------------------------------------------------
263 .db fullspd_dscr_end - _fullspd_dscr
265 ; Total length of the configuration (1st line LSB, 2nd line MSB)
266 .db (fullspd_dscr_realend - _fullspd_dscr) % 256
267 .db (fullspd_dscr_realend - _fullspd_dscr) / 256
268 .db 2 ; Number of interfaces
269 .db 1 ; Configuration number
270 .db 0 ; Configuration string (none)
271 .db 0x80 ; Attributes (bus powered, no wakeup)
272 .db 0x37 ; Max. power (110mA)
275 ; Bulk interface 0, alt 0
276 .db DSCR_INTERFACE_LEN
277 .db DSCR_INTERFACE_TYPE
278 .db 0 ; Interface index
279 .db 0 ; Alternate setting index
280 .db 1 ; Number of endpoints
281 .db 0xff ; Class (vendor specific)
284 .db 0 ; String index (none)
287 .db DSCR_ENDPOINT_LEN
288 .db DSCR_ENDPOINT_TYPE
289 .db 0x86 ; EP number (6), direction (IN)
290 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
291 .db 0x40 ; Max. packet size, LSB (512 bytes)
292 .db 0x00 ; Max. packet size, MSB (512 bytes)
293 .db 0x00 ; Polling interval
295 ; Isochronous interface 0, alt 1, 1MB/s
296 .db DSCR_INTERFACE_LEN
297 .db DSCR_INTERFACE_TYPE
298 .db 0 ; Interface index
299 .db 1 ; Alternate setting index
300 .db 1 ; Number of endpoints
301 .db 0xff ; Class (vendor specific)
304 .db 0 ; String index (none)
307 .db DSCR_ENDPOINT_LEN
308 .db DSCR_ENDPOINT_TYPE
309 .db 0x82 ; EP number (2), direction (IN)
310 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
311 .db 0xff ; Max. packet size, LSB (1023 bytes)
312 .db 0x03 ; Max. packet size, MSB (1023 bytes)
313 .db 0x01 ; Polling interval
315 ; Isochronous interface 0, alt 2, 500kB/s
316 .db DSCR_INTERFACE_LEN
317 .db DSCR_INTERFACE_TYPE
318 .db 0 ; Interface index
319 .db 2 ; Alternate setting index
320 .db 1 ; Number of endpoints
321 .db 0xff ; Class (vendor specific)
324 .db 0 ; String index (none)
327 .db DSCR_ENDPOINT_LEN
328 .db DSCR_ENDPOINT_TYPE
329 .db 0x82 ; EP number (2), direction (IN)
330 .db ENDPOINT_TYPE_ISO ; Endpoint type (iso)
331 .db 0x00 ; Max. packet size, LSB (512 bytes)
332 .db 0x02 ; Max. packet size, MSB (512 bytes)
333 .db 0x01 ; Polling interval
335 fullspd_dscr_realend:
339 ; -----------------------------------------------------------------------------
341 ; -----------------------------------------------------------------------------
345 ; See http://www.usb.org/developers/docs/USB_LANGIDs.pdf for the full list.
347 .db string0end - _string0
349 .db 0x09, 0x04 ; Language code 0x0409 (English, US)
353 .db string1end - _string1
355 .ascii 's\0i\0g\0r\0o\0k\0'
359 .db string2end - _string2
361 .ascii 'f\0x\0002\0l\0a\0f\0w\0'