target: msm8916: support splash screen for SKUK
Enable the nt35596 1080p video panel on MSM8939 SKUK devices.
Change-Id: Ib77e8f9a455fe500ab81ac809c28494bdae6f681
diff --git a/target/msm8916/target_display.c b/target/msm8916/target_display.c
index 43169f7..e9df1e0 100755
--- a/target/msm8916/target_display.c
+++ b/target/msm8916/target_display.c
@@ -206,6 +206,84 @@
return 0;
}
+static int target_panel_reset_skuh(uint8_t enable)
+{
+ int ret = NO_ERROR;
+ if (enable) {
+ /* for tps65132 ENP pin */
+ gpio_tlmm_config(enp_gpio.pin_id, 0,
+ enp_gpio.pin_direction, enp_gpio.pin_pull,
+ enp_gpio.pin_strength,
+ enp_gpio.pin_state);
+ gpio_set_dir(enp_gpio.pin_id, 2);
+
+ /* for tps65132 ENN pin*/
+ gpio_tlmm_config(enn_gpio.pin_id, 0,
+ enn_gpio.pin_direction, enn_gpio.pin_pull,
+ enn_gpio.pin_strength,
+ enn_gpio.pin_state);
+ gpio_set_dir(enn_gpio.pin_id, 2);
+
+ i2c_dev = qup_blsp_i2c_init(BLSP_ID_1, QUP_ID_1, 100000, 19200000);
+ if(!i2c_dev) {
+ dprintf(CRITICAL, "qup_blsp_i2c_init failed \n");
+ ASSERT(0);
+ }
+
+ ret = qrd_lcd_i2c_write(QRD_LCD_VPOS_ADDRESS, 0x0E); /* 5.4V */
+ if (ret) {
+ dprintf(CRITICAL, "VPOS Register: I2C Write failure\n");
+ }
+
+ ret = qrd_lcd_i2c_write(QRD_LCD_VNEG_ADDRESS, 0x0E); /* -5.4V */
+ if (ret) {
+ dprintf(CRITICAL, "VNEG Register: I2C write failure\n");
+ }
+
+ ret = qrd_lcd_i2c_write(QRD_LCD_DIS_ADDRESS, 0x0F);
+ if (ret) {
+ dprintf(CRITICAL, "Apps freq DIS Register: I2C write failure\n");
+ }
+
+ ret = qrd_lcd_i2c_write(QRD_LCD_CONTROL_ADDRESS, 0xF0);
+ if (ret) {
+ dprintf(CRITICAL, "Control Register: I2C write failure\n");
+ }
+ } else {
+ gpio_set_dir(enp_gpio.pin_id, 0); /* ENP */
+ gpio_set_dir(enn_gpio.pin_id, 0); /* ENN */
+ }
+ return 0;
+}
+
+static int target_panel_reset_skuk(uint8_t enable)
+{
+ if (enable) {
+ /* for tps65132 ENP pin*/
+ gpio_tlmm_config(enp_gpio_skuk.pin_id, 0,
+ enp_gpio_skuk.pin_direction, enp_gpio_skuk.pin_pull,
+ enp_gpio_skuk.pin_strength, enp_gpio_skuk.pin_state);
+ gpio_set_dir(enp_gpio_skuk.pin_id, 2);
+
+ /* for tps65132 ENN pin*/
+ gpio_tlmm_config(enn_gpio_skuk.pin_id, 0,
+ enn_gpio_skuk.pin_direction, enn_gpio_skuk.pin_pull,
+ enn_gpio_skuk.pin_strength, enn_gpio_skuk.pin_state);
+ gpio_set_dir(enn_gpio_skuk.pin_id, 2);
+
+ /* configure backlight gpio for SKUK */
+ gpio_tlmm_config(bkl_gpio_skuk.pin_id, 0,
+ bkl_gpio_skuk.pin_direction, bkl_gpio_skuk.pin_pull,
+ bkl_gpio_skuk.pin_strength, bkl_gpio_skuk.pin_state);
+ gpio_set_dir(bkl_gpio_skuk.pin_id, 2);
+ } else {
+ gpio_set_dir(bkl_gpio_skuk.pin_id, 0);
+ gpio_set_dir(enp_gpio_skuk.pin_id, 0); /* ENP */
+ gpio_set_dir(enn_gpio_skuk.pin_id, 0); /* ENN */
+ }
+ return 0;
+}
+
int target_panel_reset(uint8_t enable, struct panel_reset_sequence *resetseq,
struct msm_panel_info *pinfo)
{
@@ -223,47 +301,14 @@
gpio_set_dir(enable_gpio.pin_id, 2);
}
- if (hw_id == HW_PLATFORM_QRD &&
- hw_subtype == HW_PLATFORM_SUBTYPE_SKUH) {
- /* for tps65132 chip ENP */
- gpio_tlmm_config(enp_gpio.pin_id, 0,
- enp_gpio.pin_direction, enp_gpio.pin_pull,
- enp_gpio.pin_strength,
- enp_gpio.pin_state);
- gpio_set_dir(enp_gpio.pin_id, 2);
-
- /* for tps65132 chip ENN */
- gpio_tlmm_config(enn_gpio.pin_id, 0,
- enn_gpio.pin_direction, enn_gpio.pin_pull,
- enn_gpio.pin_strength,
- enn_gpio.pin_state);
- gpio_set_dir(enn_gpio.pin_id, 2);
-
- i2c_dev = qup_blsp_i2c_init(BLSP_ID_1, QUP_ID_1, 100000, 19200000);
- if(!i2c_dev) {
- dprintf(CRITICAL, "qup_blsp_i2c_init failed \n");
- ASSERT(0);
- }
-
- ret = qrd_lcd_i2c_write(QRD_LCD_VPOS_ADDRESS, 0x0E); /* 5.4V */
- if (ret) {
- dprintf(CRITICAL, "VPOS Register: I2C Write failure\n");
- }
-
- ret = qrd_lcd_i2c_write(QRD_LCD_VNEG_ADDRESS, 0x0E); /* -5.4V */
- if (ret) {
- dprintf(CRITICAL, "VNEG Register: I2C write failure\n");
- }
-
- ret = qrd_lcd_i2c_write(QRD_LCD_DIS_ADDRESS, 0x0F);
- if (ret) {
- dprintf(CRITICAL, "Apps freq DIS Register: I2C write failure\n");
- }
-
- ret = qrd_lcd_i2c_write(QRD_LCD_CONTROL_ADDRESS, 0xF0);
- if (ret) {
- dprintf(CRITICAL, "Control Register: I2C write failure\n");
- }
+ if (platform_is_msm8939()) {
+ if ((hw_id == HW_PLATFORM_QRD) &&
+ (hw_subtype == HW_PLATFORM_SUBTYPE_SKUK))
+ target_panel_reset_skuk(enable);
+ } else { /* msm8916 */
+ if ((hw_id == HW_PLATFORM_QRD) &&
+ (hw_subtype == HW_PLATFORM_SUBTYPE_SKUH))
+ target_panel_reset_skuh(enable);
}
if (hw_id == HW_PLATFORM_MTP || hw_id == HW_PLATFORM_SURF) {
@@ -293,10 +338,14 @@
if (pinfo->mipi.use_enable_gpio)
gpio_set_dir(enable_gpio.pin_id, 0);
- if(hw_id == HW_PLATFORM_QRD &&
- hw_subtype == HW_PLATFORM_SUBTYPE_SKUH) {
- gpio_set_dir(enp_gpio.pin_id, 0); /* ENP */
- gpio_set_dir(enn_gpio.pin_id, 0); /* ENN */
+ if (platform_is_msm8939()) {
+ if ((hw_id == HW_PLATFORM_QRD) &&
+ (hw_subtype == HW_PLATFORM_SUBTYPE_SKUK))
+ target_panel_reset_skuk(enable);
+ } else { /* msm8916 */
+ if ((hw_id == HW_PLATFORM_QRD) &&
+ (hw_subtype == HW_PLATFORM_SUBTYPE_SKUH))
+ target_panel_reset_skuh(enable);
}
}