Commit cb3263b2 authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Andrzej Hajda

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: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190528082747.3631-11-tomi.valkeinen@ti.com
parent bb248368
...@@ -822,7 +822,7 @@ static int tc_link_training(struct tc_data *tc, int pattern) ...@@ -822,7 +822,7 @@ static int tc_link_training(struct tc_data *tc, int pattern)
return ret; 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 drm_dp_aux *aux = &tc->aux;
struct device *dev = tc->dev; struct device *dev = tc->dev;
...@@ -837,6 +837,8 @@ static int tc_main_link_setup(struct tc_data *tc) ...@@ -837,6 +837,8 @@ static int tc_main_link_setup(struct tc_data *tc)
if (!tc->mode) if (!tc->mode)
return -EINVAL; return -EINVAL;
dev_dbg(tc->dev, "link enable\n");
tc_write(DP0_SRCCTRL, tc_srcctrl(tc)); tc_write(DP0_SRCCTRL, tc_srcctrl(tc));
/* SSCG and BW27 on DP1 must be set to the same as on DP0 */ /* SSCG and BW27 on DP1 must be set to the same as on DP0 */
tc_write(DP1_SRCCTRL, tc_write(DP1_SRCCTRL,
...@@ -1006,6 +1008,20 @@ static int tc_main_link_setup(struct tc_data *tc) ...@@ -1006,6 +1008,20 @@ static int tc_main_link_setup(struct tc_data *tc)
return ret; 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) static int tc_stream_enable(struct tc_data *tc)
{ {
int ret; int ret;
...@@ -1084,15 +1100,16 @@ static void tc_bridge_enable(struct drm_bridge *bridge) ...@@ -1084,15 +1100,16 @@ static void tc_bridge_enable(struct drm_bridge *bridge)
struct tc_data *tc = bridge_to_tc(bridge); struct tc_data *tc = bridge_to_tc(bridge);
int ret; int ret;
ret = tc_main_link_setup(tc); ret = tc_main_link_enable(tc);
if (ret < 0) { 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; return;
} }
ret = tc_stream_enable(tc); ret = tc_stream_enable(tc);
if (ret < 0) { if (ret < 0) {
dev_err(tc->dev, "main link stream start error: %d\n", ret); dev_err(tc->dev, "main link stream start error: %d\n", ret);
tc_main_link_disable(tc);
return; return;
} }
...@@ -1109,6 +1126,10 @@ static void tc_bridge_disable(struct drm_bridge *bridge) ...@@ -1109,6 +1126,10 @@ static void tc_bridge_disable(struct drm_bridge *bridge)
ret = tc_stream_disable(tc); ret = tc_stream_disable(tc);
if (ret < 0) if (ret < 0)
dev_err(tc->dev, "main link stream stop error: %d\n", ret); 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) static void tc_bridge_post_disable(struct drm_bridge *bridge)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment