summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-07-02 19:41:31 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-07-02 19:41:31 -0700
commit85df2ecfdeb215499653f3abad97ed9a2c7ae930 (patch)
tree153897111401f6967022cced6428a9238b30581e
parent981d47a1a61d9d461367b9792195770fa907013c (diff)
parentb6dae8101df187c32ae6f2ded794a5a41cd46ccf (diff)
downloadqcom-85df2ecfdeb215499653f3abad97ed9a2c7ae930.tar.gz
Merge "msm: mdss: Add dt support to enable clk lane recovery"
-rw-r--r--Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt2
-rw-r--r--arch/arm/boot/dts/qcom/msm8916-mdss.dtsi3
-rw-r--r--arch/arm/boot/dts/qcom/msm8939-mdss.dtsi4
-rw-r--r--arch/arm/boot/dts/qcom/msm8994-mdss.dtsi4
-rw-r--r--drivers/video/msm/mdss/mdss_dsi.c4
-rw-r--r--drivers/video/msm/mdss/mdss_dsi.h1
-rw-r--r--drivers/video/msm/mdss/mdss_dsi_host.c14
-rw-r--r--drivers/video/msm/mdss/mdss_dsi_panel.c2
8 files changed, 25 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt b/Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt
index d2c6f085c1d..cef31e39390 100644
--- a/Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt
+++ b/Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt
@@ -76,6 +76,7 @@ Optional properties:
- qcom,mmss-phyreset-ctrl-offset: Specifies the offset for dsi phy reset control register.
- qcom,dsi-irq-line: Boolean specifies if DSI has a different irq line than mdp.
- qcom,timing-db-mode: Boolean specifies dsi timing mode registers are supported or not.
+- qcom,dsi-clk-ln-recovery: Boolean which enables the clk lane recovery
Example:
mdss_dsi0: qcom,mdss_dsi@fd922800 {
@@ -115,6 +116,7 @@ Example:
qcom,dsi-panel-bias-vreg;
qcom,dsi-irq-line;
qcom,timing-db-mode;
+ qcom,dsi-clk-ln-recovery;
qcom,core-supply-entries {
#address-cells = <1>;
diff --git a/arch/arm/boot/dts/qcom/msm8916-mdss.dtsi b/arch/arm/boot/dts/qcom/msm8916-mdss.dtsi
index 5f22068bac0..431cf78382d 100644
--- a/arch/arm/boot/dts/qcom/msm8916-mdss.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8916-mdss.dtsi
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -141,6 +141,7 @@
qcom,mmss-ulp-clamp-ctrl-offset = <0x20>;
qcom,mmss-phyreset-ctrl-offset = <0x24>;
+ qcom,dsi-clk-ln-recovery;
qcom,timing-db-mode;
qcom,core-supply-entries {
diff --git a/arch/arm/boot/dts/qcom/msm8939-mdss.dtsi b/arch/arm/boot/dts/qcom/msm8939-mdss.dtsi
index 0d6bd7518d9..dcee34facb2 100644
--- a/arch/arm/boot/dts/qcom/msm8939-mdss.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8939-mdss.dtsi
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -157,6 +157,7 @@
qcom,mmss-ulp-clamp-ctrl-offset = <0x20>;
qcom,mmss-phyreset-ctrl-offset = <0x24>;
+ qcom,dsi-clk-ln-recovery;
qcom,timing-db-mode;
qcom,core-supply-entries {
@@ -242,6 +243,7 @@
qcom,mmss-ulp-clamp-ctrl-offset = <0x20>;
qcom,mmss-phyreset-ctrl-offset = <0x24>;
+ qcom,dsi-clk-ln-recovery;
qcom,timing-db-mode;
qcom,core-supply-entries {
diff --git a/arch/arm/boot/dts/qcom/msm8994-mdss.dtsi b/arch/arm/boot/dts/qcom/msm8994-mdss.dtsi
index 65ae9103f06..360f490eabb 100644
--- a/arch/arm/boot/dts/qcom/msm8994-mdss.dtsi
+++ b/arch/arm/boot/dts/qcom/msm8994-mdss.dtsi
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015 The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -218,6 +218,7 @@
qcom,mmss-ulp-clamp-ctrl-offset = <0x14>;
qcom,mmss-phyreset-ctrl-offset = <0x108>;
+ qcom,dsi-clk-ln-recovery;
qcom,core-supply-entries {
#address-cells = <1>;
@@ -331,6 +332,7 @@
qcom,mmss-ulp-clamp-ctrl-offset = <0x14>;
qcom,mmss-phyreset-ctrl-offset = <0x108>;
+ qcom,dsi-clk-ln-recovery;
qcom,core-supply-entries {
#address-cells = <1>;
diff --git a/drivers/video/msm/mdss/mdss_dsi.c b/drivers/video/msm/mdss/mdss_dsi.c
index e9d4e53097d..3250f49a058 100644
--- a/drivers/video/msm/mdss/mdss_dsi.c
+++ b/drivers/video/msm/mdss/mdss_dsi.c
@@ -1542,6 +1542,10 @@ static int mdss_dsi_ctrl_probe(struct platform_device *pdev)
goto error_pan_node;
}
+ ctrl_pdata->cmd_clk_ln_recovery_en =
+ of_property_read_bool(pdev->dev.of_node,
+ "qcom,dsi-clk-ln-recovery");
+
if (mdss_dsi_is_te_based_esd(ctrl_pdata)) {
rc = devm_request_irq(&pdev->dev,
gpio_to_irq(ctrl_pdata->disp_te_gpio),
diff --git a/drivers/video/msm/mdss/mdss_dsi.h b/drivers/video/msm/mdss/mdss_dsi.h
index b31b3b1ae41..de1b3c5201b 100644
--- a/drivers/video/msm/mdss/mdss_dsi.h
+++ b/drivers/video/msm/mdss/mdss_dsi.h
@@ -354,6 +354,7 @@ struct mdss_dsi_ctrl_pdata {
bool dsi_irq_line;
atomic_t te_irq_ready;
+ bool cmd_clk_ln_recovery_en;
bool cmd_sync_wait_broadcast;
bool cmd_sync_wait_trigger;
diff --git a/drivers/video/msm/mdss/mdss_dsi_host.c b/drivers/video/msm/mdss/mdss_dsi_host.c
index 1bd6e72f7c9..3442f69a29f 100644
--- a/drivers/video/msm/mdss/mdss_dsi_host.c
+++ b/drivers/video/msm/mdss/mdss_dsi_host.c
@@ -2027,13 +2027,14 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp)
* will followed.
*/
if (!roi || (roi->w != 0 || roi->h != 0)) {
- if (ctrl->hw_rev == MDSS_DSI_HW_REV_103_1 &&
+ if (ctrl->cmd_clk_ln_recovery_en &&
ctrl->panel_mode == DSI_CMD_MODE)
mdss_dsi_start_hs_clk_lane(ctrl);
}
} else { /* from dcs send */
- if (ctrl->hw_rev == MDSS_DSI_HW_REV_103_1 &&
- ctrl->panel_mode == DSI_CMD_MODE)
+ if (ctrl->cmd_clk_ln_recovery_en &&
+ ctrl->panel_mode == DSI_CMD_MODE &&
+ (req->flags & CMD_REQ_HS_MODE))
mdss_dsi_cmd_start_hs_clk_lane(ctrl);
}
@@ -2101,8 +2102,9 @@ need_lock:
mutex_unlock(&ctrl->cmd_mutex);
} else { /* from dcs send */
- if (ctrl->hw_rev == MDSS_DSI_HW_REV_103_1 &&
- ctrl->panel_mode == DSI_CMD_MODE)
+ if (ctrl->cmd_clk_ln_recovery_en &&
+ ctrl->panel_mode == DSI_CMD_MODE &&
+ (req && (req->flags & CMD_REQ_HS_MODE)))
mdss_dsi_cmd_stop_hs_clk_lane(ctrl);
}
@@ -2410,7 +2412,7 @@ irqreturn_t mdss_dsi_isr(int irq, void *ptr)
MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x99);
spin_lock(&ctrl->mdp_lock);
mdss_dsi_disable_irq_nosync(ctrl, DSI_MDP_TERM);
- if (ctrl->hw_rev == MDSS_DSI_HW_REV_103_1 &&
+ if (ctrl->cmd_clk_ln_recovery_en &&
ctrl->panel_mode == DSI_CMD_MODE) {
/* stop force clk lane hs */
mdss_dsi_cfg_lane_ctrl(ctrl, BIT(28), 0);
diff --git a/drivers/video/msm/mdss/mdss_dsi_panel.c b/drivers/video/msm/mdss/mdss_dsi_panel.c
index c8737ad94a0..fb83c75a331 100644
--- a/drivers/video/msm/mdss/mdss_dsi_panel.c
+++ b/drivers/video/msm/mdss/mdss_dsi_panel.c
@@ -166,6 +166,8 @@ static void mdss_dsi_panel_cmds_send(struct mdss_dsi_ctrl_pdata *ctrl,
/*Panel ON/Off commands should be sent in DSI Low Power Mode*/
if (pcmds->link_state == DSI_LP_MODE)
cmdreq.flags |= CMD_REQ_LP_MODE;
+ else if (pcmds->link_state == DSI_HS_MODE)
+ cmdreq.flags |= CMD_REQ_HS_MODE;
cmdreq.rlen = 0;
cmdreq.cb = NULL;