From 23e4adb527acd55642ae603523d6966ca0716838 Mon Sep 17 00:00:00 2001 From: stefanct Date: Sat, 20 Dec 2014 20:25:19 +0000 Subject: 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 Signed-off-by: Stefan Tauner Acked-by: Stefan Tauner git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1860 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- programmer.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'programmer.h') diff --git a/programmer.h b/programmer.h index 09b6087..d6e06cb 100644 --- a/programmer.h +++ b/programmer.h @@ -98,6 +98,9 @@ enum programmer { #endif #if CONFIG_USBBLASTER_SPI == 1 PROGRAMMER_USBBLASTER_SPI, +#endif +#if CONFIG_MSTARDDC_SPI == 1 + PROGRAMMER_MSTARDDC_SPI, #endif PROGRAMMER_INVALID /* This must always be the last entry. */ }; @@ -474,6 +477,11 @@ int usbblaster_spi_init(void); extern const struct dev_entry devs_usbblasterspi[]; #endif +/* mstarddc_spi.c */ +#if CONFIG_MSTARDDC_SPI == 1 +int mstarddc_spi_init(void); +#endif + /* rayer_spi.c */ #if CONFIG_RAYER_SPI == 1 int rayer_spi_init(void); @@ -555,6 +563,9 @@ enum spi_controller { #if CONFIG_USBBLASTER_SPI == 1 SPI_CONTROLLER_USBBLASTER, #endif +#if CONFIG_MSTARDDC_SPI == 1 + SPI_CONTROLLER_MSTARDDC, +#endif }; #define MAX_DATA_UNSPECIFIED 0 -- cgit v1.2.1