[PATCHv2 09/22] drm/bridge: tc358767: move PXL PLL enable/disable to stream enable/disable
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sat Apr 20 21:33:31 UTC 2019
Hi Tomi,
Thank you for the patch.
On Tue, Mar 26, 2019 at 12:31:33PM +0200, Tomi Valkeinen wrote:
> We set up the PXL PLL inside tc_main_link_setup. This is unnecessary,
> and makes tc_main_link_setup depend on the video-mode, which should not
> be the case. As PXL PLL is used only for the video stream (and only when
> using the HW test pattern), let's move the PXL PLL setup into
> tc_stream_enable.
>
> Also, currently the PXL PLL is only disabled if the driver if removed.
> Let's disable the PXL PLL when the stream is disabled.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> drivers/gpu/drm/bridge/tc358767.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index bfc673bd5986..f8039149a4e8 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -877,14 +877,6 @@ static int tc_main_link_setup(struct tc_data *tc)
> tc_write(DP1_PLLCTRL, PLLUPDATE | PLLEN);
> tc_wait_pll_lock(tc);
>
> - /* PXL PLL setup */
> - if (tc_test_pattern) {
> - ret = tc_pxl_pll_en(tc, clk_get_rate(tc->refclk),
> - 1000 * tc->mode->clock);
> - if (ret)
> - goto err;
> - }
> -
> /* Reset/Enable Main Links */
> dp_phy_ctrl |= DP_PHY_RST | PHY_M1_RST | PHY_M0_RST;
> tc_write(DP_PHY_CTRL, dp_phy_ctrl);
> @@ -1020,6 +1012,14 @@ static int tc_stream_enable(struct tc_data *tc)
>
> dev_dbg(tc->dev, "stream enable\n");
>
> + /* PXL PLL setup */
> + if (tc_test_pattern) {
> + ret = tc_pxl_pll_en(tc, clk_get_rate(tc->refclk),
> + 1000 * tc->mode->clock);
> + if (ret)
> + goto err;
> + }
> +
> ret = tc_set_video_mode(tc, tc->mode);
> if (ret)
> goto err;
> @@ -1064,6 +1064,8 @@ static int tc_stream_disable(struct tc_data *tc)
>
> tc_write(DP0CTL, 0);
>
> + tc_pxl_pll_dis(tc);
> +
> return 0;
> err:
> return ret;
> @@ -1390,8 +1392,6 @@ static int tc_remove(struct i2c_client *client)
> drm_bridge_remove(&tc->bridge);
> drm_dp_aux_unregister(&tc->aux);
>
> - tc_pxl_pll_dis(tc);
> -
> return 0;
> }
>
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list