Merge changes I751e4525,Ic8e66d82 into lk.lnx.1.0-dev.1.0
* changes:
platform : msm8952: add sec app region support for 8937
app: aboot: update commandline for keymaster 1.0
diff --git a/dev/gcdb/display/include/panel_r69006_1080p_cmd.h b/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
index 01c8d17..06f6a36 100755
--- a/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
+++ b/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
@@ -357,6 +357,14 @@
0x6E, 0x3F, 0x36, 0x00, 0x5A, 0x4F, 0x38, 0x41, 0x54, 0x03, 0x04, 0x00
};
+static const uint32_t r69006_1080p_14nm_cmd_timings[] = {
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1b, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+};
+
static struct panel_timing r69006_1080p_cmd_timing_info = {
0, 4, 0x20, 0x2c
};
diff --git a/dev/gcdb/display/include/panel_r69006_1080p_video.h b/dev/gcdb/display/include/panel_r69006_1080p_video.h
index 82be298..d2beedb 100755
--- a/dev/gcdb/display/include/panel_r69006_1080p_video.h
+++ b/dev/gcdb/display/include/panel_r69006_1080p_video.h
@@ -296,6 +296,14 @@
0x7d, 0x25, 0x1d, 0x00, 0x37, 0x33, 0x22, 0x27, 0x1e, 0x03, 0x04, 0x00
};
+static const uint32_t r69006_1080p_14nm_video_timings[] = {
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+ 0x24, 0x1b, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+};
+
static struct panel_timing r69006_1080p_video_timing_info = {
0, 4, 0x20, 0x2c
};
diff --git a/dev/vib/include/vibrator.h b/dev/vib/include/vibrator.h
index b6aee2f..364e91b 100644
--- a/dev/vib/include/vibrator.h
+++ b/dev/vib/include/vibrator.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2016, 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
@@ -48,4 +48,5 @@
void vib_turn_off(void);
void vib_timed_turn_on(const uint32_t);
void wait_vib_timeout(void);
+void turn_off_vib_early(void);
#endif /* __DEV_VIB_VIBRATOR_H */
diff --git a/dev/vib/vibrator.c b/dev/vib/vibrator.c
index 764300c..03b7a87 100644
--- a/dev/vib/vibrator.c
+++ b/dev/vib/vibrator.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2016, 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
@@ -63,8 +63,10 @@
static enum handler_return vib_timer_func(struct timer *v_timer, time_t t, void *arg)
{
timer_cancel(&vib_timer);
- vib_turn_off();
- vib_timeout=1;
+ if(!vib_timeout){
+ vib_turn_off();
+ vib_timeout = 1;
+ }
return INT_RESCHEDULE;
}
@@ -74,8 +76,10 @@
while((--vib_time)){
thread_sleep(CHECK_VIB_TIMER_FREQUENCY);
}
- vib_turn_off();
- vib_timeout = 1;
+ if(!vib_timeout){
+ vib_turn_off();
+ vib_timeout = 1;
+ }
return 0;
}
#endif
@@ -110,3 +114,12 @@
thread_sleep(CHECK_VIB_TIMER_FREQUENCY);
}
}
+
+void turn_off_vib_early(void)
+{
+ if(vib_timeout) {
+ return;
+ }
+ vib_turn_off();
+ vib_timeout = 1;
+}
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index 1d577d6..43e1b2e 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -518,6 +518,9 @@
void target_uninit(void)
{
+#if PON_VIB_SUPPORT
+ turn_off_vib_early();
+#endif
mmc_put_card_to_sleep(dev);
sdhci_mode_disable(&dev->host);
if (crypto_initialized())
diff --git a/target/msmtitanium/oem_panel.c b/target/msmtitanium/oem_panel.c
index 2f38db6..1d5ebb1 100644
--- a/target/msmtitanium/oem_panel.c
+++ b/target/msmtitanium/oem_panel.c
@@ -47,6 +47,9 @@
/*---------------------------------------------------------------------------*/
#include "include/panel_truly_1080p_video.h"
#include "include/panel_truly_1080p_cmd.h"
+#include "include/panel_r69006_1080p_video.h"
+#include "include/panel_r69006_1080p_cmd.h"
+
/*---------------------------------------------------------------------------*/
/* static panel selection variable */
@@ -54,6 +57,8 @@
enum {
TRULY_1080P_VIDEO_PANEL,
TRULY_1080P_CMD_PANEL,
+ R69006_1080P_VIDEO_PANEL,
+ R69006_1080P_CMD_PANEL,
UNKNOWN_PANEL
};
@@ -64,6 +69,8 @@
static struct panel_list supp_panels[] = {
{"truly_1080p_video", TRULY_1080P_VIDEO_PANEL},
{"truly_1080p_cmd", TRULY_1080P_CMD_PANEL},
+ {"r69006_1080p_video", R69006_1080P_VIDEO_PANEL},
+ {"r69006_1080p_cmd", R69006_1080P_CMD_PANEL},
};
static uint32_t panel_id;
@@ -79,6 +86,9 @@
if (panel_id == TRULY_1080P_CMD_PANEL ||
panel_id == TRULY_1080P_VIDEO_PANEL)
mdelay(TRULY_1080P_PANEL_ON_DELAY);
+ else if (panel_id == R69006_1080P_CMD_PANEL) {
+ mdelay(R69006_1080P_CMD_PANEL_ON_DELAY);
+ }
return NO_ERROR;
}
@@ -153,6 +163,62 @@
MAX_TIMING_CONFIG * sizeof(uint32_t));
pinfo->mipi.signature = TRULY_1080P_CMD_SIGNATURE;
break;
+ case R69006_1080P_VIDEO_PANEL:
+ panelstruct->paneldata = &r69006_1080p_video_panel_data;
+ panelstruct->panelres = &r69006_1080p_video_panel_res;
+ panelstruct->color = &r69006_1080p_video_color;
+ panelstruct->videopanel = &r69006_1080p_video_video_panel;
+ panelstruct->commandpanel = &r69006_1080p_video_command_panel;
+ panelstruct->state = &r69006_1080p_video_state;
+ panelstruct->laneconfig = &r69006_1080p_video_lane_config;
+ panelstruct->paneltiminginfo
+ = &r69006_1080p_video_timing_info;
+ panelstruct->panelresetseq
+ = &r69006_1080p_video_reset_seq;
+ panelstruct->backlightinfo = &r69006_1080p_video_backlight;
+ pinfo->labibb = &r69006_1080p_video_labibb;
+ pinfo->mipi.panel_on_cmds
+ = r69006_1080p_video_on_command;
+ pinfo->mipi.num_of_panel_on_cmds
+ = R69006_1080P_VIDEO_ON_COMMAND;
+ pinfo->mipi.panel_off_cmds
+ = r69006_1080p_video_off_command;
+ pinfo->mipi.num_of_panel_off_cmds
+ = R69006_1080P_VIDEO_OFF_COMMAND;
+ memcpy(phy_db->timing,
+ r69006_1080p_14nm_video_timings,
+ MAX_TIMING_CONFIG * sizeof(uint32_t));
+ pinfo->mipi.signature = R69006_1080P_VIDEO_SIGNATURE;
+ break;
+ case R69006_1080P_CMD_PANEL:
+ panelstruct->paneldata = &r69006_1080p_cmd_panel_data;
+ panelstruct->panelres = &r69006_1080p_cmd_panel_res;
+ panelstruct->color = &r69006_1080p_cmd_color;
+ panelstruct->videopanel = &r69006_1080p_cmd_video_panel;
+ panelstruct->commandpanel = &r69006_1080p_cmd_command_panel;
+ panelstruct->state = &r69006_1080p_cmd_state;
+ panelstruct->laneconfig = &r69006_1080p_cmd_lane_config;
+ panelstruct->paneltiminginfo
+ = &r69006_1080p_cmd_timing_info;
+ panelstruct->panelresetseq
+ = &r69006_1080p_cmd_reset_seq;
+ panelstruct->backlightinfo = &r69006_1080p_cmd_backlight;
+ pinfo->labibb = &r69006_1080p_cmd_labibb;
+ pinfo->mipi.panel_on_cmds
+ = r69006_1080p_cmd_on_command;
+ pinfo->mipi.num_of_panel_on_cmds
+ = R69006_1080P_CMD_ON_COMMAND;
+ pinfo->mipi.panel_off_cmds
+ = r69006_1080p_cmd_off_command;
+ pinfo->mipi.num_of_panel_off_cmds
+ = R69006_1080P_CMD_OFF_COMMAND;
+ memcpy(phy_db->timing,
+ r69006_1080p_14nm_cmd_timings,
+ MAX_TIMING_CONFIG * sizeof(uint32_t));
+ pinfo->mipi.signature = R69006_1080P_CMD_SIGNATURE;
+ pinfo->mipi.tx_eot_append = true;
+ pinfo->mipi.rx_eot_ignore = true;
+ break;
case UNKNOWN_PANEL:
default:
memset(panelstruct, 0, sizeof(struct panel_struct));
@@ -208,6 +274,9 @@
case HW_PLATFORM_RCM:
panel_id = TRULY_1080P_VIDEO_PANEL;
break;
+ case HW_PLATFORM_QRD:
+ panel_id = R69006_1080P_CMD_PANEL;
+ break;
default:
dprintf(CRITICAL, "Display not enabled for %d HW type\n",
hw_id);