diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-08-12 11:39:29 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2009-08-12 11:39:29 +0000 |
commit | 0f1df3eab7ba830563167518230d82729dd64e26 (patch) | |
tree | 601ab4f703afa1c577cd532b3d195543a5a7fdb2 | |
parent | 4d9ec78062756aca8717e600a5db8d28cc1051a9 (diff) | |
download | flashrom-0f1df3eab7ba830563167518230d82729dd64e26.zip flashrom-0f1df3eab7ba830563167518230d82729dd64e26.tar.gz |
FT2232 and IT87 programmers used functions of the dummy programmer instead of fallback functions
The dummy programmer is a "real" programmer with possible side effects and
its functions should not be abused by other programmers. Make FT2232 and IT87
use official fallback functions instead. Create fallback_shutdown(). Create
fallback_chip_writeb(). Convert the programmer #defines to an enum.
Corresponding to flashrom svn r678.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
-rw-r--r-- | flash.h | 22 | ||||
-rw-r--r-- | flashrom.c | 19 | ||||
-rw-r--r-- | internal.c | 11 |
3 files changed, 34 insertions, 18 deletions
@@ -80,14 +80,17 @@ typedef unsigned long chipaddr; -extern int programmer; -#define PROGRAMMER_INTERNAL 0x00 -#define PROGRAMMER_DUMMY 0x01 -#define PROGRAMMER_NIC3COM 0x02 -#define PROGRAMMER_SATASII 0x03 -#define PROGRAMMER_IT87SPI 0x04 -#define PROGRAMMER_FT2232SPI 0x05 -#define PROGRAMMER_SERPROG 0x06 +enum programmer { + PROGRAMMER_INTERNAL, + PROGRAMMER_DUMMY, + PROGRAMMER_NIC3COM, + PROGRAMMER_SATASII, + PROGRAMMER_IT87SPI, + PROGRAMMER_FT2232SPI, + PROGRAMMER_SERPROG, +}; + +extern enum programmer programmer; struct programmer_entry { const char *vendor; @@ -332,8 +335,10 @@ uint8_t mmio_readb(void *addr); uint16_t mmio_readw(void *addr); uint32_t mmio_readl(void *addr); void internal_delay(int usecs); +int fallback_shutdown(void); void *fallback_map(const char *descr, unsigned long phys_addr, size_t len); void fallback_unmap(void *virt_addr, size_t len); +void fallback_chip_writeb(uint8_t val, chipaddr addr); void fallback_chip_writew(uint16_t val, chipaddr addr); void fallback_chip_writel(uint32_t val, chipaddr addr); void fallback_chip_writen(uint8_t *buf, chipaddr addr, size_t len); @@ -382,7 +387,6 @@ extern char *ft2232spi_param; int ft2232_spi_init(void); int ft2232_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr); int ft2232_spi_read(struct flashchip *flash, uint8_t *buf, int start, int len); -int ft2232_spi_write1(struct flashchip *flash, uint8_t *buf); int ft2232_spi_write_256(struct flashchip *flash, uint8_t *buf); /* flashrom.c */ @@ -33,7 +33,7 @@ const char *flashrom_version = FLASHROM_VERSION; char *chip_to_probe = NULL; int verbose = 0; -int programmer = PROGRAMMER_INTERNAL; +enum programmer programmer = PROGRAMMER_INTERNAL; const struct programmer_entry programmer_table[] = { { @@ -102,14 +102,14 @@ const struct programmer_entry programmer_table[] = { { .init = it87spi_init, - .shutdown = dummy_shutdown, - .map_flash_region = dummy_map, - .unmap_flash_region = dummy_unmap, + .shutdown = fallback_shutdown, + .map_flash_region = fallback_map, + .unmap_flash_region = fallback_unmap, .chip_readb = dummy_chip_readb, .chip_readw = fallback_chip_readw, .chip_readl = fallback_chip_readl, .chip_readn = fallback_chip_readn, - .chip_writeb = dummy_chip_writeb, + .chip_writeb = fallback_chip_writeb, .chip_writew = fallback_chip_writew, .chip_writel = fallback_chip_writel, .chip_writen = fallback_chip_writen, @@ -118,19 +118,20 @@ const struct programmer_entry programmer_table[] = { { .init = ft2232_spi_init, - .shutdown = dummy_shutdown, - .map_flash_region = dummy_map, - .unmap_flash_region = dummy_unmap, + .shutdown = fallback_shutdown, + .map_flash_region = fallback_map, + .unmap_flash_region = fallback_unmap, .chip_readb = dummy_chip_readb, .chip_readw = fallback_chip_readw, .chip_readl = fallback_chip_readl, .chip_readn = fallback_chip_readn, - .chip_writeb = dummy_chip_writeb, + .chip_writeb = fallback_chip_writeb, .chip_writew = fallback_chip_writew, .chip_writel = fallback_chip_writel, .chip_writen = fallback_chip_writen, .delay = internal_delay, }, + { .init = serprog_init, .shutdown = serprog_shutdown, @@ -218,6 +218,12 @@ void internal_delay(int usecs) } } +/* Fallback shutdown() for programmers which don't need special handling */ +int fallback_shutdown(void) +{ + return 0; +} + /* Fallback map() for programmers which don't need special handling */ void *fallback_map(const char *descr, unsigned long phys_addr, size_t len) { @@ -229,6 +235,11 @@ void fallback_unmap(void *virt_addr, size_t len) { } +/* No-op fallback for drivers not supporting addr/data pair accesses */ +void fallback_chip_writeb(uint8_t val, chipaddr addr) +{ +} + /* Little-endian fallback for drivers not supporting 16 bit accesses */ void fallback_chip_writew(uint16_t val, chipaddr addr) { |