[flashrom] [commit] r1184 - trunk

repository service svn at flashrom.org
Thu Sep 30 19:03:33 CEST 2010


Author: oxygene
Date: Thu Sep 30 19:03:32 2010
New Revision: 1184
URL: http://flashrom.org/trac/flashrom/changeset/1184

Log:
Add support for building flashrom against libpayload.
This doesn't include changes to the frontend which must be
done separately, so this won't work out of the box.
This code was tested on hardware.

Signed-off-by: Patrick Georgi <patrick.georgi at coresystems.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Modified:
   trunk/flashrom.c
   trunk/hwaccess.c
   trunk/hwaccess.h
   trunk/layout.c
   trunk/physmap.c
   trunk/udelay.c

Modified: trunk/flashrom.c
==============================================================================
--- trunk/flashrom.c	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/flashrom.c	Thu Sep 30 19:03:32 2010	(r1184)
@@ -22,9 +22,11 @@
  */
 
 #include <stdio.h>
-#include <fcntl.h>
 #include <sys/types.h>
+#ifndef __LIBPAYLOAD__
+#include <fcntl.h>
 #include <sys/stat.h>
+#endif
 #include <string.h>
 #include <stdlib.h>
 #include <getopt.h>

Modified: trunk/hwaccess.c
==============================================================================
--- trunk/hwaccess.c	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/hwaccess.c	Thu Sep 30 19:03:32 2010	(r1184)
@@ -22,9 +22,11 @@
 #include <string.h>
 #include <stdlib.h>
 #include <sys/types.h>
-#if !defined (__DJGPP__)
+#if !defined (__DJGPP__) && !defined(__LIBPAYLOAD__)
 #include <unistd.h>
 #include <fcntl.h>
+#endif
+#if !defined (__DJGPP__)
 #include <errno.h>
 #endif
 #include "flash.h"
@@ -44,7 +46,7 @@
 
 void get_io_perms(void)
 {
-#if defined(__DJGPP__)
+#if defined(__DJGPP__) || defined(__LIBPAYLOAD__)
 	/* We have full permissions by default. */
 	return;
 #else

Modified: trunk/hwaccess.h
==============================================================================
--- trunk/hwaccess.h	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/hwaccess.h	Thu Sep 30 19:03:32 2010	(r1184)
@@ -292,7 +292,7 @@
   #endif
 #endif
 
-#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__)
+#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__LIBPAYLOAD__)
 typedef struct { uint32_t hi, lo; } msr_t;
 msr_t rdmsr(int addr);
 int wrmsr(int addr, msr_t msr);
@@ -307,6 +307,16 @@
 msr_t freebsd_rdmsr(int addr);
 int freebsd_wrmsr(int addr, msr_t msr);
 #endif
+#if defined(__LIBPAYLOAD__)
+#include <arch/io.h>
+#include <arch/msr.h>
+typedef struct { uint32_t hi, lo; } msr_t;
+msr_t libpayload_rdmsr(int addr);
+int libpayload_wrmsr(int addr, msr_t msr);
+#undef rdmsr
+#define rdmsr libpayload_rdmsr
+#define wrmsr libpayload_wrmsr
+#endif
 
 #elif defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__)
 

Modified: trunk/layout.c
==============================================================================
--- trunk/layout.c	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/layout.c	Thu Sep 30 19:03:32 2010	(r1184)
@@ -134,6 +134,7 @@
 }
 #endif
 
+#ifndef __LIBPAYLOAD__
 int read_romlayout(char *name)
 {
 	FILE *romlayout;
@@ -181,6 +182,7 @@
 
 	return 0;
 }
+#endif
 
 int find_romentry(char *name)
 {

Modified: trunk/physmap.c
==============================================================================
--- trunk/physmap.c	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/physmap.c	Thu Sep 30 19:03:32 2010	(r1184)
@@ -28,7 +28,7 @@
 #include "flash.h"
 
 /* Do we need any file access or ioctl for physmap or MSR? */
-#if !defined(__DJGPP__)
+#if !defined(__DJGPP__) && !defined(__LIBPAYLOAD__)
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <errno.h>
@@ -104,6 +104,31 @@
 	__dpmi_free_physical_address_mapping(&mi);
 }
 
+#elif defined(__LIBPAYLOAD__)
+#include <arch/virtual.h>
+
+#define MEM_DEV ""
+
+void *sys_physmap(unsigned long phys_addr, size_t len)
+{
+	return (void*)phys_to_virt(phys_addr);
+}
+
+#define sys_physmap_rw_uncached	sys_physmap
+#define sys_physmap_ro_cached	sys_physmap
+
+void physunmap(void *virt_addr, size_t len)
+{
+}
+
+int setup_cpu_msr(int cpu)
+{
+	return 0;
+}
+
+void cleanup_cpu_msr(void)
+{
+}
 #elif defined(__DARWIN__)
 
 #include <DirectIO/darwinio.h>
@@ -453,6 +478,20 @@
 {
 	// Nothing, yet.
 }
+#elif defined(__LIBPAYLOAD__)
+msr_t libpayload_rdmsr(int addr)
+{
+	msr_t msr;
+	unsigned long long val = _rdmsr(addr);
+	msr.lo = val & 0xffffffff;
+	msr.hi = val >> 32;
+	return msr;
+}
+
+int libpayload_wrmsr(int addr, msr_t msr)
+{
+	_wrmsr(addr, msr.lo | ((unsigned long long)msr.hi << 32));
+}
 #else
 msr_t rdmsr(int addr)
 {

Modified: trunk/udelay.c
==============================================================================
--- trunk/udelay.c	Thu Sep 30 01:37:24 2010	(r1183)
+++ trunk/udelay.c	Thu Sep 30 19:03:32 2010	(r1184)
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#ifndef __LIBPAYLOAD__
+
 #include <unistd.h>
 #include <sys/time.h>
 #include <stdlib.h>
@@ -179,3 +181,15 @@
 	}
 }
 
+#else 
+
+void myusec_calibrate_delay(void)
+{
+	get_cpu_speed();
+}
+
+void internal_delay(int usecs)
+{
+	udelay(usecs);
+}
+#endif




More information about the flashrom mailing list