Merge "AndroidBoot: Change to mark board have PM660 PMIC"
diff --git a/AndroidBoot.mk b/AndroidBoot.mk
index d23280e..b0a1427 100644
--- a/AndroidBoot.mk
+++ b/AndroidBoot.mk
@@ -1,16 +1,24 @@
 #Android makefile to build lk bootloader as a part of Android Build
 
+ifeq ($(PRODUCT_IOT),true)
+  LK_PATH := hardware/bsp/bootloader/qcom/lk
+  CROOT_DIR := ../../../../..
+else
+  LK_PATH := bootable/bootloader/lk/
+  CROOT_DIR := ../../..
+endif
+
 ifeq ($(BOOTLOADER_GCC_VERSION),)
 ifndef $(2ND_TARGET_GCC_VERSION)
-CROSS_COMPILE := ../../../prebuilts/gcc/linux-x86/arm/arm-eabi-$(TARGET_GCC_VERSION)/bin/arm-eabi-
+CROSS_COMPILE := $(CROOT_DIR)/prebuilts/gcc/linux-x86/arm/arm-eabi-$(TARGET_GCC_VERSION)/bin/arm-eabi-
 else
-CROSS_COMPILE := ../../../prebuilts/gcc/linux-x86/arm/arm-eabi-$(2ND_TARGET_GCC_VERSION)/bin/arm-eabi-
+CROSS_COMPILE := $(CROOT_DIR)/prebuilts/gcc/linux-x86/arm/arm-eabi-$(2ND_TARGET_GCC_VERSION)/bin/arm-eabi-
 endif
 else # BOOTLOADER_GCC_VERSION defined
 ifeq ($(BOOTLOADER_GCC_VERSION),arm-linux-androideabi-4.9)
-CROSS_COMPILE := ../../../prebuilts/gcc/linux-x86/arm/$(BOOTLOADER_GCC_VERSION)/bin/arm-linux-androideabi-
+CROSS_COMPILE := $(CROOT_DIR)/prebuilts/gcc/linux-x86/arm/$(BOOTLOADER_GCC_VERSION)/bin/arm-linux-androideabi-
 else
-CROSS_COMPILE := ../../../prebuilts/gcc/linux-x86/arm/$(BOOTLOADER_GCC_VERSION)/bin/arm-eabi-
+CROSS_COMPILE := $(CROOT_DIR)/prebuilts/gcc/linux-x86/arm/$(BOOTLOADER_GCC_VERSION)/bin/arm-eabi-
 endif
 endif
 
@@ -34,7 +42,7 @@
 ifeq ($(EARLY_MOUNT_SUPPORT),true)
   ENABLE_BOOTDEVICE_MOUNT := ENABLE_BOOTDEVICE_MOUNT=1
 else
-  ENABLE_BOOTDEVICE_MOUNT := ENABLE_BOOTDEVICE_MOUNT=1
+  ENABLE_BOOTDEVICE_MOUNT := ENABLE_BOOTDEVICE_MOUNT=0
 endif
 
 ifeq ($(BOARD_HAVE_PM660),true)
@@ -63,6 +71,10 @@
   BUILD_VARIANT := USER_BUILD_VARIANT=true
 endif
 
+ifeq ($(TARGET_BOARD_PLATFORM),msm8x09)
+  BOOTLOADER_PLATFORM := msm8909
+endif
+
 ifeq ($(TARGET_BOARD_PLATFORM),msm8660)
   BOOTLOADER_PLATFORM := msm8660_surf
 endif
@@ -83,7 +95,7 @@
 # ELF binary for ABOOT
 TARGET_ABOOT_ELF := $(PRODUCT_OUT)/aboot.elf
 $(TARGET_ABOOT_ELF): ABOOT_CLEAN | $(ABOOT_OUT)
-	$(MAKE) -C bootable/bootloader/lk TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=../../../$(ABOOT_OUT) $(BOOTLOADER_PLATFORM) $(EMMC_BOOT) $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(ENABLE_DISPLAY) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE)
+	$(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(ABOOT_OUT) $(BOOTLOADER_PLATFORM) $(EMMC_BOOT) $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(ENABLE_DISPLAY) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE)
 
 # NAND variant output
 TARGET_NAND_BOOTLOADER := $(PRODUCT_OUT)/appsboot.mbn
@@ -108,11 +120,11 @@
 
 # Top level for NAND variant targets
 $(TARGET_NAND_BOOTLOADER): appsbootldr_clean | $(NAND_BOOTLOADER_OUT)
