]> sigrok.org Git - sigrok-firmware-fx2lafw.git/blame - dscr.a51
Initial version (work in progress).
[sigrok-firmware-fx2lafw.git] / dscr.a51
CommitLineData
d5f5ea73
UH
1;;
2;; This file is part of the fx2lafw project.
3;;
4;; Copyright (C) 2011-2012 Uwe Hermann <uwe@hermann-uwe.de>
5;;
6;; This program is free software; you can redistribute it and/or modify
7;; it under the terms of the GNU General Public License as published by
8;; the Free Software Foundation; either version 2 of the License, or
9;; (at your option) any later version.
10;;
11;; This program 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
14;; GNU General Public License for more details.
15;;
16;; You should have received a copy of the GNU General Public License
17;; along with this program; if not, write to the Free Software
18;; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19;;
20
21.module DEV_DSCR
22
23; Descriptor types
24DSCR_DEVICE_TYPE = 1
25DSCR_CONFIG_TYPE = 2
26DSCR_STRING_TYPE = 3
27DSCR_INTERFACE_TYPE = 4
28DSCR_ENDPOINT_TYPE = 5
29DSCR_DEVQUAL_TYPE = 6
30
31; Descriptor lengths
32DSCR_INTERFACE_LEN = 9
33DSCR_ENDPOINT_LEN = 7
34
35; Endpoint types
36ENDPOINT_TYPE_CONTROL = 0
37ENDPOINT_TYPE_ISO = 1
38ENDPOINT_TYPE_BULK = 2
39ENDPOINT_TYPE_INT = 3
40
41.globl _dev_dscr, _dev_qual_dscr, _highspd_dscr, _fullspd_dscr, _dev_strings, _dev_strings_end
42.area DSCR_AREA (CODE)
43
44; -----------------------------------------------------------------------------
45; Device descriptor
46; -----------------------------------------------------------------------------
47_dev_dscr:
48 .db dev_dscr_end - _dev_dscr
49 .db DSCR_DEVICE_TYPE
50 .dw 0x0002 ; USB 2.0
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 0x6666 ; Manufacturer ID (0x6666)
56 .dw 0x1900 ; Product ID (0x0019)
57 .dw 0x0100 ; Product version (0.01)
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
62dev_dscr_end:
63
64; -----------------------------------------------------------------------------
65; Device qualifier (for "other device speed")
66; -----------------------------------------------------------------------------
67_dev_qual_dscr:
68 .db dev_qualdscr_end - _dev_qual_dscr
69 .db DSCR_DEVQUAL_TYPE
70 .dw 0x0002 ; USB 2.0
71 .db 0xff ; Class (vendor specific)
72 .db 0xff ; Subclass (vendor specific)
73 .db 0xff ; Protocol (vendor specific)
74 .db 64 ; Max. EP0 packet size
75 .db 1 ; Number of configurations
76 .db 0 ; Extra reserved byte
77dev_qualdscr_end:
78
79; -----------------------------------------------------------------------------
80; High-Speed configuration descriptor
81; -----------------------------------------------------------------------------
82_highspd_dscr:
83 .db highspd_dscr_end - _highspd_dscr
84 .db DSCR_CONFIG_TYPE
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 0x32 ; Max. power (100mA)
93highspd_dscr_end:
94
95 ; Interfaces (only one in our case)
96 .db DSCR_INTERFACE_LEN
97 .db DSCR_INTERFACE_TYPE
98 .db 0 ; Interface index
99 .db 0 ; Alternate setting index
100 .db 2 ; Number of endpoints
101 .db 0xff ; Class (vendor specific)
102 .db 0xff ; Subclass (vendor specific)
103 .db 0xff ; Protocol (vendor specific)
104 .db 0 ; String index (none)
105
106 ; Endpoint 1 (OUT)
107 .db DSCR_ENDPOINT_LEN
108 .db DSCR_ENDPOINT_TYPE
109 .db 0x01 ; EP number (1), direction (OUT)
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
114
115 ; Endpoint 2 (IN)
116 .db DSCR_ENDPOINT_LEN
117 .db DSCR_ENDPOINT_TYPE
118 .db 0x82 ; EP number (2), direction (IN)
119 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
120 .db 0x00 ; Max. packet size, LSB (512 bytes)
121 .db 0x02 ; Max. packet size, MSB (512 bytes)
122 .db 0x00 ; Polling interval
123
124highspd_dscr_realend:
125
126 .even
127
128; -----------------------------------------------------------------------------
129; Full-Speed configuration descriptor
130; -----------------------------------------------------------------------------
131_fullspd_dscr:
132 .db fullspd_dscr_end - _fullspd_dscr
133 .db DSCR_CONFIG_TYPE
134 ; Total length of the configuration (1st line LSB, 2nd line MSB)
135 .db (fullspd_dscr_realend - _fullspd_dscr) % 256
136 .db (fullspd_dscr_realend - _fullspd_dscr) / 256
137 .db 1 ; Number of interfaces
138 .db 1 ; Configuration number
139 .db 0 ; Configuration string (none)
140 .db 0x80 ; Attributes (bus powered, no wakeup)
141 .db 0x32 ; Max. power (100mA)
142fullspd_dscr_end:
143
144 ; Interfaces (only one in our case)
145 .db DSCR_INTERFACE_LEN
146 .db DSCR_INTERFACE_TYPE
147 .db 0 ; Interface index
148 .db 0 ; Alternate setting index
149 .db 2 ; Number of endpoints
150 .db 0xff ; Class (vendor specific)
151 .db 0xff ; Subclass (vendor specific)
152 .db 0xff ; Protocol (vendor specific)
153 .db 0 ; String index (none)
154
155 ; Endpoint 1 (OUT)
156 .db DSCR_ENDPOINT_LEN
157 .db DSCR_ENDPOINT_TYPE
158 .db 0x01 ; EP number (1), direction (OUT)
159 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
160 .db 0x40 ; Max. packet size, LSB (64 bytes)
161 .db 0x00 ; Max. packet size, MSB (64 bytes)
162 .db 0x00 ; Polling interval
163
164 ; Endpoint 2 (IN)
165 .db DSCR_ENDPOINT_LEN
166 .db DSCR_ENDPOINT_TYPE
167 .db 0x82 ; EP number (2), direction (IN)
168 .db ENDPOINT_TYPE_BULK ; Endpoint type (bulk)
169 .db 0x40 ; Max. packet size, LSB (64 bytes)
170 .db 0x00 ; Max. packet size, MSB (64 bytes)
171 .db 0x00 ; Polling interval
172
173fullspd_dscr_realend:
174
175 .even
176
177; -----------------------------------------------------------------------------
178; Strings
179; -----------------------------------------------------------------------------
180
181_dev_strings:
182
183_string0:
184 .db string0end - _string0
185 .db DSCR_STRING_TYPE
186 .db 0x09, 0x04 ; Language code 0x0409 (English)
187string0end:
188
189_string1:
190 .db string1end - _string1
191 .db DSCR_STRING_TYPE
192 .ascii 's'
193 .db 0
194 .ascii 'i'
195 .db 0
196 .ascii 'g'
197 .db 0
198 .ascii 'r'
199 .db 0
200 .ascii 'o'
201 .db 0
202 .ascii 'k'
203 .db 0
204string1end:
205
206_string2:
207 .db string2end - _string2
208 .db DSCR_STRING_TYPE
209 .ascii 'f'
210 .db 0
211 .ascii 'x'
212 .db 0
213 .ascii '2'
214 .db 0
215 .ascii 'l'
216 .db 0
217 .ascii 'a'
218 .db 0
219 .ascii 'f'
220 .db 0
221 .ascii 'w'
222 .db 0
223string2end:
224
225_dev_strings_end:
226 .dw 0x0000
227