[coreboot] [flashrom] r527 - trunk

svn at coreboot.org svn at coreboot.org
Sun May 17 21:39:28 CEST 2009


Author: ruik
Date: 2009-05-17 21:39:27 +0200 (Sun, 17 May 2009)
New Revision: 527

Modified:
   trunk/Makefile
   trunk/flash.h
   trunk/flashrom.c
   trunk/pcidev.c
Log:
This patch adds support for BIOS flashing on the all SiliconImage SATA
controllers. It was easy because

1) flashrom has now nice API
2) documentation is public on the web site

Signed-off-by: Rudolf Marek <r.marek at assembler.cz>
Acked-by: Uwe Hermann <uwe at hermann-uwe.de>



Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2009-05-17 18:24:24 UTC (rev 526)
+++ trunk/Makefile	2009-05-17 19:39:27 UTC (rev 527)
@@ -33,7 +33,7 @@
 	sst49lfxxxc.o sst_fwhub.o layout.o cbtable.o flashchips.o physmap.o \
 	flashrom.o w39v080fa.o sharplhf00l04.o w29ee011.o spi.o it87spi.o \
 	ichspi.o w39v040c.o sb600spi.o wbsio_spi.o m29f002.o internal.o \
-	dummyflasher.o pcidev.o nic3com.o
+	dummyflasher.o pcidev.o nic3com.o sata_sii.o
 
 all: pciutils dep $(PROGRAM)
 

Modified: trunk/flash.h
===================================================================
--- trunk/flash.h	2009-05-17 18:24:24 UTC (rev 526)
+++ trunk/flash.h	2009-05-17 19:39:27 UTC (rev 527)
@@ -83,6 +83,7 @@
 #define PROGRAMMER_INTERNAL	0x00
 #define PROGRAMMER_DUMMY	0x01
 #define PROGRAMMER_NIC3COM	0x02
+#define PROGRAMMER_SATASII	0x03
 
 struct programmer_entry {
 	const char *vendor;
@@ -559,6 +560,8 @@
 /* pcidev.c */
 #define PCI_OK 0
 #define PCI_NT 1    /* Not tested */
+#define PCI_IO_BASE_ADDRESS 0x10
+
 extern uint32_t io_base_addr;
 extern struct pci_access *pacc;
 extern struct pci_filter filter;
@@ -658,6 +661,16 @@
 uint8_t nic3com_chip_readb(const chipaddr addr);
 extern struct pcidev_status nics_3com[];
 
+/* satasii.c */
+int satasii_init(void);
+int satasii_shutdown(void);
+void *satasii_map(const char *descr, unsigned long phys_addr, size_t len);
+void satasii_unmap(void *virt_addr, size_t len);
+void satasii_chip_writeb(uint8_t val, chipaddr addr);
+uint8_t satasii_chip_readb(const chipaddr addr);
+extern struct pcidev_status satas_sii[];
+
+
 /* flashrom.c */
 extern int verbose;
 #define printf_debug(x...) { if (verbose) printf(x); }

Modified: trunk/flashrom.c
===================================================================
--- trunk/flashrom.c	2009-05-17 18:24:24 UTC (rev 526)
+++ trunk/flashrom.c	2009-05-17 19:39:27 UTC (rev 527)
@@ -74,6 +74,19 @@
 		.chip_writel		= fallback_chip_writel,
 	},
 
+	{
+		.init			= satasii_init,
+		.shutdown		= satasii_shutdown,
+		.map_flash_region	= satasii_map,
+		.unmap_flash_region	= satasii_unmap,
+		.chip_readb		= satasii_chip_readb,
+		.chip_readw		= fallback_chip_readw,
+		.chip_readl		= fallback_chip_readl,
+		.chip_writeb		= satasii_chip_writeb,
+		.chip_writew		= fallback_chip_writew,
+		.chip_writel		= fallback_chip_writel,
+	},
+
 	{},
 };
 
@@ -503,6 +516,10 @@
 				programmer = PROGRAMMER_NIC3COM;
 				if (optarg[7] == '=')
 					pcidev_bdf = strdup(optarg + 8);
+			} else if (strncmp(optarg, "satasii", 7) == 0) {
+				programmer = PROGRAMMER_SATASII;
+				if (optarg[7] == '=')
+					pcidev_bdf = strdup(optarg + 8);
 			} else {
 				printf("Error: Unknown programmer.\n");
 				exit(1);

Modified: trunk/pcidev.c
===================================================================
--- trunk/pcidev.c	2009-05-17 18:24:24 UTC (rev 526)
+++ trunk/pcidev.c	2009-05-17 19:39:27 UTC (rev 527)
@@ -26,8 +26,6 @@
 #include <errno.h>
 #include "flash.h"
 
-#define PCI_IO_BASE_ADDRESS 0x10
-
 uint32_t io_base_addr;
 struct pci_access *pacc;
 struct pci_filter filter;





More information about the coreboot mailing list