-	$(MAKE) -C bootable/bootloader/lk TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=../../../$(NAND_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) $(SIGNED_KERNEL) $(BOARD_NAME)
+	$(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(NAND_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) $(SIGNED_KERNEL) $(BOARD_NAME)
 
 # Top level for eMMC variant targets
 $(TARGET_EMMC_BOOTLOADER): emmc_appsbootldr_clean | $(EMMC_BOOTLOADER_OUT) $(INSTALLED_KEYSTOREIMAGE_TARGET)
-	$(MAKE) -C bootable/bootloader/lk TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=../../../$(EMMC_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) EMMC_BOOT=1 $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(ENABLE_DISPLAY) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE) $(ENABLE_BG_SUPPORT)
+	$(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(EMMC_BOOTLOADER_OUT) $(BOOTLOADER_PLATFORM) EMMC_BOOT=1 $(SIGNED_KERNEL) $(VERIFIED_BOOT) $(ENABLE_DISPLAY) $(ENABLE_BOOTDEVICE_MOUNT) $(DEVICE_STATUS) $(BUILD_VARIANT) $(BOARD_NAME) $(ENABLE_VB_ATTEST) $(OSVERSION_IN_BOOTIMAGE)
 
 # Keep build NAND & eMMC as default for targets still using TARGET_BOOTLOADER
 TARGET_BOOTLOADER := $(PRODUCT_OUT)/EMMCBOOT.MBN
@@ -133,4 +145,4 @@
 
 $(TARGET_NANDWRITE): nandwrite_clean | $(NANDWRITE_OUT)
 	@echo $(BOOTLOADER_PLATFORM)_nandwrite
-	$(MAKE) -C bootable/bootloader/lk TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=../../../$(NANDWRITE_OUT) $(BOOTLOADER_PLATFORM)_nandwrite BUILD_NANDWRITE=1
+	$(MAKE) -C $(LK_PATH) TOOLCHAIN_PREFIX=$(CROSS_COMPILE) BOOTLOADER_OUT=$(CROOT_DIR)/$(NANDWRITE_OUT) $(BOOTLOADER_PLATFORM)_nandwrite BUILD_NANDWRITE=1
diff --git a/dev/gcdb/display/include/panel_auo_390p_cmd.h b/dev/gcdb/display/include/panel_auo_390p_cmd.h
index 705e562..d886cb2 100644
--- a/dev/gcdb/display/include/panel_auo_390p_cmd.h
+++ b/dev/gcdb/display/include/panel_auo_390p_cmd.h
@@ -118,28 +118,23 @@
 
 
 static char auo_390p_cmd_on_cmd10[] = {
-	0x36, 0xc0, 0x015, 0x80,
-};
-
-
-static char auo_390p_cmd_on_cmd11[] = {
 	0x11, 0x00, 0x05, 0x80,
 };
 
 
-static char auo_390p_cmd_on_cmd12[] = {
+static char auo_390p_cmd_on_cmd11[] = {
 	0x29, 0x00, 0x05, 0x80,
 };
 
 
-static char auo_390p_cmd_on_cmd13[] = {
+static char auo_390p_cmd_on_cmd12[] = {
 	0x06, 0x00, 0x39, 0xC0,
 	0xf0, 0x55, 0xaa, 0x52,
 	0x08, 0x01, 0xff, 0xff,
 };
 
 
-static char auo_390p_cmd_on_cmd14[] = {
+static char auo_390p_cmd_on_cmd13[] = {
 	0x07, 0x00, 0x39, 0xC0,
 	0xff, 0x00, 0x55, 0xaa,
 	0x52, 0x08, 0x01, 0xff,
@@ -159,12 +154,11 @@
 	{ 0x4 , auo_390p_cmd_on_cmd9, 0x00},
 	{ 0x4 , auo_390p_cmd_on_cmd10, 0x00},
 	{ 0x4 , auo_390p_cmd_on_cmd11, 0x00},
-	{ 0x4 , auo_390p_cmd_on_cmd12, 0x00},
+	{ 0xc , auo_390p_cmd_on_cmd12, 0x00},
 	{ 0xc , auo_390p_cmd_on_cmd13, 0x00},
-	{ 0xc , auo_390p_cmd_on_cmd14, 0x00},
 };
 
-#define AUO_390P_CMD_ON_COMMAND 15
+#define AUO_390P_CMD_ON_COMMAND 14
 
 
 static char auo_390p_cmd_off_cmd0[] = {
diff --git a/platform/msm_shared/ab_partition_parser.c b/platform/msm_shared/ab_partition_parser.c
index c224e0f..10169fa 100644
--- a/platform/msm_shared/ab_partition_parser.c
+++ b/platform/msm_shared/ab_partition_parser.c
@@ -642,6 +642,19 @@
 		    GET_LWORD_FROM_BYTE(&gpt_hdr_ptr[PARTITION_COUNT_OFFSET]);
 	partition_entry_size =
 		    GET_LWORD_FROM_BYTE(&gpt_hdr_ptr[PENTRY_SIZE_OFFSET]);
+
+	/* Check for partition entry size */
+	if (partition_entry_size != PARTITION_ENTRY_SIZE) {
+		dprintf(CRITICAL,"Invalid parition entry size\n");
+		goto out;
+	}
+
+	/* Check for maximum partition size */
+	if ((max_partition_count) > (MIN_PARTITION_ARRAY_SIZE /(partition_entry_size))) {
+		dprintf(CRITICAL, "Invalid maximum partition count\n");
+		goto out;
+	}
+
 	crc_val  = crc32(~0L, gpt_entries_ptr, ((max_partition_count) *
 				(partition_entry_size))) ^ (~0L);
 	PUT_LONG(&gpt_hdr_ptr[PARTITION_CRC_OFFSET], crc_val);
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index e9e3515..d72d9b3 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -141,6 +141,7 @@
 	PMIC_IS_PMI8950   = 17,
 	PMIC_IS_PMI8994   = 10,
 	PMIC_IS_PMI8996   = 19,
+	PMIC_IS_PM660     = 27,
 } pm_model_type_bfly;
 
 struct smem_board_info_v3 {
diff --git a/project/msm8909.mk b/project/msm8909.mk
index 0d820e6..f7525f9 100644
--- a/project/msm8909.mk
+++ b/project/msm8909.mk
@@ -28,6 +28,7 @@
 ENABLE_PWM_SUPPORT := true
 ENABLE_BOOT_CONFIG_SUPPORT := 1
 
+DEFINES += USE_BOOTDEV_CMDLINE=1
 #DEFINES += WITH_DEBUG_DCC=1
 DEFINES += WITH_DEBUG_LOG_BUF=1
 DEFINES += WITH_DEBUG_UART=1
diff --git a/target/mdm9640/rules.mk b/target/mdm9640/rules.mk
index 84d1417..12b4c94 100644
--- a/target/mdm9640/rules.mk
+++ b/target/mdm9640/rules.mk
@@ -9,7 +9,7 @@
 BASE_ADDR                           := 0x80000000
 SCRATCH_ADDR                        := 0x80000000
 SCRATCH_REGION1                     := 0x81300000
-SCRATCH_REGION1_SIZE                := 0x06900000 # 105MB
+SCRATCH_REGION1_SIZE                := 0x06400000 # 100MB
 SCRATCH_REGION2                     := 0x88000000
 SCRATCH_REGION2_SIZE                := 0x08000000 # 128MB
 KERNEL_REGION                       := 0x80000000
diff --git a/target/msm8909/rules.mk b/target/msm8909/rules.mk
index f5393c5..55aa9d0 100644
--- a/target/msm8909/rules.mk
+++ b/target/msm8909/rules.mk
@@ -11,7 +11,10 @@
 BASE_ADDR        := 0x80000000
 SCRATCH_ADDR     := 0x90100000
 
+ifeq ($(ENABLE_DISPLAY),1)
+DEFINES += ENABLE_DISPLAY=1
 DEFINES += DISPLAY_SPLASH_SCREEN=1
+endif
 DEFINES += DISPLAY_TYPE_MIPI=1
 DEFINES += DISPLAY_TYPE_DSI6G=1
 DEFINES += NO_ALARM_DISPLAY=0
diff --git a/target/msm8952/rules.mk b/target/msm8952/rules.mk
index d50f8d9..d86ea01 100644
--- a/target/msm8952/rules.mk
+++ b/target/msm8952/rules.mk
@@ -18,7 +18,10 @@
 SCRATCH_SIZE     := 511
 SCRATCH_SIZE_512 := 234
 
+ifeq ($(ENABLE_DISPLAY),1)
+DEFINES += ENABLE_DISPLAY=1
 DEFINES += DISPLAY_SPLASH_SCREEN=1
+endif
 DEFINES += DISPLAY_TYPE_MIPI=1
 DEFINES += DISPLAY_TYPE_DSI6G=1