diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-07-02 19:41:31 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-07-02 19:41:31 -0700 |
commit | 85df2ecfdeb215499653f3abad97ed9a2c7ae930 (patch) | |
tree | 153897111401f6967022cced6428a9238b30581e | |
parent | 981d47a1a61d9d461367b9792195770fa907013c (diff) | |
parent | b6dae8101df187c32ae6f2ded794a5a41cd46ccf (diff) | |
download | qcom-85df2ecfdeb215499653f3abad97ed9a2c7ae930.tar.gz |
Merge "msm: mdss: Add dt support to enable clk lane recovery"
-rw-r--r-- | Documentation/devicetree/bindings/fb/mdss-dsi-ctrl.txt | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8916-mdss.dtsi | 3 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8939-mdss.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/qcom/msm8994-mdss.dtsi | 4 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_dsi.c | 4 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_dsi.h | 1 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_dsi_host.c | 14 | ||||
-rw-r--r-- | drivers/video/msm/mdss/mdss_dsi_panel.c | 2 |
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; |