[PATCHv2 08/22] drm/bridge: tc358767: split stream enable/disable
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sat Apr 20 21:29:13 UTC 2019
Hi Tomi,
Thank you for the patch.
On Tue, Mar 26, 2019 at 12:31:32PM +0200, Tomi Valkeinen wrote:
> It is nicer to have enable/disable functions instead of set(bool enable)
> style function.
When the two functions have nothing in common, yes.
> Split tc_main_link_stream into tc_stream_enable and tc_stream_disable.
Should you keep the tc_main_link_ prefix ? I suppose it is implied in a
way, as the stream is carried over the main link.
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
> ---
> drivers/gpu/drm/bridge/tc358767.c | 81 +++++++++++++++++--------------
> 1 file changed, 45 insertions(+), 36 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 86b272422281..bfc673bd5986 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1013,47 +1013,56 @@ static int tc_main_link_setup(struct tc_data *tc)
> 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;
> u32 value;
>
> - dev_dbg(tc->dev, "stream: %d\n", state);
> + dev_dbg(tc->dev, "stream enable\n");
Maybe "enable video stream\n" (and similarly for the tc_stream_disable()
function) ?
>
> - if (state) {
> - ret = tc_set_video_mode(tc, tc->mode);
> - if (ret)
> - goto err;
> + ret = tc_set_video_mode(tc, tc->mode);
> + if (ret)
> + goto err;
Let's return ret directly and remove the err label.
With these issues addressed,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>
> - /* Set M/N */
> - ret = tc_stream_clock_calc(tc);
> - if (ret)
> - goto err;
> + /* Set M/N */
> + ret = tc_stream_clock_calc(tc);
> + if (ret)
> + goto err;
>
> - value = VID_MN_GEN | DP_EN;
> - if (tc->link.base.capabilities & DP_LINK_CAP_ENHANCED_FRAMING)
> - value |= EF_EN;
> - tc_write(DP0CTL, value);
> - /*
> - * VID_EN assertion should be delayed by at least N * LSCLK
> - * cycles from the time VID_MN_GEN is enabled in order to
> - * generate stable values for VID_M. LSCLK is 270 MHz or
> - * 162 MHz, VID_N is set to 32768 in tc_stream_clock_calc(),
> - * so a delay of at least 203 us should suffice.
> - */
> - usleep_range(500, 1000);
> - value |= VID_EN;
> - tc_write(DP0CTL, value);
> - /* Set input interface */
> - value = DP0_AUDSRC_NO_INPUT;
> - if (tc_test_pattern)
> - value |= DP0_VIDSRC_COLOR_BAR;
> - else
> - value |= DP0_VIDSRC_DPI_RX;
> - tc_write(SYSCTRL, value);
> - } else {
> - tc_write(DP0CTL, 0);
> - }
> + value = VID_MN_GEN | DP_EN;
> + if (tc->link.base.capabilities & DP_LINK_CAP_ENHANCED_FRAMING)
> + value |= EF_EN;
> + tc_write(DP0CTL, value);
> + /*
> + * VID_EN assertion should be delayed by at least N * LSCLK
> + * cycles from the time VID_MN_GEN is enabled in order to
> + * generate stable values for VID_M. LSCLK is 270 MHz or
> + * 162 MHz, VID_N is set to 32768 in tc_stream_clock_calc(),
> + * so a delay of at least 203 us should suffice.
> + */
> + usleep_range(500, 1000);
> + value |= VID_EN;
> + tc_write(DP0CTL, value);
> + /* Set input interface */
> + value = DP0_AUDSRC_NO_INPUT;
> + if (tc_test_pattern)
> + value |= DP0_VIDSRC_COLOR_BAR;
> + else
> + value |= DP0_VIDSRC_DPI_RX;
> + tc_write(SYSCTRL, value);
> +
> + return 0;
> +err:
> + return ret;
> +}
> +
> +static int tc_stream_disable(struct tc_data *tc)
> +{
> + int ret;
> +
> + dev_dbg(tc->dev, "stream disable\n");
> +
> + tc_write(DP0CTL, 0);
>
> return 0;
> err:
> @@ -1078,7 +1087,7 @@ static void tc_bridge_enable(struct drm_bridge *bridge)
> return;
> }
>
> - ret = tc_main_link_stream(tc, 1);
> + ret = tc_stream_enable(tc);
> if (ret < 0) {
> dev_err(tc->dev, "main link stream start error: %d\n", ret);
> return;
> @@ -1094,7 +1103,7 @@ static void tc_bridge_disable(struct drm_bridge *bridge)
>
> drm_panel_disable(tc->panel);
>
> - ret = tc_main_link_stream(tc, 0);
> + ret = tc_stream_disable(tc);
> if (ret < 0)
> dev_err(tc->dev, "main link stream stop error: %d\n", ret);
> }
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list