Do not require PCI code for RayeR SPI driver

CONFIG_RAYER_SPI only needs raw hardware access, but not libpci.
Disable CONFIG_RAYER_SPI on Android because of missing inb/outb.
Introduce NEED_RAW_ACCESS for raw memory access, PCI port I/O
and MSR access.

Corresponding to flashrom svn r1934.
Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
parent 74367bf3
...@@ -349,6 +349,15 @@ override CONFIG_MSTARDDC_SPI = no ...@@ -349,6 +349,15 @@ override CONFIG_MSTARDDC_SPI = no
endif endif
endif endif
ifeq ($(TARGET_OS), Android)
# Android on x86 (currently) does not provide raw PCI port I/O operations
ifeq ($(CONFIG_RAYER_SPI), yes)
UNSUPPORTED_FEATURES += CONFIG_RAYER_SPI=yes
else
override CONFIG_RAYER_SPI = no
endif
endif
############################################################################### ###############################################################################
# General architecture-specific settings. # General architecture-specific settings.
# Like above for the OS, below we verify user-supplied options depending on the target architecture. # Like above for the OS, below we verify user-supplied options depending on the target architecture.
...@@ -599,8 +608,7 @@ endif ...@@ -599,8 +608,7 @@ endif
ifeq ($(CONFIG_RAYER_SPI), yes) ifeq ($(CONFIG_RAYER_SPI), yes)
FEATURE_CFLAGS += -D'CONFIG_RAYER_SPI=1' FEATURE_CFLAGS += -D'CONFIG_RAYER_SPI=1'
PROGRAMMER_OBJS += rayer_spi.o PROGRAMMER_OBJS += rayer_spi.o
# Actually, NEED_LIBPCI is wrong. NEED_IOPORT_ACCESS would be more correct. NEED_RAW_ACCESS += CONFIG_RAYER_SPI
NEED_LIBPCI += CONFIG_RAYER_SPI
endif endif
ifeq ($(CONFIG_PONY_SPI), yes) ifeq ($(CONFIG_PONY_SPI), yes)
...@@ -782,19 +790,31 @@ endif ...@@ -782,19 +790,31 @@ endif
ifneq ($(NEED_LIBPCI), ) ifneq ($(NEED_LIBPCI), )
CHECK_LIBPCI = yes CHECK_LIBPCI = yes
# This is a dirty hack, but it saves us from checking all PCI drivers and all platforms manually.
# libpci may need raw memory, MSR or PCI port I/O on some platforms.
# Individual drivers might have the same needs as well.
NEED_RAW_ACCESS += $(NEED_LIBPCI)
FEATURE_CFLAGS += -D'NEED_PCI=1' FEATURE_CFLAGS += -D'NEED_PCI=1'
FEATURE_CFLAGS += $(call debug_shell,grep -q "OLD_PCI_GET_DEV := yes" .libdeps && printf "%s" "-D'OLD_PCI_GET_DEV=1'") FEATURE_CFLAGS += $(call debug_shell,grep -q "OLD_PCI_GET_DEV := yes" .libdeps && printf "%s" "-D'OLD_PCI_GET_DEV=1'")
PROGRAMMER_OBJS += pcidev.o physmap.o hwaccess.o PROGRAMMER_OBJS += pcidev.o
ifeq ($(TARGET_OS), NetBSD) ifeq ($(TARGET_OS), NetBSD)
# The libpci we want is called libpciutils on NetBSD and needs NetBSD libpci. # The libpci we want is called libpciutils on NetBSD and needs NetBSD libpci.
PCILIBS += -lpciutils -lpci PCILIBS += -lpciutils -lpci
# For (i386|x86_64)_iopl(2).
PCILIBS += -l$(shell uname -p)
else else
PCILIBS += -lpci PCILIBS += -lpci
endif
endif
ifneq ($(NEED_RAW_ACCESS), )
# Raw memory, MSR or PCI port I/O access.
FEATURE_CFLAGS += -D'NEED_RAW_ACCESS=1'
PROGRAMMER_OBJS += physmap.o hwaccess.o
ifeq ($(TARGET_OS), NetBSD)
# For (i386|x86_64)_iopl(2).
PCILIBS += -l$(shell uname -p)
else
ifeq ($(TARGET_OS), OpenBSD) ifeq ($(TARGET_OS), OpenBSD)
# For (i386|amd64)_iopl(2). # For (i386|amd64)_iopl(2).
PCILIBS += -l$(shell uname -m) PCILIBS += -l$(shell uname -m)
...@@ -805,6 +825,7 @@ PCILIBS += -framework IOKit -framework DirectHW ...@@ -805,6 +825,7 @@ PCILIBS += -framework IOKit -framework DirectHW
endif endif
endif endif
endif endif
endif endif
ifneq ($(NEED_LIBUSB0), ) ifneq ($(NEED_LIBUSB0), )
......
...@@ -196,7 +196,7 @@ cpu_to_be(64) ...@@ -196,7 +196,7 @@ cpu_to_be(64)
#define le_to_cpu32 cpu_to_le32 #define le_to_cpu32 cpu_to_le32
#define le_to_cpu64 cpu_to_le64 #define le_to_cpu64 cpu_to_le64
#if NEED_PCI == 1 #if NEED_RAW_ACCESS == 1
#if IS_X86 #if IS_X86
/* sys/io.h provides iopl(2) and x86 I/O port access functions (inb, outb etc). /* sys/io.h provides iopl(2) and x86 I/O port access functions (inb, outb etc).
...@@ -230,6 +230,7 @@ cpu_to_be(64) ...@@ -230,6 +230,7 @@ cpu_to_be(64)
* out[bwl] definitions in machine/cpufunc.h and sys/io.h at least in some * out[bwl] definitions in machine/cpufunc.h and sys/io.h at least in some
* versions. Use machine/cpufunc.h only for plain FreeBSD/DragonFlyBSD. * versions. Use machine/cpufunc.h only for plain FreeBSD/DragonFlyBSD.
*/ */
#include <sys/types.h>
#include <machine/cpufunc.h> #include <machine/cpufunc.h>
#define OUTB(x, y) do { u_int outb_tmp = (y); outb(outb_tmp, (x)); } while (0) #define OUTB(x, y) do { u_int outb_tmp = (y); outb(outb_tmp, (x)); } while (0)
#define OUTW(x, y) do { u_int outw_tmp = (y); outw(outw_tmp, (x)); } while (0) #define OUTW(x, y) do { u_int outw_tmp = (y); outw(outw_tmp, (x)); } while (0)
...@@ -382,6 +383,6 @@ int libpayload_wrmsr(int addr, msr_t msr); ...@@ -382,6 +383,6 @@ int libpayload_wrmsr(int addr, msr_t msr);
#error Unknown architecture, please check if it supports PCI port IO. #error Unknown architecture, please check if it supports PCI port IO.
#endif /* IS_* */ #endif /* IS_* */
#endif /* NEED_PCI == 1 */ #endif /* NEED_RAW_ACCESS == 1 */
#endif /* !__HWACCESS_H__ */ #endif /* !__HWACCESS_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment