summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2014-12-20 20:25:19 +0000
committerstefanct <stefanct@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2014-12-20 20:25:19 +0000
commit23e4adb527acd55642ae603523d6966ca0716838 (patch)
treeb5b0f8f09acac5f114c80ac1ed2ff316c7c0eb12 /Makefile
parent5c725be0653ca35aa38238e36a7539a84f6c7419 (diff)
downloadflashrom-23e4adb527acd55642ae603523d6966ca0716838.tar.gz
Add support for the MSTAR I2C ISP protocol.
Basically, among other chips, MSTAR manufactures SoCs that equip TV sets and computer screens, and it seems that all of their products use the same in-system programming protocol. Basically, they use the DDC channel of VGA or DVI connectors, which is actually an I2C bus, to encapsulate SPI frames (the flash chip is connected to the SoC through an SPI bus). I wrote this patch since the screen I bought had a software bug, and the manufacturer only released a new firmware binary, but no tool or instructions on flashing it. More details can be found here: http://boeglin.org/blog/index.php?entry=Flashing-a-BenQ-Z-series-for-free(dom) I only read code from Linux kernel archives published by Acer to figure out the protocol (for a touchscreen controller and an NFC chip, both by MSTAR, that share the same ISP protocol), so I don't think there are any legal problems with it. Compilation is currently disabled by default in the Makefile. If in doubt, additional Makefile bugs were added by Stefan. Signed-off-by: Alexandre Boeglin <alex@boeglin.org> Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1860 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile35
1 files changed, 35 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 98230a5..a59a8f1 100644
--- a/Makefile
+++ b/Makefile
@@ -300,6 +300,11 @@ UNSUPPORTED_FEATURES += CONFIG_LINUX_SPI=yes
else
override CONFIG_LINUX_SPI = no
endif
+ifeq ($(CONFIG_MSTARDDC_SPI), yes)
+UNSUPPORTED_FEATURES += CONFIG_MSTARDDC_SPI=yes
+else
+override CONFIG_MSTARDDC_SPI = no
+endif
endif
###############################################################################
@@ -413,6 +418,9 @@ CONFIG_FT2232_SPI ?= yes
# Always enable Altera USB-Blaster dongles for now.
CONFIG_USBBLASTER_SPI ?= yes
+# MSTAR DDC support needs more tests/reviews/cleanups.
+CONFIG_MSTARDDC_SPI ?= no
+
# Always enable dummy tracing for now.
CONFIG_DUMMY ?= yes
@@ -670,6 +678,13 @@ FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "LINUX_SPI_SUPPORT := yes" .features
PROGRAMMER_OBJS += linux_spi.o
endif
+ifeq ($(CONFIG_MSTARDDC_SPI), yes)
+# This is a totally ugly hack.
+FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "LINUX_I2C_SUPPORT := yes" .features && printf "%s" "-D'CONFIG_MSTARDDC_SPI=1'")
+NEED_LINUX_I2C := yes
+PROGRAMMER_OBJS += mstarddc_spi.o
+endif
+
ifeq ($(NEED_SERIAL), yes)
LIB_OBJS += serial.o
endif
@@ -927,6 +942,19 @@ int main(int argc, char **argv)
endef
export LINUX_SPI_TEST
+define LINUX_I2C_TEST
+#include <linux/i2c-dev.h>
+#include <linux/i2c.h>
+
+int main(int argc, char **argv)
+{
+ (void) argc;
+ (void) argv;
+ return 0;
+}
+endef
+export LINUX_I2C_TEST
+
features: compiler
@echo "FEATURES := yes" > .features.tmp
ifeq ($(NEED_FTDI), yes)
@@ -948,6 +976,13 @@ ifeq ($(CONFIG_LINUX_SPI), yes)
( echo "yes."; echo "LINUX_SPI_SUPPORT := yes" >> .features.tmp ) || \
( echo "no."; echo "LINUX_SPI_SUPPORT := no" >> .features.tmp )
endif
+ifeq ($(NEED_LINUX_I2C), yes)
+ @printf "Checking if Linux I2C headers are present... "
+ @echo "$$LINUX_I2C_TEST" > .featuretest.c
+ @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \
+ ( echo "yes."; echo "LINUX_I2C_SUPPORT := yes" >> .features.tmp ) || \
+ ( echo "no."; echo "LINUX_I2C_SUPPORT := no" >> .features.tmp )
+endif
@printf "Checking for utsname support... "
@echo "$$UTSNAME_TEST" > .featuretest.c
@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 && \