diff options
-rw-r--r-- | chipdrivers.h | 2 | ||||
-rw-r--r-- | sharplhf00l04.c | 31 |
2 files changed, 5 insertions, 28 deletions
diff --git a/chipdrivers.h b/chipdrivers.h index 64c8845e..c7fecd23 100644 --- a/chipdrivers.h +++ b/chipdrivers.h @@ -59,6 +59,8 @@ int probe_82802ab(struct flashchip *flash); int erase_82802ab(struct flashchip *flash); int erase_82802ab_block(struct flashchip *flash, unsigned int page, unsigned int pagesize); int write_82802ab(struct flashchip *flash, uint8_t *buf); +void print_82802ab_status(uint8_t status); +void write_page_82802ab(chipaddr bios, uint8_t *src, chipaddr dst, int page_size); /* jedec.c */ uint8_t oddparity(uint8_t val); diff --git a/sharplhf00l04.c b/sharplhf00l04.c index d5ab38cb..659f1291 100644 --- a/sharplhf00l04.c +++ b/sharplhf00l04.c @@ -22,18 +22,6 @@ #include "flash.h" #include "chipdrivers.h" -// I need that Berkeley bit-map printer -void print_lhf00l04_status(uint8_t status) -{ - printf("%s", status & 0x80 ? "Ready:" : "Busy:"); - printf("%s", status & 0x40 ? "BE SUSPEND:" : "BE RUN/FINISH:"); - printf("%s", status & 0x20 ? "BE ERROR:" : "BE OK:"); - printf("%s", status & 0x10 ? "PROG ERR:" : "PROG OK:"); - printf("%s", status & 0x8 ? "VP ERR:" : "VPP OK:"); - printf("%s", status & 0x4 ? "PROG SUSPEND:" : "PROG RUN/FINISH:"); - printf("%s", status & 0x2 ? "WP|TBL#|WP#,ABORT:" : "UNLOCK:"); -} - /* FIXME: The datasheet is unclear whether we should use toggle_ready_jedec * or wait_82802ab. */ @@ -48,7 +36,7 @@ int erase_lhf00l04_block(struct flashchip *flash, unsigned int blockaddr, unsign chip_writeb(0x50, bios); printf("Erase at 0x%lx\n", bios); status = wait_82802ab(flash->virtual_memory); - print_lhf00l04_status(status); + print_82802ab_status(status); // clear write protect printf("write protect is at 0x%lx\n", (wrprotect)); printf("write protect is 0x%x\n", chip_readb(wrprotect)); @@ -61,7 +49,7 @@ int erase_lhf00l04_block(struct flashchip *flash, unsigned int blockaddr, unsign programmer_delay(10); // now let's see what the register is status = wait_82802ab(flash->virtual_memory); - print_lhf00l04_status(status); + print_82802ab_status(status); printf("DONE BLOCK 0x%x\n", blockaddr); if (check_erased_range(flash, blockaddr, blocklen)) { @@ -71,19 +59,6 @@ int erase_lhf00l04_block(struct flashchip *flash, unsigned int blockaddr, unsign return 0; } -void write_page_lhf00l04(chipaddr bios, uint8_t *src, - chipaddr dst, int page_size) -{ - int i; - - for (i = 0; i < page_size; i++) { - /* transfer data from source to destination */ - chip_writeb(0x40, dst); - chip_writeb(*src++, dst++); - wait_82802ab(bios); - } -} - int write_lhf00l04(struct flashchip *flash, uint8_t *buf) { int i; @@ -98,7 +73,7 @@ int write_lhf00l04(struct flashchip *flash, uint8_t *buf) printf("Programming page: "); for (i = 0; i < total_size / page_size; i++) { printf("%04d at address: 0x%08x", i, i * page_size); - write_page_lhf00l04(bios, buf + i * page_size, + write_page_82802ab(bios, buf + i * page_size, bios + i * page_size, page_size); printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); } |