target: msm8952: Add swire control support for AMOLED panels
LAB/IBB voltages for AMOLED panels can be controlled by SWIRE signal
from the panel instead of controlling explicitly in SW. This change
adds support for SWIRE control.
Change-Id: I01f43af194c02014259d43a3e736b94213afe7bf
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 7d3c0d6..fa9faa1 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-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
@@ -434,39 +434,53 @@
struct qpnp_wled_config_data config = {0};
struct labibb_desc *labibb;
int display_type = 0;
+ bool swire_control = 0;
+ bool wled_avdd_control = 0;
labibb = pinfo->labibb;
if (labibb)
display_type = labibb->amoled_panel;
+ if (display_type) {
+ swire_control = labibb->swire_control;
+ wled_avdd_control = true;
+ } else {
+ swire_control = false;
+ wled_avdd_control = false;
+ }
+
config.display_type = display_type;
config.lab_init_volt = 4600000; /* fixed, see pmi register */
config.ibb_init_volt = 1400000; /* fixed, see pmi register */
+ config.lab_ibb_swire_control = swire_control;
+ config.wled_avdd_control = wled_avdd_control;
- if (labibb && labibb->force_config) {
- config.lab_min_volt = labibb->lab_min_volt;
- config.lab_max_volt = labibb->lab_max_volt;
- config.ibb_min_volt = labibb->ibb_min_volt;
- config.ibb_max_volt = labibb->ibb_max_volt;
- config.pwr_up_delay = labibb->pwr_up_delay;
- config.pwr_down_delay = labibb->pwr_down_delay;
- config.ibb_discharge_en = labibb->ibb_discharge_en;
- } else {
- /* default */
- config.pwr_up_delay = 3;
- config.pwr_down_delay = 3;
- config.ibb_discharge_en = 1;
- if (display_type) { /* amoled */
- config.lab_min_volt = 4600000;
- config.lab_max_volt = 4600000;
- config.ibb_min_volt = 4000000;
- config.ibb_max_volt = 4000000;
- } else { /* lcd */
- config.lab_min_volt = 5500000;
- config.lab_max_volt = 5500000;
- config.ibb_min_volt = 5500000;
- config.ibb_max_volt = 5500000;
+ if(!swire_control) {
+ if (labibb && labibb->force_config) {
+ config.lab_min_volt = labibb->lab_min_volt;
+ config.lab_max_volt = labibb->lab_max_volt;
+ config.ibb_min_volt = labibb->ibb_min_volt;
+ config.ibb_max_volt = labibb->ibb_max_volt;
+ config.pwr_up_delay = labibb->pwr_up_delay;
+ config.pwr_down_delay = labibb->pwr_down_delay;
+ config.ibb_discharge_en = labibb->ibb_discharge_en;
+ } else {
+ /* default */
+ config.pwr_up_delay = 3;
+ config.pwr_down_delay = 3;
+ config.ibb_discharge_en = 1;
+ if (display_type) { /* amoled */
+ config.lab_min_volt = 4600000;
+ config.lab_max_volt = 4600000;
+ config.ibb_min_volt = 4000000;
+ config.ibb_max_volt = 4000000;
+ } else { /* lcd */
+ config.lab_min_volt = 5500000;
+ config.lab_max_volt = 5500000;
+ config.ibb_min_volt = 5500000;
+ config.ibb_max_volt = 5500000;
+ }
}
}