diff options
author | Marek Belisko <marek.belisko@open-nandra.com> | 2011-02-03 05:07:53 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-04 15:43:43 -0500 |
commit | e7af0786303cfb6c541582839275f1d0addbeb2b (patch) | |
tree | c468ae5266d690fd2775fdf9751123fecc388699 /drivers/staging/ft1000 | |
parent | 672dfeba92bbb1218b5e39f5aff2d1fd2e2268b8 (diff) |
staging: ft1000: Create common function for buffers check.
Same check was done on three places which make code unreadable.
Put repeat routine to separate function.
Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/ft1000')
-rw-r--r-- | drivers/staging/ft1000/ft1000-usb/ft1000_download.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c index b789e7805c4..7c4749ae1ea 100644 --- a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c | |||
@@ -470,6 +470,17 @@ static u16 hdr_checksum(struct pseudo_hdr *pHdr) | |||
470 | return chksum; | 470 | return chksum; |
471 | } | 471 | } |
472 | 472 | ||
473 | static int check_buffers(u16 *buff_w, u16 *buff_r, int len, int offset) | ||
474 | { | ||
475 | int i; | ||
476 | |||
477 | for (i = 0; i < len; i++) { | ||
478 | if (buff_w[i] != buff_r[i + offset]) | ||
479 | return -1; | ||
480 | } | ||
481 | |||
482 | return 0; | ||
483 | } | ||
473 | 484 | ||
474 | //--------------------------------------------------------------------------- | 485 | //--------------------------------------------------------------------------- |
475 | // Function: write_blk | 486 | // Function: write_blk |
@@ -560,43 +571,31 @@ static u32 write_blk (struct ft1000_device *ft1000dev, u16 **pUsFile, u8 **pUcFi | |||
560 | Status = ft1000_read_dpram32 (ft1000dev, dpram, (u8 *)&resultbuffer[0], 64); | 571 | Status = ft1000_read_dpram32 (ft1000dev, dpram, (u8 *)&resultbuffer[0], 64); |
561 | if ( (tempbuffer[31] & 0xfe00) == 0xfe00) | 572 | if ( (tempbuffer[31] & 0xfe00) == 0xfe00) |
562 | { | 573 | { |
563 | for (i=0; i<28; i++) | 574 | if (check_buffers(tempbuffer, resultbuffer, 28, 0)) { |
564 | { | 575 | DEBUG("FT1000:download:DPRAM write failed 1 during bootloading\n"); |
565 | if (resultbuffer[i] != tempbuffer[i]) | 576 | msleep(10); |
566 | { | 577 | Status = STATUS_FAILURE; |
567 | //NdisMSleep (100); | 578 | break; |
568 | DEBUG("FT1000:download:DPRAM write failed 1 during bootloading\n"); | ||
569 | msleep(10); | ||
570 | Status = STATUS_FAILURE; | ||
571 | break; | ||
572 | } | 579 | } |
573 | } | ||
574 | Status = ft1000_read_dpram32 (ft1000dev, dpram+12, (u8 *)&resultbuffer[0], 64); | 580 | Status = ft1000_read_dpram32 (ft1000dev, dpram+12, (u8 *)&resultbuffer[0], 64); |
575 | for (i=0; i<16; i++) | 581 | |
576 | { | 582 | if (check_buffers(tempbuffer, resultbuffer, 16, 24)) { |
577 | if (resultbuffer[i] != tempbuffer[i+24]) | 583 | DEBUG("FT1000:download:DPRAM write failed 2 during bootloading\n"); |
578 | { | 584 | msleep(10); |
579 | //NdisMSleep (100); | 585 | Status = STATUS_FAILURE; |
580 | DEBUG("FT1000:download:DPRAM write failed 2 during bootloading\n"); | 586 | break; |
581 | msleep(10); | ||
582 | Status = STATUS_FAILURE; | ||
583 | break; | ||
584 | } | 587 | } |
585 | } | 588 | |
586 | } | 589 | } |
587 | else | 590 | else |
588 | { | 591 | { |
589 | for (i=0; i<32; i++) | 592 | if (check_buffers(tempbuffer, resultbuffer, 32, 0)) { |
590 | { | 593 | DEBUG("FT1000:download:DPRAM write failed 3 during bootloading\n"); |
591 | if (resultbuffer[i] != tempbuffer[i]) | 594 | msleep(10); |
592 | { | 595 | Status = STATUS_FAILURE; |
593 | //NdisMSleep (100); | 596 | break; |
594 | DEBUG("FT1000:download:DPRAM write failed 3 during bootloading\n"); | ||
595 | msleep(10); | ||
596 | Status = STATUS_FAILURE; | ||
597 | break; | ||
598 | } | 597 | } |
599 | } | 598 | |
600 | } | 599 | } |
601 | 600 | ||
602 | if (Status == STATUS_SUCCESS) | 601 | if (Status == STATUS_SUCCESS) |