aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/dabusb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/dabusb')
-rw-r--r--drivers/staging/dabusb/dabusb.c338
-rw-r--r--drivers/staging/dabusb/dabusb.h41
2 files changed, 193 insertions, 186 deletions
diff --git a/drivers/staging/dabusb/dabusb.c b/drivers/staging/dabusb/dabusb.c
index f3e25e91366..21768a62775 100644
--- a/drivers/staging/dabusb/dabusb.c
+++ b/drivers/staging/dabusb/dabusb.c
@@ -33,8 +33,8 @@
33#include <linux/vmalloc.h> 33#include <linux/vmalloc.h>
34#include <linux/slab.h> 34#include <linux/slab.h>
35#include <linux/init.h> 35#include <linux/init.h>
36#include <asm/uaccess.h> 36#include <linux/uaccess.h>
37#include <asm/atomic.h> 37#include <linux/atomic.h>
38#include <linux/delay.h> 38#include <linux/delay.h>
39#include <linux/usb.h> 39#include <linux/usb.h>
40#include <linux/mutex.h> 40#include <linux/mutex.h>
@@ -66,28 +66,29 @@ static struct usb_driver dabusb_driver;
66 66
67/*-------------------------------------------------------------------*/ 67/*-------------------------------------------------------------------*/
68 68
69static int dabusb_add_buf_tail (pdabusb_t s, struct list_head *dst, struct list_head *src) 69static int dabusb_add_buf_tail(pdabusb_t s, struct list_head *dst,
70 struct list_head *src)
70{ 71{
71 unsigned long flags; 72 unsigned long flags;
72 struct list_head *tmp; 73 struct list_head *tmp;
73 int ret = 0; 74 int ret = 0;
74 75
75 spin_lock_irqsave (&s->lock, flags); 76 spin_lock_irqsave(&s->lock, flags);
76 77
77 if (list_empty (src)) { 78 if (list_empty(src)) {
78 // no elements in source buffer 79 /* no elements in source buffer */
79 ret = -1; 80 ret = -1;
80 goto err; 81 goto err;
81 } 82 }
82 tmp = src->next; 83 tmp = src->next;
83 list_move_tail (tmp, dst); 84 list_move_tail(tmp, dst);
84 85
85 err: spin_unlock_irqrestore (&s->lock, flags); 86err: spin_unlock_irqrestore(&s->lock, flags);
86 return ret; 87 return ret;
87} 88}
88/*-------------------------------------------------------------------*/ 89/*-------------------------------------------------------------------*/
89#ifdef DEBUG 90#ifdef DEBUG
90static void dump_urb (struct urb *urb) 91static void dump_urb(struct urb *urb)
91{ 92{
92 dbg("urb :%p", urb); 93 dbg("urb :%p", urb);
93 dbg("dev :%p", urb->dev); 94 dbg("dev :%p", urb->dev);
@@ -107,26 +108,26 @@ static void dump_urb (struct urb *urb)
107} 108}
108#endif 109#endif
109/*-------------------------------------------------------------------*/ 110/*-------------------------------------------------------------------*/
110static int dabusb_cancel_queue (pdabusb_t s, struct list_head *q) 111static int dabusb_cancel_queue(pdabusb_t s, struct list_head *q)
111{ 112{
112 unsigned long flags; 113 unsigned long flags;
113 pbuff_t b; 114 pbuff_t b;
114 115
115 dbg("dabusb_cancel_queue"); 116 dbg("dabusb_cancel_queue");
116 117
117 spin_lock_irqsave (&s->lock, flags); 118 spin_lock_irqsave(&s->lock, flags);
118 119
119 list_for_each_entry(b, q, buff_list) { 120 list_for_each_entry(b, q, buff_list) {
120#ifdef DEBUG 121#ifdef DEBUG
121 dump_urb(b->purb); 122 dump_urb(b->purb);
122#endif 123#endif
123 usb_unlink_urb (b->purb); 124 usb_unlink_urb(b->purb);
124 } 125 }
125 spin_unlock_irqrestore (&s->lock, flags); 126 spin_unlock_irqrestore(&s->lock, flags);
126 return 0; 127 return 0;
127} 128}
128/*-------------------------------------------------------------------*/ 129/*-------------------------------------------------------------------*/
129static int dabusb_free_queue (struct list_head *q) 130static int dabusb_free_queue(struct list_head *q)
130{ 131{
131 struct list_head *tmp; 132 struct list_head *tmp;
132 struct list_head *p; 133 struct list_head *p;
@@ -134,7 +135,7 @@ static int dabusb_free_queue (struct list_head *q)
134 135
135 dbg("dabusb_free_queue"); 136 dbg("dabusb_free_queue");
136 for (p = q->next; p != q;) { 137 for (p = q->next; p != q;) {
137 b = list_entry (p, buff_t, buff_list); 138 b = list_entry(p, buff_t, buff_list);
138 139
139#ifdef DEBUG 140#ifdef DEBUG
140 dump_urb(b->purb); 141 dump_urb(b->purb);
@@ -142,23 +143,23 @@ static int dabusb_free_queue (struct list_head *q)
142 kfree(b->purb->transfer_buffer); 143 kfree(b->purb->transfer_buffer);
143 usb_free_urb(b->purb); 144 usb_free_urb(b->purb);
144 tmp = p->next; 145 tmp = p->next;
145 list_del (p); 146 list_del(p);
146 kfree (b); 147 kfree(b);
147 p = tmp; 148 p = tmp;
148 } 149 }
149 150
150 return 0; 151 return 0;
151} 152}
152/*-------------------------------------------------------------------*/ 153/*-------------------------------------------------------------------*/
153static int dabusb_free_buffers (pdabusb_t s) 154static int dabusb_free_buffers(pdabusb_t s)
154{ 155{
155 unsigned long flags; 156 unsigned long flags;
156 dbg("dabusb_free_buffers"); 157 dbg("dabusb_free_buffers");
157 158
158 spin_lock_irqsave(&s->lock, flags); 159 spin_lock_irqsave(&s->lock, flags);
159 160
160 dabusb_free_queue (&s->free_buff_list); 161 dabusb_free_queue(&s->free_buff_list);
161 dabusb_free_queue (&s->rec_buff_list); 162 dabusb_free_queue(&s->rec_buff_list);
162 163
163 spin_unlock_irqrestore(&s->lock, flags); 164 spin_unlock_irqrestore(&s->lock, flags);
164 165
@@ -166,7 +167,7 @@ static int dabusb_free_buffers (pdabusb_t s)
166 return 0; 167 return 0;
167} 168}
168/*-------------------------------------------------------------------*/ 169/*-------------------------------------------------------------------*/
169static void dabusb_iso_complete (struct urb *purb) 170static void dabusb_iso_complete(struct urb *purb)
170{ 171{
171 pbuff_t b = purb->context; 172 pbuff_t b = purb->context;
172 pdabusb_t s = b->s; 173 pdabusb_t s = b->s;
@@ -177,42 +178,45 @@ static void dabusb_iso_complete (struct urb *purb)
177 178
178 dbg("dabusb_iso_complete"); 179 dbg("dabusb_iso_complete");
179 180
180 // process if URB was not killed 181 /* process if URB was not killed */
181 if (purb->status != -ENOENT) { 182 if (purb->status != -ENOENT) {
182 unsigned int pipe = usb_rcvisocpipe (purb->dev, _DABUSB_ISOPIPE); 183 unsigned int pipe = usb_rcvisocpipe(purb->dev, _DABUSB_ISOPIPE);
183 int pipesize = usb_maxpacket (purb->dev, pipe, usb_pipeout (pipe)); 184 int pipesize = usb_maxpacket(purb->dev, pipe,
185 usb_pipeout(pipe));
184 for (i = 0; i < purb->number_of_packets; i++) 186 for (i = 0; i < purb->number_of_packets; i++)
185 if (!purb->iso_frame_desc[i].status) { 187 if (!purb->iso_frame_desc[i].status) {
186 len = purb->iso_frame_desc[i].actual_length; 188 len = purb->iso_frame_desc[i].actual_length;
187 if (len <= pipesize) { 189 if (len <= pipesize) {
188 memcpy (buf + dst, buf + purb->iso_frame_desc[i].offset, len); 190 memcpy(buf + dst, buf + purb->iso_frame_desc[i].offset, len);
189 dst += len; 191 dst += len;
190 } 192 } else
191 else
192 dev_err(&purb->dev->dev, 193 dev_err(&purb->dev->dev,
193 "dabusb_iso_complete: invalid len %d\n", len); 194 "dabusb_iso_complete: invalid len %d\n",
194 } 195 len);
195 else 196 } else
196 dev_warn(&purb->dev->dev, "dabusb_iso_complete: corrupted packet status: %d\n", purb->iso_frame_desc[i].status); 197 dev_warn(&purb->dev->dev,
198 "dabusb_iso_complete: corrupted packet status: %d\n",
199 purb->iso_frame_desc[i].status);
197 if (dst != purb->actual_length) 200 if (dst != purb->actual_length)
198 dev_err(&purb->dev->dev, 201 dev_err(&purb->dev->dev,
199 "dst!=purb->actual_length:%d!=%d\n", 202 "dst!=purb->actual_length:%d!=%d\n",
200 dst, purb->actual_length); 203 dst, purb->actual_length);
201 } 204 }
202 205
203 if (atomic_dec_and_test (&s->pending_io) && !s->remove_pending && s->state != _stopped) { 206 if (atomic_dec_and_test(&s->pending_io) &&
207 !s->remove_pending && s->state != _stopped) {
204 s->overruns++; 208 s->overruns++;
205 dev_err(&purb->dev->dev, "overrun (%d)\n", s->overruns); 209 dev_err(&purb->dev->dev, "overrun (%d)\n", s->overruns);
206 } 210 }
207 wake_up (&s->wait); 211 wake_up(&s->wait);
208} 212}
209/*-------------------------------------------------------------------*/ 213/*-------------------------------------------------------------------*/
210static int dabusb_alloc_buffers (pdabusb_t s) 214static int dabusb_alloc_buffers(pdabusb_t s)
211{ 215{
212 int transfer_len = 0; 216 int transfer_len = 0;
213 pbuff_t b; 217 pbuff_t b;
214 unsigned int pipe = usb_rcvisocpipe (s->usbdev, _DABUSB_ISOPIPE); 218 unsigned int pipe = usb_rcvisocpipe(s->usbdev, _DABUSB_ISOPIPE);
215 int pipesize = usb_maxpacket (s->usbdev, pipe, usb_pipeout (pipe)); 219 int pipesize = usb_maxpacket(s->usbdev, pipe, usb_pipeout(pipe));
216 int packets = _ISOPIPESIZE / pipesize; 220 int packets = _ISOPIPESIZE / pipesize;
217 int transfer_buffer_length = packets * pipesize; 221 int transfer_buffer_length = packets * pipesize;
218 int i; 222 int i;
@@ -221,7 +225,7 @@ static int dabusb_alloc_buffers (pdabusb_t s)
221 pipesize, packets, transfer_buffer_length); 225 pipesize, packets, transfer_buffer_length);
222 226
223 while (transfer_len < (s->total_buffer_size << 10)) { 227 while (transfer_len < (s->total_buffer_size << 10)) {
224 b = kzalloc(sizeof (buff_t), GFP_KERNEL); 228 b = kzalloc(sizeof(buff_t), GFP_KERNEL);
225 if (!b) { 229 if (!b) {
226 dev_err(&s->usbdev->dev, 230 dev_err(&s->usbdev->dev,
227 "kzalloc(sizeof(buff_t))==NULL\n"); 231 "kzalloc(sizeof(buff_t))==NULL\n");
@@ -231,14 +235,15 @@ static int dabusb_alloc_buffers (pdabusb_t s)
231 b->purb = usb_alloc_urb(packets, GFP_KERNEL); 235 b->purb = usb_alloc_urb(packets, GFP_KERNEL);
232 if (!b->purb) { 236 if (!b->purb) {
233 dev_err(&s->usbdev->dev, "usb_alloc_urb == NULL\n"); 237 dev_err(&s->usbdev->dev, "usb_alloc_urb == NULL\n");
234 kfree (b); 238 kfree(b);
235 goto err; 239 goto err;
236 } 240 }
237 241
238 b->purb->transfer_buffer = kmalloc (transfer_buffer_length, GFP_KERNEL); 242 b->purb->transfer_buffer = kmalloc(transfer_buffer_length,
243 GFP_KERNEL);
239 if (!b->purb->transfer_buffer) { 244 if (!b->purb->transfer_buffer) {
240 kfree (b->purb); 245 kfree(b->purb);
241 kfree (b); 246 kfree(b);
242 dev_err(&s->usbdev->dev, 247 dev_err(&s->usbdev->dev,
243 "kmalloc(%d)==NULL\n", transfer_buffer_length); 248 "kmalloc(%d)==NULL\n", transfer_buffer_length);
244 goto err; 249 goto err;
@@ -258,18 +263,18 @@ static int dabusb_alloc_buffers (pdabusb_t s)
258 } 263 }
259 264
260 transfer_len += transfer_buffer_length; 265 transfer_len += transfer_buffer_length;
261 list_add_tail (&b->buff_list, &s->free_buff_list); 266 list_add_tail(&b->buff_list, &s->free_buff_list);
262 } 267 }
263 s->got_mem = transfer_len; 268 s->got_mem = transfer_len;
264 269
265 return 0; 270 return 0;
266 271
267 err: 272err:
268 dabusb_free_buffers (s); 273 dabusb_free_buffers(s);
269 return -ENOMEM; 274 return -ENOMEM;
270} 275}
271/*-------------------------------------------------------------------*/ 276/*-------------------------------------------------------------------*/
272static int dabusb_bulk (pdabusb_t s, pbulk_transfer_t pb) 277static int dabusb_bulk(pdabusb_t s, pbulk_transfer_t pb)
273{ 278{
274 int ret; 279 int ret;
275 unsigned int pipe; 280 unsigned int pipe;
@@ -278,25 +283,26 @@ static int dabusb_bulk (pdabusb_t s, pbulk_transfer_t pb)
278 dbg("dabusb_bulk"); 283 dbg("dabusb_bulk");
279 284
280 if (!pb->pipe) 285 if (!pb->pipe)
281 pipe = usb_rcvbulkpipe (s->usbdev, 2); 286 pipe = usb_rcvbulkpipe(s->usbdev, 2);
282 else 287 else
283 pipe = usb_sndbulkpipe (s->usbdev, 2); 288 pipe = usb_sndbulkpipe(s->usbdev, 2);
284 289
285 ret=usb_bulk_msg(s->usbdev, pipe, pb->data, pb->size, &actual_length, 100); 290 ret = usb_bulk_msg(s->usbdev, pipe, pb->data,
286 if(ret<0) { 291 pb->size, &actual_length, 100);
292 if (ret < 0) {
287 dev_err(&s->usbdev->dev, 293 dev_err(&s->usbdev->dev,
288 "usb_bulk_msg failed(%d)\n", ret); 294 "usb_bulk_msg failed(%d)\n", ret);
289 295
290 if (usb_set_interface (s->usbdev, _DABUSB_IF, 1) < 0) { 296 if (usb_set_interface(s->usbdev, _DABUSB_IF, 1) < 0) {
291 dev_err(&s->usbdev->dev, "set_interface failed\n"); 297 dev_err(&s->usbdev->dev, "set_interface failed\n");
292 return -EINVAL; 298 return -EINVAL;
293 } 299 }
294 300
295 } 301 }
296 302
297 if( ret == -EPIPE ) { 303 if (ret == -EPIPE) {
298 dev_warn(&s->usbdev->dev, "CLEAR_FEATURE request to remove STALL condition.\n"); 304 dev_warn(&s->usbdev->dev, "CLEAR_FEATURE request to remove STALL condition.\n");
299 if(usb_clear_halt(s->usbdev, usb_pipeendpoint(pipe))) 305 if (usb_clear_halt(s->usbdev, usb_pipeendpoint(pipe)))
300 dev_err(&s->usbdev->dev, "request failed\n"); 306 dev_err(&s->usbdev->dev, "request failed\n");
301 } 307 }
302 308
@@ -304,11 +310,11 @@ static int dabusb_bulk (pdabusb_t s, pbulk_transfer_t pb)
304 return ret; 310 return ret;
305} 311}
306/* --------------------------------------------------------------------- */ 312/* --------------------------------------------------------------------- */
307static int dabusb_writemem (pdabusb_t s, int pos, const unsigned char *data, 313static int dabusb_writemem(pdabusb_t s, int pos, const unsigned char *data,
308 int len) 314 int len)
309{ 315{
310 int ret; 316 int ret;
311 unsigned char *transfer_buffer = kmalloc (len, GFP_KERNEL); 317 unsigned char *transfer_buffer = kmalloc(len, GFP_KERNEL);
312 318
313 if (!transfer_buffer) { 319 if (!transfer_buffer) {
314 dev_err(&s->usbdev->dev, 320 dev_err(&s->usbdev->dev,
@@ -316,21 +322,22 @@ static int dabusb_writemem (pdabusb_t s, int pos, const unsigned char *data,
316 return -ENOMEM; 322 return -ENOMEM;
317 } 323 }
318 324
319 memcpy (transfer_buffer, data, len); 325 memcpy(transfer_buffer, data, len);
320 326
321 ret=usb_control_msg(s->usbdev, usb_sndctrlpipe( s->usbdev, 0 ), 0xa0, 0x40, pos, 0, transfer_buffer, len, 300); 327 ret = usb_control_msg(s->usbdev, usb_sndctrlpipe(s->usbdev, 0),
328 0xa0, 0x40, pos, 0, transfer_buffer, len, 300);
322 329
323 kfree (transfer_buffer); 330 kfree(transfer_buffer);
324 return ret; 331 return ret;
325} 332}
326/* --------------------------------------------------------------------- */ 333/* --------------------------------------------------------------------- */
327static int dabusb_8051_reset (pdabusb_t s, unsigned char reset_bit) 334static int dabusb_8051_reset(pdabusb_t s, unsigned char reset_bit)
328{ 335{
329 dbg("dabusb_8051_reset: %d",reset_bit); 336 dbg("dabusb_8051_reset: %d", reset_bit);
330 return dabusb_writemem (s, CPUCS_REG, &reset_bit, 1); 337 return dabusb_writemem(s, CPUCS_REG, &reset_bit, 1);
331} 338}
332/* --------------------------------------------------------------------- */ 339/* --------------------------------------------------------------------- */
333static int dabusb_loadmem (pdabusb_t s, const char *fname) 340static int dabusb_loadmem(pdabusb_t s, const char *fname)
334{ 341{
335 int ret; 342 int ret;
336 const struct ihex_binrec *rec; 343 const struct ihex_binrec *rec;
@@ -344,7 +351,7 @@ static int dabusb_loadmem (pdabusb_t s, const char *fname)
344 "Failed to load \"dabusb/firmware.fw\": %d\n", ret); 351 "Failed to load \"dabusb/firmware.fw\": %d\n", ret);
345 goto out; 352 goto out;
346 } 353 }
347 ret = dabusb_8051_reset (s, 1); 354 ret = dabusb_8051_reset(s, 1);
348 355
349 for (rec = (const struct ihex_binrec *)fw->data; rec; 356 for (rec = (const struct ihex_binrec *)fw->data; rec;
350 rec = ihex_next_binrec(rec)) { 357 rec = ihex_next_binrec(rec)) {
@@ -361,7 +368,7 @@ static int dabusb_loadmem (pdabusb_t s, const char *fname)
361 break; 368 break;
362 } 369 }
363 } 370 }
364 ret = dabusb_8051_reset (s, 0); 371 ret = dabusb_8051_reset(s, 0);
365 release_firmware(fw); 372 release_firmware(fw);
366 out: 373 out:
367 dbg("dabusb_loadmem: exit"); 374 dbg("dabusb_loadmem: exit");
@@ -369,7 +376,7 @@ static int dabusb_loadmem (pdabusb_t s, const char *fname)
369 return ret; 376 return ret;
370} 377}
371/* --------------------------------------------------------------------- */ 378/* --------------------------------------------------------------------- */
372static int dabusb_fpga_clear (pdabusb_t s, pbulk_transfer_t b) 379static int dabusb_fpga_clear(pdabusb_t s, pbulk_transfer_t b)
373{ 380{
374 b->size = 4; 381 b->size = 4;
375 b->data[0] = 0x2a; 382 b->data[0] = 0x2a;
@@ -379,10 +386,10 @@ static int dabusb_fpga_clear (pdabusb_t s, pbulk_transfer_t b)
379 386
380 dbg("dabusb_fpga_clear"); 387 dbg("dabusb_fpga_clear");
381 388
382 return dabusb_bulk (s, b); 389 return dabusb_bulk(s, b);
383} 390}
384/* --------------------------------------------------------------------- */ 391/* --------------------------------------------------------------------- */
385static int dabusb_fpga_init (pdabusb_t s, pbulk_transfer_t b) 392static int dabusb_fpga_init(pdabusb_t s, pbulk_transfer_t b)
386{ 393{
387 b->size = 4; 394 b->size = 4;
388 b->data[0] = 0x2c; 395 b->data[0] = 0x2c;
@@ -392,12 +399,12 @@ static int dabusb_fpga_init (pdabusb_t s, pbulk_transfer_t b)
392 399
393 dbg("dabusb_fpga_init"); 400 dbg("dabusb_fpga_init");
394 401
395 return dabusb_bulk (s, b); 402 return dabusb_bulk(s, b);
396} 403}
397/* --------------------------------------------------------------------- */ 404/* --------------------------------------------------------------------- */
398static int dabusb_fpga_download (pdabusb_t s, const char *fname) 405static int dabusb_fpga_download(pdabusb_t s, const char *fname)
399{ 406{
400 pbulk_transfer_t b = kmalloc (sizeof (bulk_transfer_t), GFP_KERNEL); 407 pbulk_transfer_t b = kmalloc(sizeof(bulk_transfer_t), GFP_KERNEL);
401 const struct firmware *fw; 408 const struct firmware *fw;
402 unsigned int blen, n; 409 unsigned int blen, n;
403 int ret; 410 int ret;
@@ -419,8 +426,8 @@ static int dabusb_fpga_download (pdabusb_t s, const char *fname)
419 } 426 }
420 427
421 b->pipe = 1; 428 b->pipe = 1;
422 ret = dabusb_fpga_clear (s, b); 429 ret = dabusb_fpga_clear(s, b);
423 mdelay (10); 430 mdelay(10);
424 blen = fw->data[73] + (fw->data[72] << 8); 431 blen = fw->data[73] + (fw->data[72] << 8);
425 432
426 dbg("Bitstream len: %i", blen); 433 dbg("Bitstream len: %i", blen);
@@ -431,19 +438,19 @@ static int dabusb_fpga_download (pdabusb_t s, const char *fname)
431 b->data[3] = 60; 438 b->data[3] = 60;
432 439
433 for (n = 0; n <= blen + 60; n += 60) { 440 for (n = 0; n <= blen + 60; n += 60) {
434 // some cclks for startup 441 /* some cclks for startup */
435 b->size = 64; 442 b->size = 64;
436 memcpy (b->data + 4, fw->data + 74 + n, 60); 443 memcpy(b->data + 4, fw->data + 74 + n, 60);
437 ret = dabusb_bulk (s, b); 444 ret = dabusb_bulk(s, b);
438 if (ret < 0) { 445 if (ret < 0) {
439 dev_err(&s->usbdev->dev, "dabusb_bulk failed.\n"); 446 dev_err(&s->usbdev->dev, "dabusb_bulk failed.\n");
440 break; 447 break;
441 } 448 }
442 mdelay (1); 449 mdelay(1);
443 } 450 }
444 451
445 ret = dabusb_fpga_init (s, b); 452 ret = dabusb_fpga_init(s, b);
446 kfree (b); 453 kfree(b);
447 release_firmware(fw); 454 release_firmware(fw);
448 455
449 dbg("exit dabusb_fpga_download"); 456 dbg("exit dabusb_fpga_download");
@@ -451,12 +458,12 @@ static int dabusb_fpga_download (pdabusb_t s, const char *fname)
451 return ret; 458 return ret;
452} 459}
453 460
454static int dabusb_stop (pdabusb_t s) 461static int dabusb_stop(pdabusb_t s)
455{ 462{
456 dbg("dabusb_stop"); 463 dbg("dabusb_stop");
457 464
458 s->state = _stopped; 465 s->state = _stopped;
459 dabusb_cancel_queue (s, &s->rec_buff_list); 466 dabusb_cancel_queue(s, &s->rec_buff_list);
460 467
461 dbg("pending_io: %d", s->pending_io.counter); 468 dbg("pending_io: %d", s->pending_io.counter);
462 469
@@ -464,50 +471,53 @@ static int dabusb_stop (pdabusb_t s)
464 return 0; 471 return 0;
465} 472}
466 473
467static int dabusb_startrek (pdabusb_t s) 474static int dabusb_startrek(pdabusb_t s)
468{ 475{
469 if (!s->got_mem && s->state != _started) { 476 if (!s->got_mem && s->state != _started) {
470 477
471 dbg("dabusb_startrek"); 478 dbg("dabusb_startrek");
472 479
473 if (dabusb_alloc_buffers (s) < 0) 480 if (dabusb_alloc_buffers(s) < 0)
474 return -ENOMEM; 481 return -ENOMEM;
475 dabusb_stop (s); 482 dabusb_stop(s);
476 s->state = _started; 483 s->state = _started;
477 s->readptr = 0; 484 s->readptr = 0;
478 } 485 }
479 486
480 if (!list_empty (&s->free_buff_list)) { 487 if (!list_empty(&s->free_buff_list)) {
481 pbuff_t end; 488 pbuff_t end;
482 int ret; 489 int ret;
483 490
484 while (!dabusb_add_buf_tail (s, &s->rec_buff_list, &s->free_buff_list)) { 491 while (!dabusb_add_buf_tail(s, &s->rec_buff_list, &s->free_buff_list)) {
485 492
486 dbg("submitting: end:%p s->rec_buff_list:%p", s->rec_buff_list.prev, &s->rec_buff_list); 493 dbg("submitting: end:%p s->rec_buff_list:%p",
494 s->rec_buff_list.prev, &s->rec_buff_list);
487 495
488 end = list_entry (s->rec_buff_list.prev, buff_t, buff_list); 496 end = list_entry(s->rec_buff_list.prev,
497 buff_t, buff_list);
489 498
490 ret = usb_submit_urb (end->purb, GFP_KERNEL); 499 ret = usb_submit_urb(end->purb, GFP_KERNEL);
491 if (ret) { 500 if (ret) {
492 dev_err(&s->usbdev->dev, 501 dev_err(&s->usbdev->dev,
493 "usb_submit_urb returned:%d\n", ret); 502 "usb_submit_urb returned:%d\n", ret);
494 if (dabusb_add_buf_tail (s, &s->free_buff_list, &s->rec_buff_list)) 503 if (dabusb_add_buf_tail(s, &s->free_buff_list,
504 &s->rec_buff_list))
495 dev_err(&s->usbdev->dev, 505 dev_err(&s->usbdev->dev,
496 "startrek: dabusb_add_buf_tail failed\n"); 506 "startrek: dabusb_add_buf_tail failed\n");
497 break; 507 break;
498 } 508 } else
499 else 509 atomic_inc(&s->pending_io);
500 atomic_inc (&s->pending_io);
501 } 510 }
502 dbg("pending_io: %d",s->pending_io.counter); 511 dbg("pending_io: %d", s->pending_io.counter);
503 } 512 }
504 513
505 return 0; 514 return 0;
506} 515}
507 516
508static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, loff_t * ppos) 517static ssize_t dabusb_read(struct file *file, char __user *buf,
518 size_t count, loff_t *ppos)
509{ 519{
510 pdabusb_t s = (pdabusb_t) file->private_data; 520 pdabusb_t s = (pdabusb_t)file->private_data;
511 unsigned long flags; 521 unsigned long flags;
512 unsigned ret = 0; 522 unsigned ret = 0;
513 int rem; 523 int rem;
@@ -528,11 +538,11 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l
528 return -EIO; 538 return -EIO;
529 539
530 while (count > 0) { 540 while (count > 0) {
531 dabusb_startrek (s); 541 dabusb_startrek(s);
532 542
533 spin_lock_irqsave (&s->lock, flags); 543 spin_lock_irqsave(&s->lock, flags);
534 544
535 if (list_empty (&s->rec_buff_list)) { 545 if (list_empty(&s->rec_buff_list)) {
536 546
537 spin_unlock_irqrestore(&s->lock, flags); 547 spin_unlock_irqrestore(&s->lock, flags);
538 548
@@ -541,30 +551,30 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l
541 goto err; 551 goto err;
542 } 552 }
543 553
544 b = list_entry (s->rec_buff_list.next, buff_t, buff_list); 554 b = list_entry(s->rec_buff_list.next, buff_t, buff_list);
545 purb = b->purb; 555 purb = b->purb;
546 556
547 spin_unlock_irqrestore(&s->lock, flags); 557 spin_unlock_irqrestore(&s->lock, flags);
548 558
549 if (purb->status == -EINPROGRESS) { 559 if (purb->status == -EINPROGRESS) {
550 if (file->f_flags & O_NONBLOCK) // return nonblocking 560 /* return nonblocking */
551 { 561 if (file->f_flags & O_NONBLOCK) {
552 if (!ret) 562 if (!ret)
553 ret = -EAGAIN; 563 ret = -EAGAIN;
554 goto err; 564 goto err;
555 } 565 }
556 566
557 interruptible_sleep_on (&s->wait); 567 interruptible_sleep_on(&s->wait);
558 568
559 if (signal_pending (current)) { 569 if (signal_pending(current)) {
560 if (!ret) 570 if (!ret)
561 ret = -ERESTARTSYS; 571 ret = -ERESTARTSYS;
562 goto err; 572 goto err;
563 } 573 }
564 574
565 spin_lock_irqsave (&s->lock, flags); 575 spin_lock_irqsave(&s->lock, flags);
566 576
567 if (list_empty (&s->rec_buff_list)) { 577 if (list_empty(&s->rec_buff_list)) {
568 spin_unlock_irqrestore(&s->lock, flags); 578 spin_unlock_irqrestore(&s->lock, flags);
569 dev_err(&s->usbdev->dev, 579 dev_err(&s->usbdev->dev,
570 "error: still no buffer available.\n"); 580 "error: still no buffer available.\n");
@@ -578,16 +588,20 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l
578 goto err; 588 goto err;
579 } 589 }
580 590
581 rem = purb->actual_length - s->readptr; // set remaining bytes to copy 591 /* set remaining bytes to copy */
592 rem = purb->actual_length - s->readptr;
582 593
583 if (count >= rem) 594 if (count >= rem)
584 cnt = rem; 595 cnt = rem;
585 else 596 else
586 cnt = count; 597 cnt = count;
587 598
588 dbg("copy_to_user:%p %p %d",buf, purb->transfer_buffer + s->readptr, cnt); 599 dbg("copy_to_user:%p %p %d", buf,
600 purb->transfer_buffer + s->readptr, cnt);
589 601
590 if (copy_to_user (buf, purb->transfer_buffer + s->readptr, cnt)) { 602 if (copy_to_user(buf,
603 purb->transfer_buffer + s->readptr,
604 cnt)) {
591 dev_err(&s->usbdev->dev, "read: copy_to_user failed\n"); 605 dev_err(&s->usbdev->dev, "read: copy_to_user failed\n");
592 if (!ret) 606 if (!ret)
593 ret = -EFAULT; 607 ret = -EFAULT;
@@ -600,18 +614,19 @@ static ssize_t dabusb_read (struct file *file, char __user *buf, size_t count, l
600 ret += cnt; 614 ret += cnt;
601 615
602 if (s->readptr == purb->actual_length) { 616 if (s->readptr == purb->actual_length) {
603 // finished, take next buffer 617 /* finished, take next buffer */
604 if (dabusb_add_buf_tail (s, &s->free_buff_list, &s->rec_buff_list)) 618 if (dabusb_add_buf_tail(s, &s->free_buff_list,
619 &s->rec_buff_list))
605 dev_err(&s->usbdev->dev, 620 dev_err(&s->usbdev->dev,
606 "read: dabusb_add_buf_tail failed\n"); 621 "read: dabusb_add_buf_tail failed\n");
607 s->readptr = 0; 622 s->readptr = 0;
608 } 623 }
609 } 624 }
610 err: //mutex_unlock(&s->mutex); 625err: /*mutex_unlock(&s->mutex);*/
611 return ret; 626 return ret;
612} 627}
613 628
614static int dabusb_open (struct inode *inode, struct file *file) 629static int dabusb_open(struct inode *inode, struct file *file)
615{ 630{
616 int devnum = iminor(inode); 631 int devnum = iminor(inode);
617 pdabusb_t s; 632 pdabusb_t s;
@@ -632,11 +647,11 @@ static int dabusb_open (struct inode *inode, struct file *file)
632 return -EBUSY; 647 return -EBUSY;
633 msleep_interruptible(500); 648 msleep_interruptible(500);
634 649
635 if (signal_pending (current)) 650 if (signal_pending(current))
636 return -EAGAIN; 651 return -EAGAIN;
637 mutex_lock(&s->mutex); 652 mutex_lock(&s->mutex);
638 } 653 }
639 if (usb_set_interface (s->usbdev, _DABUSB_IF, 1) < 0) { 654 if (usb_set_interface(s->usbdev, _DABUSB_IF, 1) < 0) {
640 mutex_unlock(&s->mutex); 655 mutex_unlock(&s->mutex);
641 dev_err(&s->usbdev->dev, "set_interface failed\n"); 656 dev_err(&s->usbdev->dev, "set_interface failed\n");
642 return -EINVAL; 657 return -EINVAL;
@@ -651,31 +666,30 @@ static int dabusb_open (struct inode *inode, struct file *file)
651 return r; 666 return r;
652} 667}
653 668
654static int dabusb_release (struct inode *inode, struct file *file) 669static int dabusb_release(struct inode *inode, struct file *file)
655{ 670{
656 pdabusb_t s = (pdabusb_t) file->private_data; 671 pdabusb_t s = (pdabusb_t)file->private_data;
657 672
658 dbg("dabusb_release"); 673 dbg("dabusb_release");
659 674
660 mutex_lock(&s->mutex); 675 mutex_lock(&s->mutex);
661 dabusb_stop (s); 676 dabusb_stop(s);
662 dabusb_free_buffers (s); 677 dabusb_free_buffers(s);
663 mutex_unlock(&s->mutex); 678 mutex_unlock(&s->mutex);
664 679
665 if (!s->remove_pending) { 680 if (!s->remove_pending) {
666 if (usb_set_interface (s->usbdev, _DABUSB_IF, 0) < 0) 681 if (usb_set_interface(s->usbdev, _DABUSB_IF, 0) < 0)
667 dev_err(&s->usbdev->dev, "set_interface failed\n"); 682 dev_err(&s->usbdev->dev, "set_interface failed\n");
668 } 683 } else
669 else 684 wake_up(&s->remove_ok);
670 wake_up (&s->remove_ok);
671 685
672 s->opened = 0; 686 s->opened = 0;
673 return 0; 687 return 0;
674} 688}
675 689
676static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long arg) 690static long dabusb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
677{ 691{
678 pdabusb_t s = (pdabusb_t) file->private_data; 692 pdabusb_t s = (pdabusb_t)file->private_data;
679 pbulk_transfer_t pbulk; 693 pbulk_transfer_t pbulk;
680 int ret = 0; 694 int ret = 0;
681 int version = DABUSB_VERSION; 695 int version = DABUSB_VERSION;
@@ -703,20 +717,20 @@ static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long arg
703 break; 717 break;
704 } 718 }
705 719
706 ret=dabusb_bulk (s, pbulk); 720 ret = dabusb_bulk(s, pbulk);
707 if(ret==0) 721 if (ret == 0)
708 if (copy_to_user((void __user *)arg, pbulk, 722 if (copy_to_user((void __user *)arg, pbulk,
709 sizeof(bulk_transfer_t))) 723 sizeof(bulk_transfer_t)))
710 ret = -EFAULT; 724 ret = -EFAULT;
711 kfree (pbulk); 725 kfree(pbulk);
712 break; 726 break;
713 727
714 case IOCTL_DAB_OVERRUNS: 728 case IOCTL_DAB_OVERRUNS:
715 ret = put_user (s->overruns, (unsigned int __user *) arg); 729 ret = put_user(s->overruns, (unsigned int __user *) arg);
716 break; 730 break;
717 731
718 case IOCTL_DAB_VERSION: 732 case IOCTL_DAB_VERSION:
719 ret = put_user (version, (unsigned int __user *) arg); 733 ret = put_user(version, (unsigned int __user *) arg);
720 break; 734 break;
721 735
722 default: 736 default:
@@ -727,8 +741,7 @@ static long dabusb_ioctl (struct file *file, unsigned int cmd, unsigned long arg
727 return ret; 741 return ret;
728} 742}
729 743
730static const struct file_operations dabusb_fops = 744static const struct file_operations dabusb_fops = {
731{
732 .owner = THIS_MODULE, 745 .owner = THIS_MODULE,
733 .llseek = no_llseek, 746 .llseek = no_llseek,
734 .read = dabusb_read, 747 .read = dabusb_read,
@@ -751,7 +764,7 @@ static struct usb_class_driver dabusb_class = {
751 764
752 765
753/* --------------------------------------------------------------------- */ 766/* --------------------------------------------------------------------- */
754static int dabusb_probe (struct usb_interface *intf, 767static int dabusb_probe(struct usb_interface *intf,
755 const struct usb_device_id *id) 768 const struct usb_device_id *id)
756{ 769{
757 struct usb_device *usbdev = interface_to_usbdev(intf); 770 struct usb_device *usbdev = interface_to_usbdev(intf);
@@ -780,54 +793,53 @@ static int dabusb_probe (struct usb_interface *intf,
780 s->usbdev = usbdev; 793 s->usbdev = usbdev;
781 s->devnum = intf->minor; 794 s->devnum = intf->minor;
782 795
783 if (usb_reset_configuration (usbdev) < 0) { 796 if (usb_reset_configuration(usbdev) < 0) {
784 dev_err(&intf->dev, "reset_configuration failed\n"); 797 dev_err(&intf->dev, "reset_configuration failed\n");
785 goto reject; 798 goto reject;
786 } 799 }
787 if (le16_to_cpu(usbdev->descriptor.idProduct) == 0x2131) { 800 if (le16_to_cpu(usbdev->descriptor.idProduct) == 0x2131) {
788 dabusb_loadmem (s, NULL); 801 dabusb_loadmem(s, NULL);
789 goto reject; 802 goto reject;
790 } 803 } else {
791 else { 804 dabusb_fpga_download(s, NULL);
792 dabusb_fpga_download (s, NULL);
793 805
794 if (usb_set_interface (s->usbdev, _DABUSB_IF, 0) < 0) { 806 if (usb_set_interface(s->usbdev, _DABUSB_IF, 0) < 0) {
795 dev_err(&intf->dev, "set_interface failed\n"); 807 dev_err(&intf->dev, "set_interface failed\n");
796 goto reject; 808 goto reject;
797 } 809 }
798 } 810 }
799 dbg("bound to interface: %d", intf->altsetting->desc.bInterfaceNumber); 811 dbg("bound to interface: %d", intf->altsetting->desc.bInterfaceNumber);
800 usb_set_intfdata (intf, s); 812 usb_set_intfdata(intf, s);
801 mutex_unlock(&s->mutex); 813 mutex_unlock(&s->mutex);
802 814
803 retval = usb_register_dev(intf, &dabusb_class); 815 retval = usb_register_dev(intf, &dabusb_class);
804 if (retval) { 816 if (retval) {
805 usb_set_intfdata (intf, NULL); 817 usb_set_intfdata(intf, NULL);
806 return -ENOMEM; 818 return -ENOMEM;
807 } 819 }
808 820
809 return 0; 821 return 0;
810 822
811 reject: 823reject:
812 mutex_unlock(&s->mutex); 824 mutex_unlock(&s->mutex);
813 s->usbdev = NULL; 825 s->usbdev = NULL;
814 return -ENODEV; 826 return -ENODEV;
815} 827}
816 828
817static void dabusb_disconnect (struct usb_interface *intf) 829static void dabusb_disconnect(struct usb_interface *intf)
818{ 830{
819 wait_queue_t __wait; 831 wait_queue_t __wait;
820 pdabusb_t s = usb_get_intfdata (intf); 832 pdabusb_t s = usb_get_intfdata(intf);
821 833
822 dbg("dabusb_disconnect"); 834 dbg("dabusb_disconnect");
823 835
824 init_waitqueue_entry(&__wait, current); 836 init_waitqueue_entry(&__wait, current);
825 837
826 usb_set_intfdata (intf, NULL); 838 usb_set_intfdata(intf, NULL);
827 if (s) { 839 if (s) {
828 usb_deregister_dev (intf, &dabusb_class); 840 usb_deregister_dev(intf, &dabusb_class);
829 s->remove_pending = 1; 841 s->remove_pending = 1;
830 wake_up (&s->wait); 842 wake_up(&s->wait);
831 add_wait_queue(&s->remove_ok, &__wait); 843 add_wait_queue(&s->remove_ok, &__wait);
832 set_current_state(TASK_UNINTERRUPTIBLE); 844 set_current_state(TASK_UNINTERRUPTIBLE);
833 if (s->state == _started) 845 if (s->state == _started)
@@ -840,13 +852,13 @@ static void dabusb_disconnect (struct usb_interface *intf)
840 } 852 }
841} 853}
842 854
843static struct usb_device_id dabusb_ids [] = { 855static struct usb_device_id dabusb_ids[] = {
844 // { USB_DEVICE(0x0547, 0x2131) }, /* An2131 chip, no boot ROM */ 856 /* { USB_DEVICE(0x0547, 0x2131) },*/ /* An2131 chip, no boot ROM */
845 { USB_DEVICE(0x0547, 0x9999) }, 857 { USB_DEVICE(0x0547, 0x9999) },
846 { } /* Terminating entry */ 858 { } /* Terminating entry */
847}; 859};
848 860
849MODULE_DEVICE_TABLE (usb, dabusb_ids); 861MODULE_DEVICE_TABLE(usb, dabusb_ids);
850 862
851static struct usb_driver dabusb_driver = { 863static struct usb_driver dabusb_driver = {
852 .name = "dabusb", 864 .name = "dabusb",
@@ -857,7 +869,7 @@ static struct usb_driver dabusb_driver = {
857 869
858/* --------------------------------------------------------------------- */ 870/* --------------------------------------------------------------------- */
859 871
860static int __init dabusb_init (void) 872static int __init dabusb_init(void)
861{ 873{
862 int retval; 874 int retval;
863 unsigned u; 875 unsigned u;
@@ -865,15 +877,15 @@ static int __init dabusb_init (void)
865 /* initialize struct */ 877 /* initialize struct */
866 for (u = 0; u < NRDABUSB; u++) { 878 for (u = 0; u < NRDABUSB; u++) {
867 pdabusb_t s = &dabusb[u]; 879 pdabusb_t s = &dabusb[u];
868 memset (s, 0, sizeof (dabusb_t)); 880 memset(s, 0, sizeof(dabusb_t));
869 mutex_init (&s->mutex); 881 mutex_init(&s->mutex);
870 s->usbdev = NULL; 882 s->usbdev = NULL;
871 s->total_buffer_size = buffers; 883 s->total_buffer_size = buffers;
872 init_waitqueue_head (&s->wait); 884 init_waitqueue_head(&s->wait);
873 init_waitqueue_head (&s->remove_ok); 885 init_waitqueue_head(&s->remove_ok);
874 spin_lock_init (&s->lock); 886 spin_lock_init(&s->lock);
875 INIT_LIST_HEAD (&s->free_buff_list); 887 INIT_LIST_HEAD(&s->free_buff_list);
876 INIT_LIST_HEAD (&s->rec_buff_list); 888 INIT_LIST_HEAD(&s->rec_buff_list);
877 } 889 }
878 890
879 /* register misc device */ 891 /* register misc device */
@@ -890,25 +902,25 @@ out:
890 return retval; 902 return retval;
891} 903}
892 904
893static void __exit dabusb_cleanup (void) 905static void __exit dabusb_cleanup(void)
894{ 906{
895 dbg("dabusb_cleanup"); 907 dbg("dabusb_cleanup");
896 908
897 usb_deregister (&dabusb_driver); 909 usb_deregister(&dabusb_driver);
898} 910}
899 911
900/* --------------------------------------------------------------------- */ 912/* --------------------------------------------------------------------- */
901 913
902MODULE_AUTHOR( DRIVER_AUTHOR ); 914MODULE_AUTHOR(DRIVER_AUTHOR);
903MODULE_DESCRIPTION( DRIVER_DESC ); 915MODULE_DESCRIPTION(DRIVER_DESC);
904MODULE_LICENSE("GPL"); 916MODULE_LICENSE("GPL");
905MODULE_FIRMWARE("dabusb/firmware.fw"); 917MODULE_FIRMWARE("dabusb/firmware.fw");
906MODULE_FIRMWARE("dabusb/bitstream.bin"); 918MODULE_FIRMWARE("dabusb/bitstream.bin");
907 919
908module_param(buffers, int, 0); 920module_param(buffers, int, 0);
909MODULE_PARM_DESC (buffers, "Number of buffers (default=256)"); 921MODULE_PARM_DESC(buffers, "Number of buffers (default=256)");
910 922
911module_init (dabusb_init); 923module_init(dabusb_init);
912module_exit (dabusb_cleanup); 924module_exit(dabusb_cleanup);
913 925
914/* --------------------------------------------------------------------- */ 926/* --------------------------------------------------------------------- */
diff --git a/drivers/staging/dabusb/dabusb.h b/drivers/staging/dabusb/dabusb.h
index 00eb34c863e..c1772efe7c2 100644
--- a/drivers/staging/dabusb/dabusb.h
+++ b/drivers/staging/dabusb/dabusb.h
@@ -1,10 +1,9 @@
1#define _BULK_DATA_LEN 64 1#define _BULK_DATA_LEN 64
2typedef struct 2typedef struct {
3{
4 unsigned char data[_BULK_DATA_LEN]; 3 unsigned char data[_BULK_DATA_LEN];
5 unsigned int size; 4 unsigned int size;
6 unsigned int pipe; 5 unsigned int pipe;
7}bulk_transfer_t,*pbulk_transfer_t; 6} bulk_transfer_t, *pbulk_transfer_t;
8 7
9#define DABUSB_MINOR 240 /* some unassigned USB minor */ 8#define DABUSB_MINOR 240 /* some unassigned USB minor */
10#define DABUSB_VERSION 0x1000 9#define DABUSB_VERSION 0x1000
@@ -14,10 +13,9 @@ typedef struct
14 13
15#ifdef __KERNEL__ 14#ifdef __KERNEL__
16 15
17typedef enum { _stopped=0, _started } driver_state_t; 16typedef enum { _stopped = 0, _started } driver_state_t;
18 17
19typedef struct 18typedef struct {
20{
21 struct mutex mutex; 19 struct mutex mutex;
22 struct usb_device *usbdev; 20 struct usb_device *usbdev;
23 wait_queue_head_t wait; 21 wait_queue_head_t wait;
@@ -34,17 +32,15 @@ typedef struct
34 int devnum; 32 int devnum;
35 struct list_head free_buff_list; 33 struct list_head free_buff_list;
36 struct list_head rec_buff_list; 34 struct list_head rec_buff_list;
37} dabusb_t,*pdabusb_t; 35} dabusb_t, *pdabusb_t;
38 36
39typedef struct 37typedef struct {
40{
41 pdabusb_t s; 38 pdabusb_t s;
42 struct urb *purb; 39 struct urb *purb;
43 struct list_head buff_list; 40 struct list_head buff_list;
44} buff_t,*pbuff_t; 41} buff_t, *pbuff_t;
45 42
46typedef struct 43typedef struct {
47{
48 wait_queue_head_t wait; 44 wait_queue_head_t wait;
49} bulk_completion_context_t, *pbulk_completion_context_t; 45} bulk_completion_context_t, *pbulk_completion_context_t;
50 46
@@ -54,11 +50,11 @@ typedef struct
54#define _ISOPIPESIZE 16384 50#define _ISOPIPESIZE 16384
55 51
56#define _BULK_DATA_LEN 64 52#define _BULK_DATA_LEN 64
57// Vendor specific request code for Anchor Upload/Download 53/* Vendor specific request code for Anchor Upload/Download
58// This one is implemented in the core 54 *This one is implemented in the core */
59#define ANCHOR_LOAD_INTERNAL 0xA0 55#define ANCHOR_LOAD_INTERNAL 0xA0
60 56
61// EZ-USB Control and Status Register. Bit 0 controls 8051 reset 57/* EZ-USB Control and Status Register. Bit 0 controls 8051 reset */
62#define CPUCS_REG 0x7F92 58#define CPUCS_REG 0x7F92
63#define _TOTAL_BUFFERS 384 59#define _TOTAL_BUFFERS 384
64 60
@@ -67,19 +63,18 @@ typedef struct
67#ifndef _BYTE_DEFINED 63#ifndef _BYTE_DEFINED
68#define _BYTE_DEFINED 64#define _BYTE_DEFINED
69typedef unsigned char BYTE; 65typedef unsigned char BYTE;
70#endif // !_BYTE_DEFINED 66#endif /* !_BYTE_DEFINED */
71 67
72#ifndef _WORD_DEFINED 68#ifndef _WORD_DEFINED
73#define _WORD_DEFINED 69#define _WORD_DEFINED
74typedef unsigned short WORD; 70typedef unsigned short WORD;
75#endif // !_WORD_DEFINED 71#endif /* !_WORD_DEFINED */
76 72
77typedef struct _INTEL_HEX_RECORD 73typedef struct _INTEL_HEX_RECORD {
78{ 74 BYTE Length;
79 BYTE Length; 75 WORD Address;
80 WORD Address; 76 BYTE Type;
81 BYTE Type; 77 BYTE Data[MAX_INTEL_HEX_RECORD_LENGTH];
82 BYTE Data[MAX_INTEL_HEX_RECORD_LENGTH];
83} INTEL_HEX_RECORD, *PINTEL_HEX_RECORD; 78} INTEL_HEX_RECORD, *PINTEL_HEX_RECORD;
84 79
85#endif 80#endif