drm/bridge: tc358767: split stream enable/disable
It is nicer to have enable/disable functions instead of set(bool enable) style function. Split tc_main_link_stream into tc_stream_enable and tc_stream_disable. 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-9-tomi.valkeinen@ti.com
This commit is contained in:
parent
5761a259aa
commit
80d5724506
|
@ -1014,47 +1014,56 @@ err:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tc_main_link_stream(struct tc_data *tc, int state)
|
static int tc_stream_enable(struct tc_data *tc)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
u32 value;
|
u32 value;
|
||||||
|
|
||||||
dev_dbg(tc->dev, "stream: %d\n", state);
|
dev_dbg(tc->dev, "enable video stream\n");
|
||||||
|
|
||||||
if (state) {
|
ret = tc_set_video_mode(tc, tc->mode);
|
||||||
ret = tc_set_video_mode(tc, tc->mode);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
goto err;
|
|
||||||
|
|
||||||
/* Set M/N */
|
/* Set M/N */
|
||||||
ret = tc_stream_clock_calc(tc);
|
ret = tc_stream_clock_calc(tc);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
return ret;
|
||||||
|
|
||||||
value = VID_MN_GEN | DP_EN;
|
value = VID_MN_GEN | DP_EN;
|
||||||
if (tc->link.base.capabilities & DP_LINK_CAP_ENHANCED_FRAMING)
|
if (tc->link.base.capabilities & DP_LINK_CAP_ENHANCED_FRAMING)
|
||||||
value |= EF_EN;
|
value |= EF_EN;
|
||||||
tc_write(DP0CTL, value);
|
tc_write(DP0CTL, value);
|
||||||
/*
|
/*
|
||||||
* VID_EN assertion should be delayed by at least N * LSCLK
|
* VID_EN assertion should be delayed by at least N * LSCLK
|
||||||
* cycles from the time VID_MN_GEN is enabled in order to
|
* cycles from the time VID_MN_GEN is enabled in order to
|
||||||
* generate stable values for VID_M. LSCLK is 270 MHz or
|
* generate stable values for VID_M. LSCLK is 270 MHz or
|
||||||
* 162 MHz, VID_N is set to 32768 in tc_stream_clock_calc(),
|
* 162 MHz, VID_N is set to 32768 in tc_stream_clock_calc(),
|
||||||
* so a delay of at least 203 us should suffice.
|
* so a delay of at least 203 us should suffice.
|
||||||
*/
|
*/
|
||||||
usleep_range(500, 1000);
|
usleep_range(500, 1000);
|
||||||
value |= VID_EN;
|
value |= VID_EN;
|
||||||
tc_write(DP0CTL, value);
|
tc_write(DP0CTL, value);
|
||||||
/* Set input interface */
|
/* Set input interface */
|
||||||
value = DP0_AUDSRC_NO_INPUT;
|
value = DP0_AUDSRC_NO_INPUT;
|
||||||
if (tc_test_pattern)
|
if (tc_test_pattern)
|
||||||
value |= DP0_VIDSRC_COLOR_BAR;
|
value |= DP0_VIDSRC_COLOR_BAR;
|
||||||
else
|
else
|
||||||
value |= DP0_VIDSRC_DPI_RX;
|
value |= DP0_VIDSRC_DPI_RX;
|
||||||
tc_write(SYSCTRL, value);
|
tc_write(SYSCTRL, value);
|
||||||
} else {
|
|
||||||
tc_write(DP0CTL, 0);
|
return 0;
|
||||||
}
|
err:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int tc_stream_disable(struct tc_data *tc)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
dev_dbg(tc->dev, "disable video stream\n");
|
||||||
|
|
||||||
|
tc_write(DP0CTL, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
err:
|
err:
|
||||||
|
@ -1079,7 +1088,7 @@ static void tc_bridge_enable(struct drm_bridge *bridge)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = tc_main_link_stream(tc, 1);
|
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);
|
||||||
return;
|
return;
|
||||||
|
@ -1095,7 +1104,7 @@ static void tc_bridge_disable(struct drm_bridge *bridge)
|
||||||
|
|
||||||
drm_panel_disable(tc->panel);
|
drm_panel_disable(tc->panel);
|
||||||
|
|
||||||
ret = tc_main_link_stream(tc, 0);
|
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue