[coreboot] [flashrom] r583 - trunk

svn at coreboot.org svn at coreboot.org
Fri Jun 12 10:10:33 CEST 2009


Author: hailfinger
Date: 2009-06-12 10:10:33 +0200 (Fri, 12 Jun 2009)
New Revision: 583

Modified:
   trunk/flash.h
   trunk/spi.c
Log:
Add spi_nbyte_program as generic function to the SPI layer.

Signed-off-by: Paul Fox <pgf at laptop.org>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>


Modified: trunk/flash.h
===================================================================
--- trunk/flash.h	2009-06-12 08:04:08 UTC (rev 582)
+++ trunk/flash.h	2009-06-12 08:10:33 UTC (rev 583)
@@ -757,6 +757,7 @@
 uint8_t spi_read_status_register(void);
 int spi_disable_blockprotect(void);
 void spi_byte_program(int address, uint8_t byte);
+int spi_nbyte_program(int address, uint8_t *bytes, int len);
 int spi_nbyte_read(int address, uint8_t *bytes, int len);
 int spi_aai_write(struct flashchip *flash, uint8_t *buf);
 uint32_t spi_get_valid_read_addr(void);

Modified: trunk/spi.c
===================================================================
--- trunk/spi.c	2009-06-12 08:04:08 UTC (rev 582)
+++ trunk/spi.c	2009-06-12 08:10:33 UTC (rev 583)
@@ -616,6 +616,27 @@
 	spi_command(sizeof(cmd), 0, cmd, NULL);
 }
 
+int spi_nbyte_program(int address, uint8_t *bytes, int len)
+{
+	unsigned char cmd[JEDEC_BYTE_PROGRAM_OUTSIZE - 1 + 256] = {
+		JEDEC_BYTE_PROGRAM,
+		(address >> 16) & 0xff,
+		(address >> 8) & 0xff,
+		(address >> 0) & 0xff,
+	};
+
+	if (len > 256) {
+		printf_debug ("%s called for too long a write\n",
+		     __FUNCTION__);
+		return 1;
+	}
+
+	memcpy(&cmd[4], bytes, len);
+
+	/* Send Byte-Program */
+	return spi_command(4 + len, 0, cmd, NULL);
+}
+
 int spi_disable_blockprotect(void)
 {
 	uint8_t status;





More information about the coreboot mailing list