Merge "platform: msm_shared: Change UFS_IRQ to level triggered IRQ"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index c7522d6..b9d89f4 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -98,6 +98,7 @@
#define RECOVERY_MODE 0x77665502
#define FASTBOOT_MODE 0x77665500
+#define ALARM_BOOT 0x77665503
/* make 4096 as default size to ensure EFS,EXT4's erasing */
#define DEFAULT_ERASE_SIZE 4096
@@ -119,6 +120,7 @@
#endif
static const char *usb_sn_cmdline = " androidboot.serialno=";
static const char *androidboot_mode = " androidboot.mode=";
+static const char *alarmboot_cmdline = " androidboot.alarmboot=true";
static const char *loglevel = " quiet";
static const char *battchg_pause = " androidboot.mode=charger";
static const char *auth_kernel = " androidboot.authorized_kernel=true";
@@ -141,6 +143,7 @@
static char ffbm_mode_string[FFBM_MODE_BUF_SIZE];
static bool boot_into_ffbm;
static char target_boot_params[64];
+static bool boot_reason_alarm;
/* Assuming unauthorized kernel image by default */
static int auth_kernel_img = 0;
@@ -252,6 +255,8 @@
cmdline_len += strlen(ffbm_mode_string);
/* reduce kernel console messages to speed-up boot */
cmdline_len += strlen(loglevel);
+ } else if (boot_reason_alarm) {
+ cmdline_len += strlen(alarmboot_cmdline);
} else if (device.charger_screen_enabled &&
target_pause_for_battery_charge()) {
pause_at_bootup = 1;
@@ -383,6 +388,10 @@
src = loglevel;
if (have_cmdline) --dst;
while ((*dst++ = *src++));
+ } else if (boot_reason_alarm) {
+ src = alarmboot_cmdline;
+ if (have_cmdline) --dst;
+ while ((*dst++ = *src++));
} else if (pause_at_bootup) {
src = battchg_pause;
if (have_cmdline) --dst;
@@ -2669,6 +2678,8 @@
boot_into_recovery = 1;
} else if(reboot_mode == FASTBOOT_MODE) {
boot_into_fastboot = true;
+ } else if(reboot_mode == ALARM_BOOT) {
+ boot_reason_alarm = true;
}
normal_boot:
diff --git a/dev/gcdb/display/gcdb_display.c b/dev/gcdb/display/gcdb_display.c
index dd77668..5a060c4 100755
--- a/dev/gcdb/display/gcdb_display.c
+++ b/dev/gcdb/display/gcdb_display.c
@@ -219,15 +219,14 @@
dsi_id_len = strlen(dsi_id);
panel_node_len = strlen(panel_node);
- if (slave_panel_node)
- slave_panel_node_len = strlen(slave_panel_node);
+ if (!slave_panel_node)
+ slave_panel_node = NO_PANEL_CONFIG;
+ slave_panel_node_len = strlen(slave_panel_node);
arg_size = prefix_string_len + dsi_id_len + panel_node_len +
LK_OVERRIDE_PANEL_LEN + 1;
- /* For dual pipe or split display */
- if (panel_mode)
- arg_size += DSI_1_STRING_LEN + slave_panel_node_len;
+ arg_size += DSI_1_STRING_LEN + slave_panel_node_len;
if (buf_size < arg_size) {
dprintf(CRITICAL, "display command line buffer is small\n");
@@ -247,18 +246,13 @@
strlcpy(pbuf, panel_node, buf_size);
- /* Return string for single dsi */
- if (!panel_mode)
- goto end;
-
pbuf += panel_node_len;
buf_size -= panel_node_len;
strlcpy(pbuf, DSI_1_STRING, buf_size);
pbuf += DSI_1_STRING_LEN;
buf_size -= DSI_1_STRING_LEN;
- if (slave_panel_node)
- strlcpy(pbuf, slave_panel_node, buf_size);
+ strlcpy(pbuf, slave_panel_node, buf_size);
}
end:
return ret;
diff --git a/platform/msm8916/rules.mk b/platform/msm8916/rules.mk
index 1b737e7..b0a2070 100644
--- a/platform/msm8916/rules.mk
+++ b/platform/msm8916/rules.mk
@@ -13,8 +13,6 @@
DEFINES += WITH_CPU_EARLY_INIT=0 WITH_CPU_WARM_BOOT=0 \
MMC_SLOT=$(MMC_SLOT) SSD_ENABLE
-DEFINES += TZ_SAVE_KERNEL_HASH
-
INCLUDES += -I$(LOCAL_DIR)/include -I$(LK_TOP_DIR)/platform/msm_shared/include
DEVS += fbcon
diff --git a/platform/msm8994/acpuclock.c b/platform/msm8994/acpuclock.c
index ba316fa..46129d8 100644
--- a/platform/msm8994/acpuclock.c
+++ b/platform/msm8994/acpuclock.c
@@ -328,7 +328,7 @@
ASSERT(0);
}
- ret = clk_get_set_enable("mdss_mdp_clk_src", 240000000, 1);
+ ret = clk_get_set_enable("mdss_mdp_clk_src", 300000000, 1);
if(ret)
{
dprintf(CRITICAL, "failed to set mdp_clk_src ret = %d\n", ret);
@@ -371,7 +371,7 @@
{
int ret;
/* Configure MMSSNOC AXI clock */
- ret = clk_get_set_enable("mmss_mmssnoc_axi_clk", 100000000, 1);
+ ret = clk_get_set_enable("mmss_mmssnoc_axi_clk", 300000000, 1);
if(ret)
{
dprintf(CRITICAL, "failed to set mmssnoc_axi_clk ret = %d\n", ret);
@@ -379,7 +379,7 @@
}
/* Configure S0 AXI clock */
- ret = clk_get_set_enable("mmss_s0_axi_clk", 100000000, 1);
+ ret = clk_get_set_enable("mmss_s0_axi_clk", 300000000, 1);
if(ret)
{
dprintf(CRITICAL, "failed to set mmss_s0_axi_clk ret = %d\n", ret);
@@ -387,7 +387,7 @@
}
/* Configure AXI clock */
- ret = clk_get_set_enable("mdss_axi_clk", 100000000, 1);
+ ret = clk_get_set_enable("mdss_axi_clk", 300000000, 1);
if(ret)
{
dprintf(CRITICAL, "failed to set mdss_axi_clk ret = %d\n", ret);
diff --git a/platform/msm8994/msm8994-clock.c b/platform/msm8994/msm8994-clock.c
index a28291a..5ee2d5c 100644
--- a/platform/msm8994/msm8994-clock.c
+++ b/platform/msm8994/msm8994-clock.c
@@ -554,12 +554,14 @@
static struct clk_freq_tbl ftbl_mmss_axi_clk[] = {
F_MM(19200000, cxo, 1, 0, 0),
F_MM(100000000, gpll0, 6, 0, 0),
+ F_MM(300000000, gpll0, 2, 0, 0),
F_END
};
static struct clk_freq_tbl ftbl_mdp_clk[] = {
F_MM( 75000000, gpll0, 8, 0, 0),
F_MM( 240000000, gpll0, 2.5, 0, 0),
+ F_MM(300000000, gpll0, 2, 0, 0),
F_END
};
diff --git a/platform/msm_shared/include/utp.h b/platform/msm_shared/include/utp.h
index e7a6df9..ff55f22 100644
--- a/platform/msm_shared/include/utp.h
+++ b/platform/msm_shared/include/utp.h
@@ -47,6 +47,7 @@
#define UTP_MUTEX_ACQUIRE_TIMEOUT 0x100000
#define UTP_GENERIC_CMD_TIMEOUT 40000
+#define UTP_MAX_COMMAND_RETRY 5000000
struct utp_prdt_entry
{
diff --git a/platform/msm_shared/mdp5.c b/platform/msm_shared/mdp5.c
index 08ebafb..ff0709e 100755
--- a/platform/msm_shared/mdp5.c
+++ b/platform/msm_shared/mdp5.c
@@ -887,6 +887,11 @@
writel(0x1, MDP_REG_SPLIT_DISPLAY_EN);
}
+ if (pinfo->lcdc.dst_split) {
+ writel(BIT(16), MDP_REG_PPB0_CONFIG);
+ writel(BIT(5), MDP_REG_PPB0_CNTL);
+ }
+
mdss_mdp_intf_off = mdss_mdp_intf_offset();
mdp_clk_gating_ctrl();
@@ -918,8 +923,10 @@
if (pinfo->mipi.dual_dsi) {
writel(0x213F, MDP_INTF_2_BASE + MDP_PANEL_FORMAT + mdss_mdp_intf_off);
- reg = 0x21f00 | mdss_mdp_ctl_out_sel(pinfo, 0);
- writel(reg, MDP_CTL_1_BASE + CTL_TOP);
+ if (!pinfo->lcdc.dst_split) {
+ reg = 0x21f00 | mdss_mdp_ctl_out_sel(pinfo, 0);
+ writel(reg, MDP_CTL_1_BASE + CTL_TOP);
+ }
}
return ret;
diff --git a/platform/msm_shared/utp.c b/platform/msm_shared/utp.c
index 0c0e14b..317cd69 100644
--- a/platform/msm_shared/utp.c
+++ b/platform/msm_shared/utp.c
@@ -220,7 +220,7 @@
{
int ret;
struct ufs_req_irq_type irq;
- uint32_t val, base;
+ uint32_t val, base, retry = 0;
base = dev->base;
val = readl(UFS_IS(base));
irq.irq_handled = 0;
@@ -228,6 +228,13 @@
while(((val & UFS_IS_UTRCS) == 0) && ((val & UFS_IS_UTMRCS) == 0))
{
val = readl(UFS_IS(base));
+ retry++;
+ udelay(1);
+ if(retry == UTP_MAX_COMMAND_RETRY)
+ {
+ dprintf(CRITICAL, "UTP command never completed.\n");
+ return 1;
+ }
#ifdef DEBUG_UFS
dprintf(INFO, "Waiting for UTRCS/URMRCS Completion...\n");
#endif