Author: hailfinger Date: 2007-10-16 23:09:06 +0200 (Tue, 16 Oct 2007) New Revision: 2863
Modified: trunk/util/flashrom/board_enable.c trunk/util/flashrom/flash.h trunk/util/flashrom/spi.c Log: Convert the existing it8716f_* functions to generic_spi_* functions by applying abstraction and wrapping.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net Acked-by: Stefan Reinauer stepan@coresystems.de
Modified: trunk/util/flashrom/board_enable.c =================================================================== --- trunk/util/flashrom/board_enable.c 2007-10-16 18:21:22 UTC (rev 2862) +++ trunk/util/flashrom/board_enable.c 2007-10-16 21:09:06 UTC (rev 2863) @@ -355,7 +355,7 @@
struct board_pciid_enable board_pciid_enables[] = { {0x10de, 0x0360, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - "gigabyte", "m57sli", "GIGABYTE GA-M57SLI", it87xx_probe_serial_flash}, + "gigabyte", "m57sli", "GIGABYTE GA-M57SLI", it87xx_probe_spi_flash}, {0x1022, 0x7468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, "iwill", "dk8_htx", "IWILL DK8-HTX", w83627hf_gpio24_raise_2e}, {0x10de, 0x005e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
Modified: trunk/util/flashrom/flash.h =================================================================== --- trunk/util/flashrom/flash.h 2007-10-16 18:21:22 UTC (rev 2862) +++ trunk/util/flashrom/flash.h 2007-10-16 21:09:06 UTC (rev 2863) @@ -209,7 +209,7 @@
/* spi.c */ int probe_spi(struct flashchip *flash); -int it87xx_probe_serial_flash(const char *name); +int it87xx_probe_spi_flash(const char *name);
/* 82802ab.c */ int probe_82802ab(struct flashchip *flash);
Modified: trunk/util/flashrom/spi.c =================================================================== --- trunk/util/flashrom/spi.c 2007-10-16 18:21:22 UTC (rev 2862) +++ trunk/util/flashrom/spi.c 2007-10-16 21:09:06 UTC (rev 2863) @@ -68,7 +68,7 @@ regwrite(port, 0x02, 0x02); }
-static uint16_t find_ite_serial_flash_port(uint16_t port) +static uint16_t find_ite_spi_flash_port(uint16_t port) { uint8_t tmp = 0; uint16_t id, flashport = 0; @@ -102,6 +102,14 @@ return flashport; }
+int it87xx_probe_spi_flash(const char *name) +{ + it8716f_flashport = find_ite_spi_flash_port(ITE_SUPERIO_PORT1); + if (!it8716f_flashport) + it8716f_flashport = find_ite_spi_flash_port(ITE_SUPERIO_PORT2); + return (!it8716f_flashport); +} + /* The IT8716F only supports commands with length 1,2,4,5 bytes including command byte and can not read more than 3 bytes from the device. This function expects writearr[0] to be the first byte sent to the device, @@ -162,31 +170,30 @@ return 0; }
-static int it8716f_serial_rdid(uint16_t port, unsigned char *readarr) +static int generic_spi_command(unsigned char writecnt, unsigned char readcnt, const unsigned char *writearr, unsigned char *readarr) { + if (it8716f_flashport) + return it8716f_spi_command(it8716f_flashport, writecnt, readcnt, writearr, readarr); + printf("%s called, but no SPI chipset detected\n", __FUNCTION__); + return 1; +} + +static int generic_spi_rdid(unsigned char *readarr) +{ const unsigned char cmd[] = JEDEC_RDID;
- if (it8716f_spi_command(port, JEDEC_RDID_OUTSIZE, JEDEC_RDID_INSIZE, cmd, readarr)) + if (generic_spi_command(JEDEC_RDID_OUTSIZE, JEDEC_RDID_INSIZE, cmd, readarr)) return 1; printf("RDID returned %02x %02x %02x\n", readarr[0], readarr[1], readarr[2]); return 0; }
-int it87xx_probe_serial_flash(const char *name) -{ - it8716f_flashport = find_ite_serial_flash_port(ITE_SUPERIO_PORT1); - if (!it8716f_flashport) - it8716f_flashport = find_ite_serial_flash_port(ITE_SUPERIO_PORT2); - return (!it8716f_flashport); -} - int probe_spi(struct flashchip *flash) { unsigned char readarr[3]; uint8_t manuf_id; uint16_t model_id; - if (it8716f_flashport) { - it8716f_serial_rdid(it8716f_flashport, readarr); + if (!generic_spi_rdid(readarr)) { manuf_id = readarr[0]; model_id = (readarr[1] << 8) | readarr[2]; printf_debug("%s: id1 0x%x, id2 0x%x\n", __FUNCTION__, manuf_id, model_id);