Author: hailfinger Date: Mon Feb 13 01:35:35 2012 New Revision: 1492 URL: http://flashrom.org/trac/flashrom/changeset/1492
Log: Support compilation for the ARM architecture (little-endian only).
Note: The internal programmer will abort during processor check. This is intentional. The other hardware drivers (except those using port I/O) should work.
Signed-off-by: David Hendricks dhendrix@google.com Acked-by: David Hendricks dhendrix@google.com Tested-by: Timo Juhani Lindfors timo.lindfors@iki.fi Acked-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Modified: trunk/Makefile trunk/arch.h trunk/hwaccess.c trunk/hwaccess.h trunk/programmer.h
Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Sun Feb 12 01:13:14 2012 (r1491) +++ trunk/Makefile Mon Feb 13 01:35:35 2012 (r1492) @@ -215,8 +215,9 @@ # below uses CC itself. override ARCH := $(strip $(shell LC_ALL=C $(CC) $(CPPFLAGS) -E arch.h 2>/dev/null | grep -v '^#' | grep '"' | cut -f 2 -d'"'))
-ifeq ($(ARCH), ppc) -# There's no PCI port I/O support on PPC/PowerPC, yet. +# PCI port I/O support is unimplemented on PPC/MIPS and unavailable on ARM. +# Right now this means the drivers below only work on x86. +ifneq ($(ARCH), x86) ifeq ($(CONFIG_NIC3COM), yes) UNSUPPORTED_FEATURES += CONFIG_NIC3COM=yes else
Modified: trunk/arch.h ============================================================================== --- trunk/arch.h Sun Feb 12 01:13:14 2012 (r1491) +++ trunk/arch.h Mon Feb 13 01:35:35 2012 (r1492) @@ -27,5 +27,7 @@ #define __FLASHROM_ARCH__ "mips" #elif defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) #define __FLASHROM_ARCH__ "ppc" +#elif defined(__arm__) +#define __FLASHROM_ARCH__ "arm" #endif __FLASHROM_ARCH__
Modified: trunk/hwaccess.c ============================================================================== --- trunk/hwaccess.c Sun Feb 12 01:13:14 2012 (r1491) +++ trunk/hwaccess.c Mon Feb 13 01:35:35 2012 (r1492) @@ -116,6 +116,20 @@ { }
+#elif defined (__arm__) + +static inline void sync_primitive(void) +{ +} + +void get_io_perms(void) +{ +} + +void release_io_perms(void) +{ +} + #else
#error Unknown architecture
Modified: trunk/hwaccess.h ============================================================================== --- trunk/hwaccess.h Sun Feb 12 01:13:14 2012 (r1491) +++ trunk/hwaccess.h Mon Feb 13 01:35:35 2012 (r1492) @@ -68,6 +68,13 @@ #error Little-endian PowerPC #defines are unknown #endif
+#elif defined (__arm__) +#if defined (__ARMEL__) +#define __FLASHROM_LITTLE_ENDIAN__ 1 +#else +#error Big-endian ARM #defines are unknown +#endif + #endif
#if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__) @@ -326,6 +333,10 @@
/* PCI port I/O is not yet implemented on MIPS. */
+#elif defined(__arm__) + +/* Non memory mapped I/O is not supported on ARM. */ + #else
#error Unknown architecture, please check if it supports PCI port IO.
Modified: trunk/programmer.h ============================================================================== --- trunk/programmer.h Sun Feb 12 01:13:14 2012 (r1491) +++ trunk/programmer.h Mon Feb 13 01:35:35 2012 (r1492) @@ -527,6 +527,7 @@ int register_spi_programmer(const struct spi_programmer *programmer);
/* ichspi.c */ +#if CONFIG_INTERNAL == 1 enum ich_chipset { CHIPSET_ICH_UNKNOWN, CHIPSET_ICH7 = 7, @@ -538,7 +539,6 @@ CHIPSET_7_SERIES_PANTHER_POINT };
-#if CONFIG_INTERNAL == 1 extern uint32_t ichspi_bbar; int ich_init_spi(struct pci_dev *dev, uint32_t base, void *rcrb, enum ich_chipset ich_generation);