|
19 | 19 | #include <inttypes.h>
|
20 | 20 |
|
21 | 21 | #define NP_PACKET_BUF_SIZE 64
|
22 |
| -#define NP_MAX_PAGE_SIZE 0x0840 /* 2KB + 64 spare */ |
| 22 | +#define NP_MAX_PAGE_SIZE 0x21C0 /* 8KB + 448 spare */ |
23 | 23 | #define NP_WRITE_ACK_BYTES 1984
|
24 | 24 | #define NP_NAND_TIMEOUT 0x1000000
|
25 | 25 |
|
@@ -474,7 +474,7 @@ static int _np_cmd_nand_erase(np_prog_t *prog)
|
474 | 474 | pages = prog->chip_info.total_size / prog->chip_info.page_size;
|
475 | 475 | page_size = prog->chip_info.page_size + prog->chip_info.spare_size;
|
476 | 476 | block_size = pages_in_block * page_size;
|
477 |
| - total_size = pages * page_size; |
| 477 | + total_size = (uint64_t)pages * page_size; |
478 | 478 | }
|
479 | 479 | else
|
480 | 480 | {
|
@@ -560,7 +560,7 @@ static int np_cmd_nand_erase(np_prog_t *prog)
|
560 | 560 | return ret;
|
561 | 561 | }
|
562 | 562 |
|
563 |
| -static int np_send_write_ack(uint32_t bytes_ack) |
| 563 | +static int np_send_write_ack(uint64_t bytes_ack) |
564 | 564 | {
|
565 | 565 | np_resp_t resp_header = { NP_RESP_STATUS, NP_STATUS_WRITE_ACK };
|
566 | 566 | np_resp_write_ack_t write_ack = { resp_header, bytes_ack };
|
@@ -604,7 +604,7 @@ static int np_cmd_nand_write_start(np_prog_t *prog)
|
604 | 604 | prog->page_size = prog->chip_info.page_size +
|
605 | 605 | prog->chip_info.spare_size;
|
606 | 606 | prog->block_size = pages_in_block * prog->page_size;
|
607 |
| - prog->total_size = pages * prog->page_size; |
| 607 | + prog->total_size = (uint64_t)pages * prog->page_size; |
608 | 608 | }
|
609 | 609 | else
|
610 | 610 | {
|
@@ -648,6 +648,13 @@ static int np_cmd_nand_write_start(np_prog_t *prog)
|
648 | 648 | return ret;
|
649 | 649 | }
|
650 | 650 |
|
| 651 | + if (prog->page_size > sizeof(prog->page.buf)) |
| 652 | + { |
| 653 | + ERROR_PRINT("Page size 0x%lx" |
| 654 | + " is more then buffer size 0x%x\r\n", prog->page_size, sizeof(prog->page.buf)); |
| 655 | + return NP_ERR_BUF_OVERFLOW; |
| 656 | + } |
| 657 | + |
651 | 658 | prog->addr = addr;
|
652 | 659 | prog->len = len;
|
653 | 660 | prog->addr_is_set = 1;
|
@@ -914,7 +921,7 @@ static int _np_cmd_nand_read(np_prog_t *prog)
|
914 | 921 | prog->chip_info.page_size;
|
915 | 922 | page_size = prog->chip_info.page_size + prog->chip_info.spare_size;
|
916 | 923 | block_size = pages_in_block * page_size;
|
917 |
| - total_size = pages * page_size; |
| 924 | + total_size = (uint64_t)pages * page_size; |
918 | 925 | }
|
919 | 926 | else
|
920 | 927 | {
|
|
0 commit comments