[PATCH 2/3] drm: rcar-du: lvds: Move LVDS enable code to separate code section

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Wed Feb 15 06:20:51 UTC 2023


On 14/02/2023 02:37, Laurent Pinchart wrote:
> To prepare for a rework of the LVDS disable code, which will need to be
> called from rcar_lvds_pclk_disable(), move the LVDS enable code,
> currently stored in the __rcar_lvds_atomic_enable() function, to a
> separate code section separate from bridge operations. It will be then
> extended with the LVDS disable code.
> 
> As part of this rework the __rcar_lvds_atomic_enable() function is
> renamed to rcar_lvds_enable() to more clearly indicate its purpose.
> 
> No functional change intended.

The desc is a bit confusing, as it talks about moving LVDS enable code, 
but the diff shows you moving the lvds pclk enable/disable code. Other 
than that:

Reviewed-by: Tomi Valkeinen <tomi.valkeinen+renesas at ideasonboard.com>

  Tomi

> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
> ---
>   drivers/gpu/drm/rcar-du/rcar_lvds.c | 97 +++++++++++++++--------------
>   1 file changed, 50 insertions(+), 47 deletions(-)
> 
> diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> index 61de18af62e6..70cdd5ec64d5 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c
> @@ -311,46 +311,7 @@ static void rcar_lvds_pll_setup_d3_e3(struct rcar_lvds *lvds, unsigned int freq)
>   }
>   
>   /* -----------------------------------------------------------------------------
> - * Clock - D3/E3 only
> - */
> -
> -int rcar_lvds_pclk_enable(struct drm_bridge *bridge, unsigned long freq)
> -{
> -	struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
> -	int ret;
> -
> -	if (WARN_ON(!(lvds->info->quirks & RCAR_LVDS_QUIRK_EXT_PLL)))
> -		return -ENODEV;
> -
> -	dev_dbg(lvds->dev, "enabling LVDS PLL, freq=%luHz\n", freq);
> -
> -	ret = pm_runtime_resume_and_get(lvds->dev);
> -	if (ret)
> -		return ret;
> -
> -	__rcar_lvds_pll_setup_d3_e3(lvds, freq, true);
> -
> -	return 0;
> -}
> -EXPORT_SYMBOL_GPL(rcar_lvds_pclk_enable);
> -
> -void rcar_lvds_pclk_disable(struct drm_bridge *bridge)
> -{
> -	struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
> -
> -	if (WARN_ON(!(lvds->info->quirks & RCAR_LVDS_QUIRK_EXT_PLL)))
> -		return;
> -
> -	dev_dbg(lvds->dev, "disabling LVDS PLL\n");
> -
> -	rcar_lvds_write(lvds, LVDPLLCR, 0);
> -
> -	pm_runtime_put_sync(lvds->dev);
> -}
> -EXPORT_SYMBOL_GPL(rcar_lvds_pclk_disable);
> -
> -/* -----------------------------------------------------------------------------
> - * Bridge
> + * Enable/disable
>    */
>   
>   static enum rcar_lvds_mode rcar_lvds_get_lvds_mode(struct rcar_lvds *lvds,
> @@ -394,10 +355,10 @@ static enum rcar_lvds_mode rcar_lvds_get_lvds_mode(struct rcar_lvds *lvds,
>   	return mode;
>   }
>   
> -static void __rcar_lvds_atomic_enable(struct drm_bridge *bridge,
> -				      struct drm_atomic_state *state,
> -				      struct drm_crtc *crtc,
> -				      struct drm_connector *connector)
> +static void rcar_lvds_enable(struct drm_bridge *bridge,
> +			     struct drm_atomic_state *state,
> +			     struct drm_crtc *crtc,
> +			     struct drm_connector *connector)
>   {
>   	struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
>   	u32 lvdhcr;
> @@ -410,8 +371,7 @@ static void __rcar_lvds_atomic_enable(struct drm_bridge *bridge,
>   
>   	/* Enable the companion LVDS encoder in dual-link mode. */
>   	if (lvds->link_type != RCAR_LVDS_SINGLE_LINK && lvds->companion)
> -		__rcar_lvds_atomic_enable(lvds->companion, state, crtc,
> -					  connector);
> +		rcar_lvds_enable(lvds->companion, state, crtc, connector);
>   
>   	/*
>   	 * Hardcode the channels and control signals routing for now.
> @@ -531,6 +491,49 @@ static void __rcar_lvds_atomic_enable(struct drm_bridge *bridge,
>   	rcar_lvds_write(lvds, LVDCR0, lvdcr0);
>   }
>   
> +/* -----------------------------------------------------------------------------
> + * Clock - D3/E3 only
> + */
> +
> +int rcar_lvds_pclk_enable(struct drm_bridge *bridge, unsigned long freq)
> +{
> +	struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
> +	int ret;
> +
> +	if (WARN_ON(!(lvds->info->quirks & RCAR_LVDS_QUIRK_EXT_PLL)))
> +		return -ENODEV;
> +
> +	dev_dbg(lvds->dev, "enabling LVDS PLL, freq=%luHz\n", freq);
> +
> +	ret = pm_runtime_resume_and_get(lvds->dev);
> +	if (ret)
> +		return ret;
> +
> +	__rcar_lvds_pll_setup_d3_e3(lvds, freq, true);
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_GPL(rcar_lvds_pclk_enable);
> +
> +void rcar_lvds_pclk_disable(struct drm_bridge *bridge)
> +{
> +	struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
> +
> +	if (WARN_ON(!(lvds->info->quirks & RCAR_LVDS_QUIRK_EXT_PLL)))
> +		return;
> +
> +	dev_dbg(lvds->dev, "disabling LVDS PLL\n");
> +
> +	rcar_lvds_write(lvds, LVDPLLCR, 0);
> +
> +	pm_runtime_put_sync(lvds->dev);
> +}
> +EXPORT_SYMBOL_GPL(rcar_lvds_pclk_disable);
> +
> +/* -----------------------------------------------------------------------------
> + * Bridge
> + */
> +
>   static void rcar_lvds_atomic_enable(struct drm_bridge *bridge,
>   				    struct drm_bridge_state *old_bridge_state)
>   {
> @@ -542,7 +545,7 @@ static void rcar_lvds_atomic_enable(struct drm_bridge *bridge,
>   							     bridge->encoder);
>   	crtc = drm_atomic_get_new_connector_state(state, connector)->crtc;
>   
> -	__rcar_lvds_atomic_enable(bridge, state, crtc, connector);
> +	rcar_lvds_enable(bridge, state, crtc, connector);
>   }
>   
>   static void rcar_lvds_atomic_disable(struct drm_bridge *bridge,



More information about the dri-devel mailing list