[PATCH v1 01/12] drm/bridge: ps8640: Use atomic variants of drm_bridge_funcs
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Sep 19 08:17:19 PDT 2022
Hi Sam,
Thank you for the patch, and sorry for the review delay. The series only
recently jumped to the top of my inbox.
On Sun, Jul 17, 2022 at 07:44:43PM +0200, Sam Ravnborg wrote:
> The atomic variants of enable/disable in drm_bridge_funcs are the
> preferred operations - introduce these.
>
> The ps8640 driver used the non-atomic variants of the drm_bridge_chain_pre_enable/
> drm_bridge_chain_post_disable - convert these to the atomic variants.
>
> v2:
> - Init state operations in drm_bridge_funcs (Laurent)
>
> Signed-off-by: Sam Ravnborg <sam at ravnborg.org>
> Reviewed-by: Maxime Ripard <mripard at kernel.org>
> Cc: Jitao Shi <jitao.shi at mediatek.com>
> Cc: Enric Balletbo i Serra <enric.balletbo at collabora.com>
> Cc: Philip Chen <philipchen at chromium.org>
> Cc: Andrzej Hajda <a.hajda at samsung.com>
> Cc: Neil Armstrong <narmstrong at baylibre.com>
> Cc: Robert Foss <robert.foss at linaro.org>
> Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
> Cc: Jonas Karlman <jonas at kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec at gmail.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> drivers/gpu/drm/bridge/parade-ps8640.c | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
> index 31e88cb39f8a..bb8076fb8625 100644
> --- a/drivers/gpu/drm/bridge/parade-ps8640.c
> +++ b/drivers/gpu/drm/bridge/parade-ps8640.c
> @@ -15,6 +15,7 @@
>
> #include <drm/display/drm_dp_aux_bus.h>
> #include <drm/display/drm_dp_helper.h>
> +#include <drm/drm_atomic_state_helper.h>
> #include <drm/drm_bridge.h>
> #include <drm/drm_edid.h>
> #include <drm/drm_mipi_dsi.h>
> @@ -409,7 +410,8 @@ static const struct dev_pm_ops ps8640_pm_ops = {
> pm_runtime_force_resume)
> };
>
> -static void ps8640_pre_enable(struct drm_bridge *bridge)
> +static void ps8640_atomic_pre_enable(struct drm_bridge *bridge,
> + struct drm_bridge_state *old_bridge_state)
> {
> struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
> struct regmap *map = ps_bridge->regmap[PAGE2_TOP_CNTL];
> @@ -443,7 +445,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
> ps_bridge->pre_enabled = true;
> }
>
> -static void ps8640_post_disable(struct drm_bridge *bridge)
> +static void ps8640_atomic_post_disable(struct drm_bridge *bridge,
> + struct drm_bridge_state *old_bridge_state)
> {
> struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
>
> @@ -521,7 +524,7 @@ static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
> * EDID, for this chip, we need to do a full poweron, otherwise it will
> * fail.
> */
> - drm_bridge_chain_pre_enable(bridge);
> + drm_atomic_bridge_chain_pre_enable(bridge, connector->state->state);
>
> edid = drm_get_edid(connector,
> ps_bridge->page[PAGE0_DP_CNTL]->adapter);
> @@ -531,7 +534,7 @@ static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
> * before, return the chip to its original power state.
> */
> if (poweroff)
> - drm_bridge_chain_post_disable(bridge);
> + drm_atomic_bridge_chain_post_disable(bridge, connector->state->state);
>
> return edid;
> }
> @@ -546,8 +549,11 @@ static const struct drm_bridge_funcs ps8640_bridge_funcs = {
> .attach = ps8640_bridge_attach,
> .detach = ps8640_bridge_detach,
> .get_edid = ps8640_bridge_get_edid,
> - .post_disable = ps8640_post_disable,
> - .pre_enable = ps8640_pre_enable,
> + .atomic_post_disable = ps8640_atomic_post_disable,
> + .atomic_pre_enable = ps8640_atomic_pre_enable,
> + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
> + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
> + .atomic_reset = drm_atomic_helper_bridge_reset,
> };
>
> static int ps8640_bridge_get_dsi_resources(struct device *dev, struct ps8640 *ps_bridge)
--
Regards,
Laurent Pinchart
More information about the Linux-mediatek
mailing list