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