1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 15:12:36 +02:00

Allow to exclude each of the external programmer drivers from being compiled in

Example make commandline if you want only internal programmers:
make CONFIG_FT2232SPI=no CONFIG_SERPROG=no CONFIG_NIC3COM=no
CONFIG_SATASII=no CONFIG_DRKAISER=no CONFIG_DUMMY=no

Of course, all of the CONFIG_* symbols can be mixed and matched as
needed. CONFIG_FT2232SPI is special because even if it is enabled, make
will check if the headers are available and skip it otherwise.

Corresponding to flashrom svn r724.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
This commit is contained in:
Carl-Daniel Hailfinger 2009-09-16 10:09:21 +00:00
parent ab044b20a2
commit 4740c6ff3c
6 changed files with 97 additions and 17 deletions

View File

@ -49,8 +49,7 @@ OBJS = chipset_enable.o board_enable.o udelay.o jedec.o stm50flw0x0x.o \
sst49lfxxxc.o sst_fwhub.o layout.o cbtable.o flashchips.o physmap.o \ sst49lfxxxc.o sst_fwhub.o layout.o cbtable.o flashchips.o physmap.o \
flashrom.o w39v080fa.o sharplhf00l04.o w29ee011.o spi.o it87spi.o \ flashrom.o w39v080fa.o sharplhf00l04.o w29ee011.o spi.o it87spi.o \
ichspi.o w39v040c.o sb600spi.o wbsio_spi.o m29f002.o internal.o \ ichspi.o w39v040c.o sb600spi.o wbsio_spi.o m29f002.o internal.o \
dummyflasher.o pcidev.o nic3com.o satasii.o ft2232_spi.o \ pcidev.o print.o
print.o drkaiser.o
all: pciutils features dep $(PROGRAM) all: pciutils features dep $(PROGRAM)
@ -67,7 +66,22 @@ RELEASENAME ?= $(VERSION)
SVNDEF := -D'FLASHROM_VERSION="$(VERSION)"' SVNDEF := -D'FLASHROM_VERSION="$(VERSION)"'
# Always enable serprog for now. Needs to be disabled on Windows. # Always enable serprog for now. Needs to be disabled on Windows.
CONFIG_SERPROG = yes CONFIG_SERPROG ?= yes
# Always enable 3Com NICs for now.
CONFIG_NIC3COM ?= yes
# Always enable SiI SATA controllers for now.
CONFIG_SATASII ?= yes
# Always enable FT2232 SPI dongles for now.
CONFIG_FT2232SPI ?= yes
# Always enable dummy tracing for now.
CONFIG_DUMMY ?= yes
# Always enable Dr. Kaiser for now.
CONFIG_DRKAISER ?= yes
ifeq ($(CONFIG_SERPROG), yes) ifeq ($(CONFIG_SERPROG), yes)
FEATURE_CFLAGS += -D'SERPROG_SUPPORT=1' FEATURE_CFLAGS += -D'SERPROG_SUPPORT=1'
@ -77,9 +91,32 @@ LIBS += -lsocket
endif endif
endif endif
FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'FT2232_SPI_SUPPORT=1'") ifeq ($(CONFIG_NIC3COM), yes)
FEATURE_CFLAGS += -D'NIC3COM_SUPPORT=1'
OBJS += nic3com.o
endif
ifeq ($(CONFIG_SATASII), yes)
FEATURE_CFLAGS += -D'SATASII_SUPPORT=1'
OBJS += satasii.o
endif
ifeq ($(CONFIG_FT2232SPI), yes)
# This is a totally ugly hack.
FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'FT2232_SPI_SUPPORT=1'")
FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-lftdi") FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-lftdi")
OBJS += ft2232_spi.o
endif
ifeq ($(CONFIG_DUMMY), yes)
FEATURE_CFLAGS += -D'DUMMY_SUPPORT=1'
OBJS += dummyflasher.o
endif
ifeq ($(CONFIG_DRKAISER), yes)
FEATURE_CFLAGS += -D'DRKAISER_SUPPORT=1'
OBJS += drkaiser.o
endif
$(PROGRAM): $(OBJS) $(PROGRAM): $(OBJS)
$(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS) $(FEATURE_LIBS) $(CC) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS) $(FEATURE_LIBS)

15
flash.h
View File

