Hi Sam, Thank you for the patch. On Wed, Oct 20, 2021 at 08:18:55PM +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: > - Added a few more people to cc: (Jitao, Enric, Philip) to increase > possibility to get test feedback > > Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > Reviewed-by: Maxime Ripard <maxime@xxxxxxxxxx> > Cc: Jitao Shi <jitao.shi@xxxxxxxxxxxx> > Cc: Enric Balletbo i Serra <enric.balletbo@xxxxxxxxxxxxx> > Cc: Philip Chen <philipchen@xxxxxxxxxxxx> > Cc: Andrzej Hajda <a.hajda@xxxxxxxxxxx> > Cc: Neil Armstrong <narmstrong@xxxxxxxxxxxx> > Cc: Robert Foss <robert.foss@xxxxxxxxxx> > Cc: Laurent Pinchart <Laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Jonas Karlman <jonas@xxxxxxxxx> > Cc: Jernej Skrabec <jernej.skrabec@xxxxxxxxx> > --- > drivers/gpu/drm/bridge/parade-ps8640.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c > index 3aaa90913bf8..0b620afe99c0 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -376,7 +376,8 @@ static void ps8640_bridge_poweroff(struct ps8640 *ps_bridge) > ps_bridge->powered = false; > } > > -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); > int ret; > @@ -388,7 +389,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge) > ps8640_bridge_poweroff(ps_bridge); > } > > -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); > > @@ -489,7 +491,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); > @@ -499,7 +501,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; > } > @@ -508,8 +510,8 @@ 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, Don't you also need to implement .atomic_duplicate_state(), .atomic_destroy_state() and .atomic_reset() to use the atomic API ? > }; > > static int ps8640_probe(struct i2c_client *client) -- Regards, Laurent Pinchart