From 9e3a6c4913ab66965f91233c58ae47dc542ee475 Mon Sep 17 00:00:00 2001 From: Carl-Daniel Hailfinger Date: Fri, 8 Oct 2010 12:40:09 +0000 Subject: Multiple unrelated changes CONFIG_BITBANG_SPI was not selected if CONFIG_NICINTEL_SPI was on by default. Wiki output was missing all flash chips if CONFIG_INTERNAL was not selected. Use correct type for toupper()/tolower()/isspace() functions. Specify software requirements in a generic way. Non-x86 compilation does not work with the default programmer set, so list the make parameters which result in a working build. Corresponding to flashrom svn r1203. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Michael Karcher --- Makefile | 30 +++++++++++++++--------------- README | 18 +++++++++++++++++- ft2232_spi.c | 2 +- print_wiki.c | 2 +- processor_enable.c | 8 ++++---- serial.c | 5 +++-- 6 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 54f04b92..77e9b5f9 100644 --- a/Makefile +++ b/Makefile @@ -115,21 +115,6 @@ CONFIG_SERPROG ?= yes # RayeR SPIPGM hardware support CONFIG_RAYER_SPI ?= yes -# Bitbanging SPI infrastructure, default off unless needed. -ifeq ($(CONFIG_RAYER_SPI), yes) -override CONFIG_BITBANG_SPI = yes -else -ifeq ($(CONFIG_INTERNAL), yes) -override CONFIG_BITBANG_SPI = yes -else -ifeq ($(CONFIG_NICINTEL_SPI), yes) -override CONFIG_BITBANG_SPI = yes -else -CONFIG_BITBANG_SPI ?= no -endif -endif -endif - # Always enable 3Com NICs for now. CONFIG_NIC3COM ?= yes @@ -170,6 +155,21 @@ CONFIG_DEDIPROG ?= no # Disable wiki printing by default. It is only useful if you have wiki access. CONFIG_PRINT_WIKI ?= no +# Bitbanging SPI infrastructure, default off unless needed. +ifeq ($(CONFIG_RAYER_SPI), yes) +override CONFIG_BITBANG_SPI = yes +else +ifeq ($(CONFIG_INTERNAL), yes) +override CONFIG_BITBANG_SPI = yes +else +ifeq ($(CONFIG_NICINTEL_SPI), yes) +override CONFIG_BITBANG_SPI = yes +else +CONFIG_BITBANG_SPI ?= no +endif +endif +endif + ifeq ($(CONFIG_INTERNAL), yes) FEATURE_CFLAGS += -D'CONFIG_INTERNAL=1' PROGRAMMER_OBJS += processor_enable.o chipset_enable.o board_enable.o cbtable.o dmi.o internal.o diff --git a/README b/README index 5b1799bc..a94cae8d 100644 --- a/README +++ b/README @@ -42,7 +42,11 @@ processing. Build Instructions ------------------ -To build flashrom you need to install the following packages or ports: +To build flashrom you need to install the following software: + + * pciutils+libpci (if you want support for mainboard or PCI device flashing) + * libusb (if you want FT2232 or Dediprog support) + * libftdi (if you want FT2232 support) Linux et al: @@ -111,6 +115,18 @@ To cross-compile on Linux for DOS: http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi7b.zip and make sure CWSDPMI.EXE is in the current directory. +Processor architecture dependent features: + + On non-x86 architectures you have to disable a few programmers because they + use port-based I/O which is not directly available on non-x86. Please add + CONFIG_RAYER_SPI=no CONFIG_NIC3COM=no CONFIG_ATAHPT=no CONFIG_NICREALTEK=no \ + CONFIG_NICNATSEMI=no + as parameters to the "make" invocation. + Besides that, the internal programmer is only supported on x86 and MIPS. On + other architectures, please add + CONFIG_INTERNAL=no + as parameter to the "make" invocation. + Installation ------------ diff --git a/ft2232_spi.c b/ft2232_spi.c index ee2b6939..a2ea2a8d 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -148,7 +148,7 @@ int ft2232_spi_init(void) free(arg); arg = extract_programmer_param("port"); if (arg) { - switch (toupper(*arg)) { + switch (toupper((unsigned char)*arg)) { case 'A': ft2232_interface = INTERFACE_A; break; diff --git a/print_wiki.c b/print_wiki.c index 313fdea6..1b46dd04 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -268,8 +268,8 @@ void print_supported_wiki(void) time_t t = time(NULL); printf(wiki_header, ctime(&t), flashrom_version); -#if CONFIG_INTERNAL == 1 print_supported_chips_wiki(2); +#if CONFIG_INTERNAL == 1 print_supported_chipsets_wiki(3); print_supported_boards_wiki(); #endif diff --git a/processor_enable.c b/processor_enable.c index 74caedc5..b14cd338 100644 --- a/processor_enable.c +++ b/processor_enable.c @@ -53,22 +53,22 @@ static int is_loongson(void) if (fgets(line, sizeof(line), cpuinfo) == NULL) break; ptr = line; - while (*ptr && isspace(*ptr)) + while (*ptr && isspace((unsigned char)*ptr)) ptr++; /* "cpu" part appears only with some Linux versions. */ if (strncmp(ptr, "cpu", sizeof("cpu") - 1) == 0) ptr += sizeof("cpu") - 1; - while (*ptr && isspace(*ptr)) + while (*ptr && isspace((unsigned char)*ptr)) ptr++; if (strncmp(ptr, "model", sizeof("model") - 1) != 0) continue; ptr += sizeof("model") - 1; - while (*ptr && isspace(*ptr)) + while (*ptr && isspace((unsigned char)*ptr)) ptr++; if (*ptr != ':') continue; ptr++; - while (*ptr && isspace(*ptr)) + while (*ptr && isspace((unsigned char)*ptr)) ptr++; fclose(cpuinfo); return (strncmp(ptr, "ICT Loongson-2 V0.3", diff --git a/serial.c b/serial.c index 053b09a3..a04a1386 100644 --- a/serial.c +++ b/serial.c @@ -106,8 +106,9 @@ fdtype sp_openserport(char *dev, unsigned int baud) #ifdef _WIN32 HANDLE fd; char *dev2 = dev; - if ((strlen(dev) > 3) && (tolower(dev[0]) == 'c') - && (tolower(dev[1]) == 'o') && (tolower(dev[2]) == 'm')) { + if ((strlen(dev) > 3) && (tolower((unsigned char)dev[0]) == 'c') && + (tolower((unsigned char)dev[1]) == 'o') && + (tolower((unsigned char)dev[2]) == 'm')) { dev2 = malloc(strlen(dev) + 5); strcpy(dev2, "\\\\.\\"); strcpy(dev2 + 4, dev); -- cgit v1.2.3