[LinuxBIOS] r2863 - trunk/util/flashrom

svn at openbios.org svn at openbios.org
Tue Oct 16 23:09:06 CEST 2007


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 at gmx.net>
Acked-by: Stefan Reinauer <stepan at 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);





More information about the coreboot mailing list