On 26.03.2019 11:31, Tomi Valkeinen wrote: > Currently we have tc_main_link_setup(), which configures and enabled the enables > 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.valkei...@ti.com> > --- > drivers/gpu/drm/bridge/tc358767.c | 27 ++++++++++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/tc358767.c > b/drivers/gpu/drm/bridge/tc358767.c > index f8039149a4e8..fe5fd7db0247 100644 > --- a/drivers/gpu/drm/bridge/tc358767.c > +++ b/drivers/gpu/drm/bridge/tc358767.c > @@ -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, > @@ -1005,6 +1007,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);
The same register is set in stream_disable, is it correct? Looks suspicious, disabling stream and link should be different things. Regards Andrzej > + > + return 0; > +err: > + return ret; > +} > + > static int tc_stream_enable(struct tc_data *tc) > { > int ret; > @@ -1083,15 +1099,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; > } > > @@ -1108,6 +1125,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) _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel