mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/msm/dsi: parse vsync source from device tree
Allow board's device tree to specify the vsync source (aka TE source). If the property is omitted, the display controller driver will use the default setting. Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> [DB: fixed clearing of return value if there is no TE property] Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org> Patchwork: https://patchwork.freedesktop.org/patch/598740/ Link: https://lore.kernel.org/r/20240613-dpu-handle-te-signal-v2-6-67a0116b5366@linaro.org
This commit is contained in:
parent
47cda61fdc
commit
958d8d99cc
4 changed files with 24 additions and 0 deletions
|
@ -37,6 +37,7 @@ struct msm_dsi {
|
|||
|
||||
struct mipi_dsi_host *host;
|
||||
struct msm_dsi_phy *phy;
|
||||
const char *te_source;
|
||||
|
||||
struct drm_bridge *next_bridge;
|
||||
|
||||
|
|
|
@ -1794,9 +1794,11 @@ static int dsi_populate_dsc_params(struct msm_dsi_host *msm_host, struct drm_dsc
|
|||
|
||||
static int dsi_host_parse_dt(struct msm_dsi_host *msm_host)
|
||||
{
|
||||
struct msm_dsi *msm_dsi = platform_get_drvdata(msm_host->pdev);
|
||||
struct device *dev = &msm_host->pdev->dev;
|
||||
struct device_node *np = dev->of_node;
|
||||
struct device_node *endpoint;
|
||||
const char *te_source;
|
||||
int ret = 0;
|
||||
|
||||
/*
|
||||
|
@ -1819,6 +1821,16 @@ static int dsi_host_parse_dt(struct msm_dsi_host *msm_host)
|
|||
goto err;
|
||||
}
|
||||
|
||||
ret = of_property_read_string(endpoint, "qcom,te-source", &te_source);
|
||||
if (ret && ret != -EINVAL) {
|
||||
DRM_DEV_ERROR(dev, "%s: invalid TE source configuration %d\n",
|
||||
__func__, ret);
|
||||
goto err;
|
||||
}
|
||||
if (!ret)
|
||||
msm_dsi->te_source = devm_kstrdup(dev, te_source, GFP_KERNEL);
|
||||
ret = 0;
|
||||
|
||||
if (of_property_read_bool(np, "syscon-sfpb")) {
|
||||
msm_host->sfpb = syscon_regmap_lookup_by_phandle(np,
|
||||
"syscon-sfpb");
|
||||
|
|
|
@ -603,3 +603,8 @@ bool msm_dsi_is_master_dsi(struct msm_dsi *msm_dsi)
|
|||
{
|
||||
return IS_MASTER_DSI_LINK(msm_dsi->id);
|
||||
}
|
||||
|
||||
const char *msm_dsi_get_te_source(struct msm_dsi *msm_dsi)
|
||||
{
|
||||
return msm_dsi->te_source;
|
||||
}
|
||||
|
|
|
@ -335,6 +335,7 @@ bool msm_dsi_is_bonded_dsi(struct msm_dsi *msm_dsi);
|
|||
bool msm_dsi_is_master_dsi(struct msm_dsi *msm_dsi);
|
||||
bool msm_dsi_wide_bus_enabled(struct msm_dsi *msm_dsi);
|
||||
struct drm_dsc_config *msm_dsi_get_dsc_config(struct msm_dsi *msm_dsi);
|
||||
const char *msm_dsi_get_te_source(struct msm_dsi *msm_dsi);
|
||||
#else
|
||||
static inline void __init msm_dsi_register(void)
|
||||
{
|
||||
|
@ -372,6 +373,11 @@ static inline struct drm_dsc_config *msm_dsi_get_dsc_config(struct msm_dsi *msm_
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline const char *msm_dsi_get_te_source(struct msm_dsi *msm_dsi)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DRM_MSM_DP
|
||||
|
|
Loading…
Add table
Reference in a new issue