mirror of https://gitee.com/openkylin/linux.git
drm/bridge: tc358767: add link disable function
Currently we have tc_main_link_setup(), which configures and enabled the link, but we have no counter-part for disabling the link. Add tc_main_link_disable, and rename tc_main_link_setup to tc_main_link_enable. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190528082747.3631-11-tomi.valkeinen@ti.com
This commit is contained in:
parent
bb24836869
commit
cb3263b2df
|
@ -822,7 +822,7 @@ static int tc_link_training(struct tc_data *tc, int pattern)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int tc_main_link_setup(struct tc_data *tc)
|
||||
static int tc_main_link_enable(struct tc_data *tc)
|
||||
{
|
||||
struct drm_dp_aux *aux = &tc->aux;
|
||||
struct device *dev = tc->dev;
|
||||
|
@ -837,6 +837,8 @@ static int tc_main_link_setup(struct tc_data *tc)
|
|||
if (!tc->mode)
|
||||
return -EINVAL;
|
||||
|
||||
dev_dbg(tc->dev, "link enable\n");
|
||||
|
||||
tc_write(DP0_SRCCTRL, tc_srcctrl(tc));
|
||||
/* SSCG and BW27 on DP1 must be set to the same as on DP0 */
|
||||
tc_write(DP1_SRCCTRL,
|
||||
|
@ -1006,6 +1008,20 @@ static int tc_main_link_setup(struct tc_data *tc)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int tc_main_link_disable(struct tc_data *tc)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dev_dbg(tc->dev, "link disable\n");
|
||||
|
||||
tc_write(DP0_SRCCTRL, 0);
|
||||
tc_write(DP0CTL, 0);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tc_stream_enable(struct tc_data *tc)
|
||||
{
|
||||
int ret;
|
||||
|
@ -1084,15 +1100,16 @@ static void tc_bridge_enable(struct drm_bridge *bridge)
|
|||
struct tc_data *tc = bridge_to_tc(bridge);
|
||||
int ret;
|
||||
|
||||
ret = tc_main_link_setup(tc);
|
||||
ret = tc_main_link_enable(tc);
|
||||
if (ret < 0) {
|
||||
dev_err(tc->dev, "main link setup error: %d\n", ret);
|
||||
dev_err(tc->dev, "main link enable error: %d\n", ret);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = tc_stream_enable(tc);
|
||||
if (ret < 0) {
|
||||
dev_err(tc->dev, "main link stream start error: %d\n", ret);
|
||||
tc_main_link_disable(tc);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1109,6 +1126,10 @@ static void tc_bridge_disable(struct drm_bridge *bridge)
|
|||
ret = tc_stream_disable(tc);
|
||||
if (ret < 0)
|
||||
dev_err(tc->dev, "main link stream stop error: %d\n", ret);
|
||||
|
||||
ret = tc_main_link_disable(tc);
|
||||
if (ret < 0)
|
||||
dev_err(tc->dev, "main link disable error: %d\n", ret);
|
||||
}
|
||||
|
||||
static void tc_bridge_post_disable(struct drm_bridge *bridge)
|
||||
|
|
Loading…
Reference in New Issue