@ -82,10 +82,18 @@ typedef unsigned long chipaddr;
enum programmer { enum programmer {
PROGRAMMER_INTERNAL, PROGRAMMER_INTERNAL,
#if DUMMY_SUPPORT == 1
PROGRAMMER_DUMMY, PROGRAMMER_DUMMY,
#endif
#if NIC3COM_SUPPORT == 1
PROGRAMMER_NIC3COM, PROGRAMMER_NIC3COM,
#endif
#if DRKAISER_SUPPORT == 1
PROGRAMMER_DRKAISER, PROGRAMMER_DRKAISER,
#endif
#if SATASII_SUPPORT == 1
PROGRAMMER_SATASII, PROGRAMMER_SATASII,
#endif
PROGRAMMER_IT87SPI, PROGRAMMER_IT87SPI,
#if FT2232_SPI_SUPPORT == 1 #if FT2232_SPI_SUPPORT == 1
PROGRAMMER_FT2232SPI, PROGRAMMER_FT2232SPI,
@ -375,10 +383,11 @@ uint8_t mmio_readb(void *addr);
uint16_t mmio_readw(void *addr); uint16_t mmio_readw(void *addr);
uint32_t mmio_readl(void *addr); uint32_t mmio_readl(void *addr);
void internal_delay(int usecs); void internal_delay(int usecs);
int fallback_shutdown(void); int noop_shutdown(void);
void *fallback_map(const char *descr, unsigned long phys_addr, size_t len); void *fallback_map(const char *descr, unsigned long phys_addr, size_t len);
void fallback_unmap(void *virt_addr, size_t len); void fallback_unmap(void *virt_addr, size_t len);
void fallback_chip_writeb(uint8_t val, chipaddr addr); uint8_t noop_chip_readb(const chipaddr addr);
void noop_chip_writeb(uint8_t val, chipaddr addr);
void fallback_chip_writew(uint16_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_writel(uint32_t val, chipaddr addr);
void fallback_chip_writen(uint8_t *buf, chipaddr addr, size_t len); void fallback_chip_writen(uint8_t *buf, chipaddr addr, size_t len);
@ -474,7 +483,9 @@ enum spi_controller {
#if FT2232_SPI_SUPPORT == 1 #if FT2232_SPI_SUPPORT == 1
SPI_CONTROLLER_FT2232, SPI_CONTROLLER_FT2232,
#endif #endif
#if DUMMY_SUPPORT == 1
SPI_CONTROLLER_DUMMY, SPI_CONTROLLER_DUMMY,
#endif
SPI_CONTROLLER_INVALID /* This must always be the last entry. */ SPI_CONTROLLER_INVALID /* This must always be the last entry. */
}; };
extern const int spi_programmer_count; extern const int spi_programmer_count;

View File

@ -54,6 +54,7 @@ const struct programmer_entry programmer_table[] = {
.delay = internal_delay, .delay = internal_delay,
}, },
#if DUMMY_SUPPORT == 1
{ {
.name = "dummy", .name = "dummy",
.init = dummy_init, .init = dummy_init,
@ -70,7 +71,9 @@ const struct programmer_entry programmer_table[] = {
.chip_writen = dummy_chip_writen, .chip_writen = dummy_chip_writen,
.delay = internal_delay, .delay = internal_delay,
}, },
#endif
#if NIC3COM_SUPPORT == 1
{ {
.name = "nic3com", .name = "nic3com",
.init = nic3com_init, .init = nic3com_init,
@ -87,7 +90,9 @@ const struct programmer_entry programmer_table[] = {
.chip_writen = fallback_chip_writen, .chip_writen = fallback_chip_writen,
.delay = internal_delay, .delay = internal_delay,
}, },
#endif
#if DRKAISER_SUPPORT == 1
{ {
.name = "drkaiser", .name = "drkaiser",
.init = drkaiser_init, .init = drkaiser_init,
@ -104,7 +109,9 @@ const struct programmer_entry programmer_table[] = {
.chip_writen = fallback_chip_writen, .chip_writen = fallback_chip_writen,
.delay = internal_delay, .delay = internal_delay,
}, },
#endif
#if SATASII_SUPPORT == 1
{ {
.name = "satasii", .name = "satasii",
.init = satasii_init, .init = satasii_init,
@ -121,18 +128,19 @@ const struct programmer_entry programmer_table[] = {
.chip_writen = fallback_chip_writen, .chip_writen = fallback_chip_writen,
.delay = internal_delay, .delay = internal_delay,
}, },
#endif
{ {
.name = "it87spi", .name = "it87spi",
.init = it87spi_init, .init = it87spi_init,
.shutdown = fallback_shutdown, .shutdown = noop_shutdown,
.map_flash_region = fallback_map, .map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap, .unmap_flash_region = fallback_unmap,
.chip_readb = dummy_chip_readb, .chip_readb = noop_chip_readb,
.chip_readw = fallback_chip_readw, .chip_readw = fallback_chip_readw,
.chip_readl = fallback_chip_readl, .chip_readl = fallback_chip_readl,
.chip_readn = fallback_chip_readn, .chip_readn = fallback_chip_readn,
.chip_writeb = fallback_chip_writeb, .chip_writeb = noop_chip_writeb,
.chip_writew = fallback_chip_writew, .chip_writew = fallback_chip_writew,
.chip_writel = fallback_chip_writel, .chip_writel = fallback_chip_writel,
.chip_writen = fallback_chip_writen, .chip_writen = fallback_chip_writen,
@ -143,14 +151,14 @@ const struct programmer_entry programmer_table[] = {
{ {
.name = "ft2232spi", .name = "ft2232spi",
.init = ft2232_spi_init, .init = ft2232_spi_init,
.shutdown = fallback_shutdown, .shutdown = noop_shutdown, /* Missing shutdown */
.map_flash_region = fallback_map, .map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap, .unmap_flash_region = fallback_unmap,
.chip_readb = dummy_chip_readb, .chip_readb = noop_chip_readb,
.chip_readw = fallback_chip_readw, .chip_readw = fallback_chip_readw,
.chip_readl = fallback_chip_readl, .chip_readl = fallback_chip_readl,
.chip_readn = fallback_chip_readn, .chip_readn = fallback_chip_readn,
.chip_writeb = fallback_chip_writeb, .chip_writeb = noop_chip_writeb,
.chip_writew = fallback_chip_writew, .chip_writew = fallback_chip_writew,
.chip_writel = fallback_chip_writel, .chip_writel = fallback_chip_writel,
.chip_writen = fallback_chip_writen, .chip_writen = fallback_chip_writen,
@ -793,9 +801,15 @@ int main(int argc, char *argv[])
print_supported_boards(); print_supported_boards();
printf("\nSupported PCI devices flashrom can use " printf("\nSupported PCI devices flashrom can use "
"as programmer:\n\n"); "as programmer:\n\n");
#if NIC3COM_SUPPORT == 1
print_supported_pcidevs(nics_3com); print_supported_pcidevs(nics_3com);
#endif
#if DRKAISER_SUPPORT == 1
print_supported_pcidevs(drkaiser_pcidev); print_supported_pcidevs(drkaiser_pcidev);
#endif
#if SATASII_SUPPORT == 1
print_supported_pcidevs(satas_sii); print_supported_pcidevs(satas_sii);
#endif
exit(0); exit(0);
} }

View File

@ -222,8 +222,8 @@ void internal_delay(int usecs)
} }
} }
/* Fallback shutdown() for programmers which don't need special handling */ /* No-op shutdown() for programmers which don't need special handling */
int fallback_shutdown(void) int noop_shutdown(void)
{ {
return 0; return 0;
} }
@ -231,16 +231,23 @@ int fallback_shutdown(void)
/* Fallback map() for programmers which don't need special handling */ /* Fallback map() for programmers which don't need special handling */
void *fallback_map(const char *descr, unsigned long phys_addr, size_t len) void *fallback_map(const char *descr, unsigned long phys_addr, size_t len)
{ {
/* FIXME: Should return phys_addr. */
return 0; return 0;
} }
/* Fallback unmap() for programmers which don't need special handling */ /* No-op/fallback unmap() for programmers which don't need special handling */
void fallback_unmap(void *virt_addr, size_t len) void fallback_unmap(void *virt_addr, size_t len)
{ {
} }
/* No-op fallback for drivers not supporting addr/data pair accesses */ /* No-op chip_writeb() for drivers not supporting addr/data pair accesses */
void fallback_chip_writeb(uint8_t val, chipaddr addr) uint8_t noop_chip_readb(const chipaddr addr)
{
return 0xff;
}
/* No-op chip_writeb() for drivers not supporting addr/data pair accesses */
void noop_chip_writeb(uint8_t val, chipaddr addr)
{ {
} }

View File

@ -731,8 +731,15 @@ void print_wiki_tables(void)
print_supported_chipsets_wiki(); print_supported_chipsets_wiki();
print_supported_boards_wiki(); print_supported_boards_wiki();
printf("%s", programmer_section); printf("%s", programmer_section);
#if NIC3COM_SUPPORT == 1
print_supported_pcidevs_wiki(nics_3com); print_supported_pcidevs_wiki(nics_3com);
#endif
#if DRKAISER_SUPPORT == 1
/* FIXME: drkaiser_pcidev is missing here. */
#endif
#if SATASII_SUPPORT == 1
print_supported_pcidevs_wiki(satas_sii); print_supported_pcidevs_wiki(satas_sii);
#endif
printf("\n|}\n"); printf("\n|}\n");
} }

4
spi.c
View File

@ -91,12 +91,14 @@ const struct spi_programmer spi_programmer[] = {
}, },
#endif #endif
#if DUMMY_SUPPORT == 1
{ /* SPI_CONTROLLER_DUMMY */ { /* SPI_CONTROLLER_DUMMY */
.command = dummy_spi_send_command, .command = dummy_spi_send_command,
.multicommand = default_spi_send_multicommand, .multicommand = default_spi_send_multicommand,
.read = NULL, .read = NULL,
.write_256 = NULL, .write_256 = NULL,
}, },
#endif
{}, /* This entry corresponds to SPI_CONTROLLER_INVALID. */ {}, /* This entry corresponds to SPI_CONTROLLER_INVALID. */
}; };
@ -301,7 +303,9 @@ int probe_spi_rdid4(struct flashchip *flash)
#if FT2232_SPI_SUPPORT == 1 #if FT2232_SPI_SUPPORT == 1
case SPI_CONTROLLER_FT2232: case SPI_CONTROLLER_FT2232:
#endif #endif
#if DUMMY_SUPPORT == 1
case SPI_CONTROLLER_DUMMY: case SPI_CONTROLLER_DUMMY:
#endif
return probe_spi_rdid_generic(flash, 4); return probe_spi_rdid_generic(flash, 4);
default: default:
printf_debug("4b ID not supported on this SPI controller\n"); printf_debug("4b ID not supported on this SPI controller\n");