Merge "platform: project: msm8996: Add support for 6gb ddr"
diff --git a/dev/qpnp_haptic/qpnp_haptic.c b/dev/qpnp_haptic/qpnp_haptic.c
index 51de2e5..a4e3820 100644
--- a/dev/qpnp_haptic/qpnp_haptic.c
+++ b/dev/qpnp_haptic/qpnp_haptic.c
@@ -87,6 +87,9 @@
{
struct qpnp_hap vib_config = {0};
+ if(!target_is_pmi_enabled())
+ return;
+
get_vibration_type(&vib_config);
/* Configure the ACTUATOR TYPE register as ERM*/
pmic_spmi_reg_mask_write(QPNP_HAP_ACT_TYPE_REG,
@@ -149,6 +152,9 @@
/* Turn off vibrator */
void pm_vib_turn_off(void)
{
+ if(!target_is_pmi_enabled())
+ return;
+
/* Disable control register */
pmic_spmi_reg_mask_write(QPNP_HAP_EN_CTL_REG,
QPNP_HAP_PLAY_MASK, QPNP_HAP_PLAY_DIS);
diff --git a/dev/qpnp_wled/qpnp_wled.c b/dev/qpnp_wled/qpnp_wled.c
index 9282a7b..4267372 100644
--- a/dev/qpnp_wled/qpnp_wled.c
+++ b/dev/qpnp_wled/qpnp_wled.c
@@ -33,6 +33,7 @@
#include <qpnp_wled.h>
#include <pm8x41_wled.h>
#include <qtimer.h>
+#include <target.h>
static int qpnp_wled_avdd_target_voltages[NUM_SUPPORTED_AVDD_VOLTAGES] = {
7900, 7600, 7300, 6400, 6100, 5800,
@@ -598,6 +599,9 @@
int rc;
struct qpnp_wled *wled;
+ if(!target_is_pmi_enabled())
+ return ERR_NOT_FOUND;
+
wled = malloc(sizeof(struct qpnp_wled));
if (!wled)
return ERR_NO_MEMORY;
diff --git a/include/target.h b/include/target.h
index 62369ed..a9a1eea 100644
--- a/include/target.h
+++ b/include/target.h
@@ -95,6 +95,7 @@
int target_get_qmp_regsize();
uint32_t target_ddr_cfg_reg();
+bool target_is_pmi_enabled(void);
#if PON_VIB_SUPPORT
void get_vibration_type();
#endif
diff --git a/platform/msm8952/include/platform/iomap.h b/platform/msm8952/include/platform/iomap.h
index 5b9bab8..6f4b28f 100644
--- a/platform/msm8952/include/platform/iomap.h
+++ b/platform/msm8952/include/platform/iomap.h
@@ -164,6 +164,7 @@
* and size in MB
*/
#define RPMB_SND_RCV_BUF 0xA0000000
+#define RPMB_SND_RCV_BUF_512 0x9FE00000
#define RPMB_SND_RCV_BUF_SZ 0x1
/* QSEECOM: Secure app region notification */
diff --git a/platform/msm8952/platform.c b/platform/msm8952/platform.c
index ab85001..77b8f8a 100644
--- a/platform/msm8952/platform.c
+++ b/platform/msm8952/platform.c
@@ -66,11 +66,22 @@
{ MSM_IOMAP_BASE, MSM_IOMAP_BASE, MSM_IOMAP_SIZE, IOMAP_MEMORY},
{ APPS_SS_BASE, APPS_SS_BASE, APPS_SS_SIZE, IOMAP_MEMORY},
{ MSM_SHARED_IMEM_BASE, MSM_SHARED_IMEM_BASE, 1, COMMON_MEMORY},
- { SCRATCH_ADDR, SCRATCH_ADDR, 511, SCRATCH_MEMORY},
+ { SCRATCH_ADDR, SCRATCH_ADDR, SCRATCH_SIZE, SCRATCH_MEMORY},
{ MIPI_FB_ADDR, MIPI_FB_ADDR, 20, COMMON_MEMORY},
{ RPMB_SND_RCV_BUF, RPMB_SND_RCV_BUF, RPMB_SND_RCV_BUF_SZ, IOMAP_MEMORY},
};
+static mmu_section_t mmu_section_table_512[] = {
+/* Physical addr, Virtual addr, Size (in MB), Flags */
+ { MEMBASE, MEMBASE, (MEMSIZE / MB), LK_MEMORY},
+ { MSM_IOMAP_BASE, MSM_IOMAP_BASE, MSM_IOMAP_SIZE, IOMAP_MEMORY},
+ { APPS_SS_BASE, APPS_SS_BASE, APPS_SS_SIZE, IOMAP_MEMORY},
+ { MSM_SHARED_IMEM_BASE, MSM_SHARED_IMEM_BASE, 1, COMMON_MEMORY},
+ { SCRATCH_ADDR_512, SCRATCH_ADDR_512, SCRATCH_SIZE_512, SCRATCH_MEMORY},
+ { MIPI_FB_ADDR, MIPI_FB_ADDR, 20, COMMON_MEMORY},
+ { RPMB_SND_RCV_BUF_512, RPMB_SND_RCV_BUF_512, RPMB_SND_RCV_BUF_SZ, IOMAP_MEMORY},
+};
+
void platform_early_init(void)
{
board_init();
@@ -111,9 +122,10 @@
{
uint32_t i;
uint32_t sections;
- uint32_t table_size = ARRAY_SIZE(mmu_section_table);
+ uint32_t table_size;
uint32_t ddr_start = get_ddr_start();
uint32_t smem_addr = platform_get_smem_base_addr();
+ mmu_section_t *table_addr;
/*Mapping the ddr start address for loading the kernel about 90 MB*/
sections = 90;
@@ -128,19 +140,32 @@
/* Configure the MMU page entries for memory read from the
mmu_section_table */
+ if(smem_get_ddr_size() > 0x20000000)
+ {
+ table_addr = mmu_section_table;
+ table_size = ARRAY_SIZE(mmu_section_table);
+ }
+ else
+ {
+ table_addr = mmu_section_table_512;
+ table_size = ARRAY_SIZE(mmu_section_table_512);
+ }
+
for (i = 0; i < table_size; i++)
{
- sections = mmu_section_table[i].num_of_sections;
+ sections = table_addr->num_of_sections;
while (sections--)
{
- arm_mmu_map_section(mmu_section_table[i].paddress +
+ arm_mmu_map_section(table_addr->paddress +
sections * MB,
- mmu_section_table[i].vaddress +
+ table_addr->vaddress +
sections * MB,
- mmu_section_table[i].flags);
+ table_addr->flags);
}
+ table_addr++;
}
+
}
addr_t platform_get_virt_to_phys_mapping(addr_t virt_addr)
diff --git a/project/msm8952.mk b/project/msm8952.mk
index d7d74b9..b6f5dd6 100644
--- a/project/msm8952.mk
+++ b/project/msm8952.mk
@@ -23,9 +23,13 @@
ENABLE_SECAPP_LOADER := 1
ENABLE_RPMB_SUPPORT := 1
#enable fbcon display menu
+ifneq (,$(findstring DISPLAY_SPLASH_SCREEN,$(DEFINES)))
ENABLE_FBCON_DISPLAY_MSG := 1
-endif
-endif
+else
+ENABLE_FBCON_DISPLAY_MSG := 0
+endif #DISPLAY_SPLASH_SCREEN END
+endif #ENABLE_VBOOT_MOTA_SUPPORT END
+endif #VERIFIED_BOOT
diff --git a/target/init.c b/target/init.c
index a0e0e10..ff2869b 100644
--- a/target/init.c
+++ b/target/init.c
@@ -242,6 +242,11 @@
{
}
+__WEAK bool target_is_pmi_enabled(void)
+{
+ return 1;
+}
+
/* Default CFG delay value */
__WEAK uint32_t target_ddr_cfg_val()
{
@@ -358,8 +363,11 @@
case PMIC_IS_PMI8950:
case PMIC_IS_PMI8994:
case PMIC_IS_PMI8996:
- value = REG_READ(PMIC_SLAVE_ID|
- BAT_IF_BAT_PRES_STATUS);
+ if(target_is_pmi_enabled())
+ {
+ value = REG_READ(PMIC_SLAVE_ID|
+ BAT_IF_BAT_PRES_STATUS);
+ }
break;
default:
dprintf(CRITICAL, "ERROR: Couldn't get the pmic type\n");
@@ -391,10 +399,13 @@
case PMIC_IS_PMI8950:
case PMIC_IS_PMI8994:
case PMIC_IS_PMI8996:
- if (!pm_fg_usr_get_vbat(1, &vbat)) {
- vbat = vbat*1000; //uv
- } else {
- dprintf(CRITICAL, "ERROR: Get battery voltage failed!!!\n");
+ if(target_is_pmi_enabled())
+ {
+ if (!pm_fg_usr_get_vbat(1, &vbat)) {
+ vbat = vbat*1000; //uv
+ } else {
+ dprintf(CRITICAL, "ERROR: Get battery voltage failed!!!\n");
+ }
}
break;
default:
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index 77d685c..112a3c8 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -292,21 +292,25 @@
spmi_init(PMIC_ARB_CHANNEL_NUM, PMIC_ARB_OWNER_ID);
- if(platform_is_msm8937() || platform_is_msm8917())
+ if(target_is_pmi_enabled())
{
- uint8_t pmi_rev = 0;
- uint32_t pmi_type = 0;
-
- pmi_type = board_pmic_target(1) & 0xffff;
- if(pmi_type == PMIC_IS_PMI8950)
+ if(platform_is_msm8937() || platform_is_msm8917())
{
- /* read pmic spare register for rev */
- pmi_rev = pmi8950_get_pmi_subtype();
- if(pmi_rev)
- board_pmi_target_set(1,pmi_rev);
+ uint8_t pmi_rev = 0;
+ uint32_t pmi_type = 0;
+
+ pmi_type = board_pmic_target(1) & 0xffff;
+ if(pmi_type == PMIC_IS_PMI8950)
+ {
+ /* read pmic spare register for rev */
+ pmi_rev = pmi8950_get_pmi_subtype();
+ if(pmi_rev)
+ board_pmi_target_set(1,pmi_rev);
+ }
}
}
+
target_keystatus();
target_sdc_init();
@@ -317,12 +321,14 @@
}
#if LONG_PRESS_POWER_ON
- shutdown_detect();
+ if(target_is_pmi_enabled())
+ shutdown_detect();
#endif
#if PON_VIB_SUPPORT
/* turn on vibrator to indicate that phone is booting up to end user */
- vib_timed_turn_on(VIBRATE_TIME);
+ if(target_is_pmi_enabled())
+ vib_timed_turn_on(VIBRATE_TIME);
#endif
if (target_use_signed_kernel())
@@ -492,7 +498,11 @@
else
reset_type = PON_PSHOLD_HARD_RESET;
- pm8994_reset_configure(reset_type);
+ if(target_is_pmi_enabled())
+ pm8994_reset_configure(reset_type);
+ else
+ pm8x41_reset_configure(reset_type);
+
ret = scm_halt_pmic_arbiter();
if (ret)
@@ -527,8 +537,12 @@
{
uint8_t pon_reason = pm8x41_get_pon_reason();
uint8_t is_cold_boot = pm8x41_get_is_cold_boot();
- bool usb_present_sts = !(USBIN_UV_RT_STS &
- pm8x41_reg_read(SMBCHG_USB_RT_STS));
+ bool usb_present_sts = 1; /* don't care by default */
+
+ if(target_is_pmi_enabled())
+ usb_present_sts = (!(USBIN_UV_RT_STS &
+ pm8x41_reg_read(SMBCHG_USB_RT_STS)));
+
dprintf(INFO, "%s : pon_reason is:0x%x cold_boot:%d usb_sts:%d\n", __func__,
pon_reason, is_cold_boot, usb_present_sts);
/* In case of fastboot reboot,adb reboot or if we see the power key
@@ -548,7 +562,8 @@
void target_uninit(void)
{
#if PON_VIB_SUPPORT
- turn_off_vib_early();
+ if(target_is_pmi_enabled())
+ turn_off_vib_early();
#endif
mmc_put_card_to_sleep(dev);
sdhci_mode_disable(&dev->host);
@@ -741,6 +756,15 @@
crypto_init_params(&ce_params);
}
+bool target_is_pmi_enabled(void)
+{
+ if(platform_is_msm8917() &&
+ (board_hardware_subtype() == HW_PLATFORM_SUBTYPE_SNAP_NOPMI))
+ return 0;
+ else
+ return 1;
+}
+
uint32_t target_get_pmic()
{
return PMIC_IS_PMI8950;
diff --git a/target/msm8952/meminfo.c b/target/msm8952/meminfo.c
index bb23004..7d32c85 100644
--- a/target/msm8952/meminfo.c
+++ b/target/msm8952/meminfo.c
@@ -76,10 +76,16 @@
void *target_get_scratch_address(void)
{
- return ((void *)SCRATCH_ADDR);
+ if(smem_get_ddr_size() > 0x20000000)
+ return ((void *)SCRATCH_ADDR);
+ else
+ return ((void *)SCRATCH_ADDR_512);
}
unsigned target_get_max_flash_size(void)
{
- return (511 * 1024 * 1024);
+ if(smem_get_ddr_size() > 0x20000000)
+ return (SCRATCH_SIZE * 1024 * 1024);
+ else
+ return (SCRATCH_SIZE_512 * 1024 * 1024);
}
diff --git a/target/msm8952/rules.mk b/target/msm8952/rules.mk
index e6ecd1b..d50f8d9 100644
--- a/target/msm8952/rules.mk
+++ b/target/msm8952/rules.mk
@@ -13,6 +13,10 @@
BASE_ADDR := 0x80000000
SCRATCH_ADDR := 0xA0100000
+SCRATCH_ADDR_512 := 0x91400000
+
+SCRATCH_SIZE := 511
+SCRATCH_SIZE_512 := 234
DEFINES += DISPLAY_SPLASH_SCREEN=1
DEFINES += DISPLAY_TYPE_MIPI=1
@@ -36,7 +40,11 @@
MEMSIZE=$(MEMSIZE) \
MEMBASE=$(MEMBASE) \
BASE_ADDR=$(BASE_ADDR) \
- SCRATCH_ADDR=$(SCRATCH_ADDR)
+ SCRATCH_ADDR=$(SCRATCH_ADDR) \
+ SCRATCH_ADDR_512=$(SCRATCH_ADDR_512) \
+ SCRATCH_SIZE=$(SCRATCH_SIZE) \
+ SCRATCH_SIZE_512=$(SCRATCH_SIZE_512)
+
OBJS += \
diff --git a/target/msm8996/init.c b/target/msm8996/init.c
index dc3186d..f9e63ee 100644
--- a/target/msm8996/init.c
+++ b/target/msm8996/init.c
@@ -370,7 +370,8 @@
case HW_PLATFORM_MTP:
case HW_PLATFORM_FLUID:
case HW_PLATFORM_QRD:
- pm_appsbl_chg_check_weak_battery_status(1);
+ if(target_is_pmi_enabled())
+ pm_appsbl_chg_check_weak_battery_status(1);
break;
default:
/* Charging not supported */