mirror of https://gitee.com/openkylin/linux.git
drm/msm/dsi: Use pinctrl in DSI driver
Some targets use pinctrl framework to configure some pins. This change allows DSI driver to set default and sleep pinctrl status. Signed-off-by: Hai Li <hali@codeaurora.org> Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
678565c3cb
commit
ab8909b032
|
@ -38,6 +38,9 @@ Optional properties:
|
|||
driving a 2-DSI panel whose 2 links need receive command simultaneously.
|
||||
- interrupt-parent: phandle to the MDP block if the interrupt signal is routed
|
||||
through MDP block
|
||||
- pinctrl-names: the pin control state names; should contain "default"
|
||||
- pinctrl-0: the default pinctrl state (active)
|
||||
- pinctrl-n: the "sleep" pinctrl state
|
||||
|
||||
DSI PHY:
|
||||
Required properties:
|
||||
|
@ -94,6 +97,10 @@ Example:
|
|||
qcom,master-dsi;
|
||||
qcom,sync-dual-dsi;
|
||||
|
||||
pinctrl-names = "default", "sleep";
|
||||
pinctrl-0 = <&mdss_dsi_active>;
|
||||
pinctrl-1 = <&mdss_dsi_suspend>;
|
||||
|
||||
panel: panel@0 {
|
||||
compatible = "sharp,lq101r1sx01";
|
||||
reg = <0>;
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <video/mipi_display.h>
|
||||
|
@ -1919,6 +1920,13 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host)
|
|||
goto fail_disable_reg;
|
||||
}
|
||||
|
||||
ret = pinctrl_pm_select_default_state(&msm_host->pdev->dev);
|
||||
if (ret) {
|
||||
pr_err("%s: failed to set pinctrl default state, %d\n",
|
||||
__func__, ret);
|
||||
goto fail_disable_clk;
|
||||
}
|
||||
|
||||
dsi_timing_setup(msm_host);
|
||||
dsi_sw_reset(msm_host);
|
||||
dsi_ctrl_config(msm_host, true, clk_pre, clk_post);
|
||||
|
@ -1931,6 +1939,8 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host)
|
|||
|
||||
return 0;
|
||||
|
||||
fail_disable_clk:
|
||||
dsi_clk_ctrl(msm_host, 0);
|
||||
fail_disable_reg:
|
||||
dsi_host_regulator_disable(msm_host);
|
||||
unlock_ret:
|
||||
|
@ -1953,6 +1963,8 @@ int msm_dsi_host_power_off(struct mipi_dsi_host *host)
|
|||
if (msm_host->disp_en_gpio)
|
||||
gpiod_set_value(msm_host->disp_en_gpio, 0);
|
||||
|
||||
pinctrl_pm_select_sleep_state(&msm_host->pdev->dev);
|
||||
|
||||
msm_dsi_manager_phy_disable(msm_host->id);
|
||||
|
||||
dsi_clk_ctrl(msm_host, 0);
|
||||
|
|
Loading…
Reference in New Issue