added support for partial bmc flash
diff --git a/objects/flash_bios_obj.c b/objects/flash_bios_obj.c
index a3f3d03..17582d4 100644
--- a/objects/flash_bios_obj.c
+++ b/objects/flash_bios_obj.c
@@ -288,8 +288,8 @@
 		c--;

 	}

 

-	const char* inst[] = {"bios","bmc"};

-  	for (i=0;i<2;i++)

+	const char* inst[] = {"bios","bmc","bmc_ramdisk","bmc_kernel"};

+  	for (i=0;i<4;i++)

   	{

 		gchar* s;

 		s = g_strdup_printf ("%s/%s",dbus_object_path,inst[i]);

diff --git a/objects/flasher_obj.c b/objects/flasher_obj.c
index 53d62fd..9981378 100644
--- a/objects/flasher_obj.c
+++ b/objects/flasher_obj.c
@@ -296,13 +296,13 @@
 	atexit(flash_access_cleanup_pnor);

 }

 

-uint8_t flash(FlashControl* flash_control,bool bmc_flash, char* write_file, char* obj_path)

+uint8_t flash(FlashControl* flash_control,bool bmc_flash, uint32_t address, char* write_file, char* obj_path)

 {

 	bool has_sfc = false, has_ast = false, use_lpc = true;

 	bool erase = true, program = true;

-	uint32_t address = 0;

+

 	int rc;

-	printf("flasher: %s, BMC = %d\n",write_file,bmc_flash);

+	printf("flasher: %s, BMC = %d, address = 0x%x\n",write_file,bmc_flash,address);

 #ifdef __arm__

 	/* Check platform */

 	check_platform(&has_sfc, &has_ast);

@@ -390,10 +390,20 @@
 	/* Export all objects */

 	g_dbus_object_manager_server_set_connection (manager, connection);

 	bool bmc_flash = false;

+	uint32_t address = 0;

 	if (strcmp(cmd->argv[1],"bmc")==0) {

 		bmc_flash = true;

 	}

-	int rc = flash(flash_control,bmc_flash,cmd->argv[2],cmd->argv[3]);

+	if (strcmp(cmd->argv[1],"bmc_ramdisk")==0) {

+		bmc_flash = true;

+		address = 0x20300000;

+	}

+	if (strcmp(cmd->argv[1],"bmc_kernel")==0) {

+		bmc_flash = true;

+		address = 0x20080000;

+	}

+

+	int rc = flash(flash_control,bmc_flash,address,cmd->argv[2],cmd->argv[3]);

 	if (rc == FLASH_ERROR) {

 		flash_message(connection,cmd->argv[3],"error","Flash Error");

 	} else {