[flashrom] [PATCH] Use correct programmer fallback functions
Stefan Reinauer
stepan at coresystems.de
Wed Aug 12 11:29:45 CEST 2009
On 8/11/09 3:12 AM, Carl-Daniel Hailfinger wrote:
> 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.
>
> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>
We should drop the dummy programmer then... It's good for nothing
Acked-by: Stefan Reinauer <stepan at coresystems.de>
> Index: flashrom-fallback/flash.h
> ===================================================================
> --- flashrom-fallback/flash.h (Revision 674)
> +++ flashrom-fallback/flash.h (Arbeitskopie)
> @@ -80,15 +80,18 @@
>
> 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;
> const char *name;
> @@ -325,8 +328,10 @@
> 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);
> @@ -375,7 +380,6 @@
> 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 */
> Index: flashrom-fallback/flashrom.c
> ===================================================================
> --- flashrom-fallback/flashrom.c (Revision 674)
> +++ flashrom-fallback/flashrom.c (Arbeitskopie)
> @@ -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 @@
>
> {
> .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 @@
>
> {
> .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,
> Index: flashrom-fallback/internal.c
> ===================================================================
> --- flashrom-fallback/internal.c (Revision 674)
> +++ flashrom-fallback/internal.c (Arbeitskopie)
> @@ -218,6 +218,12 @@
> }
> }
>
> +/* 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 @@
> {
> }
>
> +/* 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)
> {
>
>
>
--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info at coresystems.de • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
More information about the flashrom
mailing list