lots of changes
diff --git a/objects/control_bmc_obj.c b/objects/control_bmc_obj.c
index 7e9965f..9ceaf9b 100644
--- a/objects/control_bmc_obj.c
+++ b/objects/control_bmc_obj.c
@@ -14,46 +14,94 @@
 static const gchar* dbus_object_path = "/org/openbmc/control";

 static const gchar* dbus_name        = "org.openbmc.control.Bmc";

 

+//this probably should come from some global SOC config

+

+#define LPC_BASE		0x1e789000

+#define LPC_HICR6		0x80

+#define LPC_HICR7		0x88

+#define LPC_HICR8		0x8c

+

+#define SPI_BASE		0x1e630000

+#define SCU_BASE                0x1e780000

+#define UART_BASE               0x1e783000

+#define COM_BASE                0x1e789000

+#define GPIO_BASE		0x1e6e2000

 

 static GDBusObjectManagerServer *manager = NULL;

 

+void* memmap(int mem_fd,uint32_t* base)

+{

+	void* bmcreg;

+	bmcreg = mmap(NULL, getpagesize(),

+			PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd, base);

+

+	if (bmcreg == MAP_FAILED) {

+		perror("Unable to map LPC register memory");

+		exit(1);

+	}

+	return bmcreg;

+}

+

+void reg_init()

+{

+	g_print("BMC init\n");

+	// BMC init done here

+

+	void *bmcreg;

+	int mem_fd = open("/dev/mem", O_RDWR | O_SYNC);

+	if (mem_fd < 0) {

+		perror("Unable to open /dev/mem");

+		exit(1);

+	}

+

+	bmcreg = memmap(mem_fd,LPC_BASE);

+	devmem(bmcreg+LPC_HICR6,0x00000500); //Enable LPC FWH cycles, Enable LPC to AHB bridge

+	devmem(bmcreg+LPC_HICR7,0x30000E00); //32M PNOR

+	devmem(bmcreg+LPC_HICR8,0xFE0001FF);

+

+	//flash controller

+	bmcreg = memmap(mem_fd,SPI_BASE);

+	devmem(bmcreg+0x00,0x00000003);

+	devmem(bmcreg+0x04,0x00002404);

+

+	//UART

+

+	

+	bmcreg = memmap(mem_fd,UART_BASE);

+	devmem(bmcreg+0x00,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)

+	devmem(bmcreg+0x04,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)

+	devmem(bmcreg+0x08,0x000000c1);  //Disable Parity, 1 stop bit, 8 bits

+	bmcreg = memmap(mem_fd,COM_BASE);

+	devmem(bmcreg+0x9C,0x00000000);  //Set routing UART1 -> COM 1

+

+	bmcreg = memmap(mem_fd,SCU_BASE);

+	devmem(bmcreg+0x00,0x13008CE7);

+	devmem(bmcreg+0x04,0x0370E677);

+	devmem(bmcreg+0x20,0xDF48F7FF);

+	devmem(bmcreg+0x24,0xC738F202);

+

+

+	//GPIO

+	bmcreg = memmap(mem_fd,GPIO_BASE);

+	devmem(bmcreg+0x84,0x00fff0c0);  //Enable UART1

+	devmem(bmcreg+0x70,0x120CE406);

+	devmem(bmcreg+0x80,0xCB000000);

+	devmem(bmcreg+0x88,0x01C000FF);

+	devmem(bmcreg+0x8c,0xC1C000FF);

+	devmem(bmcreg+0x90,0x003FA009);

+

+

+	close(mem_fd);

+}

