drm/bridge: ps8640: Use atomic variants of drm_bridge_funcs
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@ravnborg.org> Reviewed-by: Maxime Ripard <mripard@kernel.org> Cc: Jitao Shi <jitao.shi@mediatek.com> Cc: Philip Chen <philipchen@chromium.org> Cc: Neil Armstrong <narmstrong@baylibre.com> Cc: Robert Foss <robert.foss@linaro.org> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> Cc: Jonas Karlman <jonas@kwiboo.se> Cc: Jernej Skrabec <jernej.skrabec@gmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Link: https://lore.kernel.org/r/20221205173328.1395350-2-dave.stevenson@raspberrypi.com Signed-off-by: Maxime Ripard <maxime@cerno.tech>
This commit is contained in:
parent
5304c8e601
commit
102e80d1fa
1 changed files with 12 additions and 6 deletions
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
#include <drm/display/drm_dp_aux_bus.h>
|
#include <drm/display/drm_dp_aux_bus.h>
|
||||||
#include <drm/display/drm_dp_helper.h>
|
#include <drm/display/drm_dp_helper.h>
|
||||||
|
#include <drm/drm_atomic_state_helper.h>
|
||||||
#include <drm/drm_bridge.h>
|
#include <drm/drm_bridge.h>
|
||||||
#include <drm/drm_edid.h>
|
#include <drm/drm_edid.h>
|
||||||
#include <drm/drm_mipi_dsi.h>
|
#include <drm/drm_mipi_dsi.h>
|
||||||
|
@ -442,7 +443,8 @@ static const struct dev_pm_ops ps8640_pm_ops = {
|
||||||
pm_runtime_force_resume)
|
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 ps8640 *ps_bridge = bridge_to_ps8640(bridge);
|
||||||
struct regmap *map = ps_bridge->regmap[PAGE2_TOP_CNTL];
|
struct regmap *map = ps_bridge->regmap[PAGE2_TOP_CNTL];
|
||||||
|
@ -476,7 +478,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
|
||||||
ps_bridge->pre_enabled = true;
|
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);
|
struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
|
||||||
|
|
||||||
|
@ -554,7 +557,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
|
* EDID, for this chip, we need to do a full poweron, otherwise it will
|
||||||
* fail.
|
* fail.
|
||||||
*/
|
*/
|
||||||
drm_bridge_chain_pre_enable(bridge);
|
drm_atomic_bridge_chain_pre_enable(bridge, connector->state->state);
|
||||||
|
|
||||||
edid = drm_get_edid(connector,
|
edid = drm_get_edid(connector,
|
||||||
ps_bridge->page[PAGE0_DP_CNTL]->adapter);
|
ps_bridge->page[PAGE0_DP_CNTL]->adapter);
|
||||||
|
@ -564,7 +567,7 @@ static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
|
||||||
* before, return the chip to its original power state.
|
* before, return the chip to its original power state.
|
||||||
*/
|
*/
|
||||||
if (poweroff)
|
if (poweroff)
|
||||||
drm_bridge_chain_post_disable(bridge);
|
drm_atomic_bridge_chain_post_disable(bridge, connector->state->state);
|
||||||
|
|
||||||
return edid;
|
return edid;
|
||||||
}
|
}
|
||||||
|
@ -579,8 +582,11 @@ static const struct drm_bridge_funcs ps8640_bridge_funcs = {
|
||||||
.attach = ps8640_bridge_attach,
|
.attach = ps8640_bridge_attach,
|
||||||
.detach = ps8640_bridge_detach,
|
.detach = ps8640_bridge_detach,
|
||||||
.get_edid = ps8640_bridge_get_edid,
|
.get_edid = ps8640_bridge_get_edid,
|
||||||
.post_disable = ps8640_post_disable,
|
.atomic_post_disable = ps8640_atomic_post_disable,
|
||||||
.pre_enable = ps8640_pre_enable,
|
.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)
|
static int ps8640_bridge_get_dsi_resources(struct device *dev, struct ps8640 *ps_bridge)
|
||||||
|
|
Loading…
Add table
Reference in a new issue