target: msm8226: Add support for new QVGA platform subtype

Add support for new QVGA platform subtype and also modify
MEMBASE, scratch address and size to conform to the
new 128MB memorymap.

CRs-Fixed: 630700
Change-Id: I5dd2cfb5aee431a5aae8fa9ba0474b82417309a6
diff --git a/include/target.h b/include/target.h
index d8a0daf..0af99e1 100644
--- a/include/target.h
+++ b/include/target.h
@@ -72,7 +72,7 @@
 void target_usb_phy_reset(void);
 void target_usb_phy_mux_configure(void);
 target_usb_iface_t * target_usb30_init();
-
+bool target_is_cdp_qvga();
 /* Boot device */
 enum boot_device
 {
diff --git a/target/msm8226/init.c b/target/msm8226/init.c
index 71b46c5..9f1a873 100644
--- a/target/msm8226/init.c
+++ b/target/msm8226/init.c
@@ -78,6 +78,11 @@
 	HW_PLATFORM_SUBTYPE_SKUG = 5,
 };
 
+enum mtp_cdp_subtype
+{
+	HW_PLATFORM_SUBTYPE_QVGA = 4,
+};
+
 static uint32_t mmc_pwrctl_base[] =
 	{ MSM_SDC1_BASE, MSM_SDC2_BASE, MSM_SDC3_BASE };
 
@@ -280,6 +285,11 @@
 	*/
 }
 
+bool target_is_cdp_qvga()
+{
+	return board_hardware_subtype() == HW_PLATFORM_SUBTYPE_QVGA;
+}
+
 /* Detect the modem type */
 void target_baseband_detect(struct board_data *board)
 {
@@ -306,6 +316,8 @@
 		break;
 	case HW_PLATFORM_SUBTYPE_SKUG:
 		break;
+	case HW_PLATFORM_SUBTYPE_QVGA:
+		break;
 	default:
 		dprintf(CRITICAL, "Platform Subtype : %u is not supported\n", platform_subtype);
 		ASSERT(0);
diff --git a/target/msm8226/meminfo.c b/target/msm8226/meminfo.c
index e5a53d2..5de0ef0 100644
--- a/target/msm8226/meminfo.c
+++ b/target/msm8226/meminfo.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -34,6 +34,7 @@
 #include <libfdt.h>
 #include <platform/iomap.h>
 #include <dev_tree.h>
+#include <target.h>
 
 /* Funtion to add the ram partition entries into device tree.
  * The function assumes that all the entire fixed memory regions should
@@ -77,10 +78,24 @@
 
 void *target_get_scratch_address(void)
 {
-	return ((void *)SCRATCH_ADDR);
+	void *scratch_addr = 0;
+
+	if(target_is_cdp_qvga())
+		scratch_addr = (void *)SCRATCH_ADDR_128MAP;
+	else
+		scratch_addr = (void *)SCRATCH_ADDR_512MAP;
+
+	return scratch_addr;
 }
 
 unsigned target_get_max_flash_size(void)
 {
-	return (512 * 1024 * 1024);
+	uint32_t max_flash_size = 0;
+
+	if(target_is_cdp_qvga())
+		max_flash_size = SCRATCH_SIZE_128MAP;
+	else
+		max_flash_size = SCRATCH_SIZE_512MAP;
+
+	return max_flash_size;
 }
diff --git a/target/msm8226/rules.mk b/target/msm8226/rules.mk
index d31f2bc..7bef55e 100755
--- a/target/msm8226/rules.mk
+++ b/target/msm8226/rules.mk
@@ -5,7 +5,7 @@
 
 PLATFORM := msm8226
 
-MEMBASE := 0x0FF00000 # SDRAM
+MEMBASE := 0x07F00000 # SDRAM
 MEMSIZE := 0x00100000 # 1MB
 
 BASE_ADDR        := 0x00000
@@ -14,6 +14,10 @@
 KERNEL_ADDR      := BASE_ADDR+0x00008000
 RAMDISK_ADDR     := BASE_ADDR+0x01000000
 SCRATCH_ADDR     := 0x10000000
+SCRATCH_ADDR_128MAP     := 0x04200000
+SCRATCH_ADDR_512MAP     := 0x10000000
+SCRATCH_SIZE_128MAP     := 0x03D00000
+SCRATCH_SIZE_512MAP     := 0x20000000
 
 DEFINES += DISPLAY_SPLASH_SCREEN=1
 DEFINES += DISPLAY_TYPE_MIPI=1
@@ -35,7 +39,11 @@
 	TAGS_ADDR=$(TAGS_ADDR) \
 	KERNEL_ADDR=$(KERNEL_ADDR) \
 	RAMDISK_ADDR=$(RAMDISK_ADDR) \
-	SCRATCH_ADDR=$(SCRATCH_ADDR)
+	SCRATCH_ADDR=$(SCRATCH_ADDR) \
+	SCRATCH_ADDR_128MAP=$(SCRATCH_ADDR_128MAP) \
+	SCRATCH_ADDR_512MAP=$(SCRATCH_ADDR_512MAP) \
+	SCRATCH_SIZE_128MAP=$(SCRATCH_SIZE_128MAP) \
+	SCRATCH_SIZE_512MAP=$(SCRATCH_SIZE_512MAP)
 
 
 OBJS += \