+

 static gboolean

 on_init (Control          *control,

          GDBusMethodInvocation  *invocation,

          gpointer                user_data)

 {

-	g_print("BMC init\n");

-	// BMC init done here

-	/*

-	devmem(0x1e789080,0x00000500); //Enable LPC FWH cycles, Enable LPC to AHB bridge

-	devmem(0x1e789088,0x30000E00); //32M PNOR

-	devmem(0x1e78908C,0xFE0001FF);

-

-	//flash controller

-	devmem(0x1e630000,0x00000003);

-	devmem(0x1e630004,0x00002404);

-

-	//UART

-	devmem(0x1e6e2084,0x00fff0c0);  //Enable UART1

-	devmem(0x1e783000,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)

-	devmem(0x1e783004,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)

-	devmem(0x1e783008,0x000000c1);  //Disable Parity, 1 stop bit, 8 bits

-	devmem(0x1E78909C,0x00000000);  //Set routing UART1 -> COM 1

-

-

-	//GPIO

-	devmem(0x1e6e2070,0x120CE406);

-	devmem(0x1e6e2080,0xCB000000);

-	devmem(0x1e6e2088,0x01C000FF);

-	devmem(0x1e6e208c,0xC1C000FF);

-	devmem(0x1e6e2090,0x003FA009);

-

-	devmem(0x1E780000,0x13008CE7);

-	devmem(0x1E780004,0x0370E677);

-	devmem(0x1E780020,0xDF48F7FF);

-	devmem(0x1E780024,0xC738F202);

-*/

-

+	#ifdef __arm__

+	reg_init();

+	#endif

 	control_complete_init(control,invocation);

 	control_emit_goto_system_state(control,"STANDBY");

 	

@@ -106,7 +154,6 @@
 	}

 	/* Export all objects */

 	g_dbus_object_manager_server_set_connection (manager, connection);

-

 }

 

 static void

diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index bb95d17..4c40708 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -13,9 +13,11 @@
                 GDBusMethodInvocation  *invocation,

                 gpointer                user_data)

 {

-  flash_complete_init(f,invocation);

-  return TRUE;

-

+	flash_complete_init(f,invocation);

+	//tune flash

+	g_print("Tuning BIOS Flash\n");

+	flash_access_setup_pnor(true, false, false);

+	return TRUE;

 }

 

 static gboolean

diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index 53df62d..bb0eaec 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -52,18 +52,6 @@
 		pgood_timeout_start = 0;

 		return TRUE;

 	}

-	//For simulation, remove

-	/*

-	if (tmp_pgood!=last_pgood) {

-		if (tmp_pgood == 1) {

-			control_emit_goto_system_state(control,"POWERED_ON");

-		} else {

-			control_emit_goto_system_state(control,"POWERED_OFF");

-		}

-	}

-	

-	last_pgood = tmp_pgood;

-	*/

 	uint8_t gpio;

 	

 	int rc = gpio_open(&pgood);

@@ -91,7 +79,7 @@
 		//return FALSE;

 	}

 	//pgood is not at desired state yet

-	g_print("GPIO: %d;  %d\n",gpio,control_power_get_state(control_power));

+	//g_print("GPIO: %d;  %d\n",gpio,control_power_get_state(control_power));

 	if (gpio != control_power_get_state(control_power) &&

 		control_power_get_pgood_timeout(control_power) > 0)

 	{

@@ -238,27 +226,22 @@
 	// get gpio device paths

 	int rc = GPIO_OK;

 	do {

-

 		rc = gpio_init(connection,&power_pin);

 		if (rc != GPIO_OK) { break; }

 		rc = gpio_init(connection,&pgood);

 		if (rc != GPIO_OK) { break; }

+		uint8_t gpio;

 		rc = gpio_open(&pgood);

-

+		if (rc != GPIO_OK) { break; }

+		rc = gpio_read(&pgood,&gpio);

+		if (rc != GPIO_OK) { break; }

+		gpio_close(&pgood);	

+		control_power_set_pgood(control_power,gpio);

 	} while(0);

 	if (rc != GPIO_OK)

 	{

 		event_log_emit_event_log(event_log, LOG_ALERT, "GPIO setup error",rc);

-	}

-	int rc = gpio_open(&pgood);

-	rc = gpio_read(&pgood,&gpio);

-	gpio_close(&pgood);	

-	if (rc == GPIO_OK) {

-		control_power_set_pgood(control_power,gpio);

-

-	} else {

-	}

-

+	} 

 }

 

 static void