mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/bridge: Pass full state to atomic_enable
It's pretty inconvenient to access the full atomic state from drm_bridges, so let's change the atomic_enable hook prototype to pass it directly. Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Tested-by: Douglas Anderson <dianders@chromium.org> Link: https://lore.kernel.org/r/20250213-bridge-connector-v3-3-e71598f49c8f@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
This commit is contained in:
parent
e9db46e576
commit
c2b190bf2a
|
|
@ -911,7 +911,7 @@ static struct adv7511 *bridge_to_adv7511(struct drm_bridge *bridge)
|
|||
}
|
||||
|
||||
static void adv7511_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct adv7511 *adv = bridge_to_adv7511(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -1255,11 +1255,9 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *old_state)
|
||||
{
|
||||
struct drm_atomic_state *old_state = old_bridge_state->base.state;
|
||||
struct analogix_dp_device *dp = bridge->driver_private;
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_crtc_state *old_crtc_state;
|
||||
|
|
|
|||
|
|
@ -2380,7 +2380,7 @@ static int anx7625_bridge_atomic_check(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void anx7625_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct anx7625_data *ctx = bridge_to_anx7625(bridge);
|
||||
struct device *dev = ctx->dev;
|
||||
|
|
@ -2389,7 +2389,7 @@ static void anx7625_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
|
||||
dev_dbg(dev, "drm atomic enable\n");
|
||||
|
||||
connector = drm_atomic_get_new_connector_for_encoder(state->base.state,
|
||||
connector = drm_atomic_get_new_connector_for_encoder(state,
|
||||
bridge->encoder);
|
||||
if (!connector)
|
||||
return;
|
||||
|
|
@ -2401,7 +2401,7 @@ static void anx7625_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
|
||||
anx7625_dp_start(ctx);
|
||||
|
||||
conn_state = drm_atomic_get_new_connector_state(state->base.state, connector);
|
||||
conn_state = drm_atomic_get_new_connector_state(state, connector);
|
||||
|
||||
if (WARN_ON(!conn_state))
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1979,10 +1979,9 @@ static void cdns_mhdp_sst_enable(struct cdns_mhdp_device *mhdp,
|
|||
}
|
||||
|
||||
static void cdns_mhdp_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct cdns_mhdp_device *mhdp = bridge_to_mhdp(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct cdns_mhdp_bridge_state *mhdp_state;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
struct drm_connector *connector;
|
||||
|
|
|
|||
|
|
@ -341,10 +341,9 @@ static void chipone_configure_pll(struct chipone *icn,
|
|||
}
|
||||
|
||||
static void chipone_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct chipone *icn = bridge_to_chipone(bridge);
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct drm_display_mode *mode = &icn->mode;
|
||||
const struct drm_bridge_state *bridge_state;
|
||||
u16 hfp, hbp, hsync;
|
||||
|
|
|
|||
|
|
@ -122,10 +122,9 @@ static int fsl_ldb_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct fsl_ldb *fsl_ldb = to_fsl_ldb(bridge);
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
const struct drm_bridge_state *bridge_state;
|
||||
const struct drm_crtc_state *crtc_state;
|
||||
const struct drm_display_mode *mode;
|
||||
|
|
|
|||
|
|
@ -49,16 +49,17 @@ static int imx8mp_hdmi_pvi_bridge_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void imx8mp_hdmi_pvi_bridge_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct imx8mp_hdmi_pvi *pvi = to_imx8mp_hdmi_pvi(bridge);
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_bridge_state *bridge_state;
|
||||
const struct drm_display_mode *mode;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
struct drm_connector *connector;
|
||||
u32 bus_flags = 0, val;
|
||||
|
||||
bridge_state = drm_atomic_get_new_bridge_state(state, bridge);
|
||||
connector = drm_atomic_get_new_connector_for_encoder(state, bridge->encoder);
|
||||
conn_state = drm_atomic_get_new_connector_state(state, connector);
|
||||
crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc);
|
||||
|
|
|
|||
|
|
@ -200,9 +200,8 @@ imx8qm_ldb_bridge_mode_set(struct drm_bridge *bridge,
|
|||
CH_HSYNC_M(chno), CH_PHSYNC(chno));
|
||||
}
|
||||
|
||||
static void
|
||||
imx8qm_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void imx8qm_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct ldb_channel *ldb_ch = bridge->driver_private;
|
||||
struct ldb *ldb = ldb_ch->ldb;
|
||||
|
|
|
|||
|
|
@ -219,9 +219,8 @@ static void imx8qxp_ldb_bridge_atomic_pre_enable(struct drm_bridge *bridge,
|
|||
companion->funcs->atomic_pre_enable(companion, state);
|
||||
}
|
||||
|
||||
static void
|
||||
imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct ldb_channel *ldb_ch = bridge->driver_private;
|
||||
struct ldb *ldb = ldb_ch->ldb;
|
||||
|
|
@ -251,7 +250,7 @@ imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
DRM_DEV_ERROR(dev, "failed to power on PHY: %d\n", ret);
|
||||
|
||||
if (is_split && companion)
|
||||
companion->funcs->atomic_enable(companion, old_bridge_state);
|
||||
companion->funcs->atomic_enable(companion, state);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -153,9 +153,8 @@ imx8qxp_pixel_link_bridge_mode_set(struct drm_bridge *bridge,
|
|||
imx8qxp_pixel_link_set_mst_addr(pl);
|
||||
}
|
||||
|
||||
static void
|
||||
imx8qxp_pixel_link_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void imx8qxp_pixel_link_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct imx8qxp_pixel_link *pl = bridge->driver_private;
|
||||
|
||||
|
|
|
|||
|
|
@ -581,11 +581,9 @@ it6263_bridge_atomic_disable(struct drm_bridge *bridge,
|
|||
AFE_DRV_RST | AFE_DRV_PWD);
|
||||
}
|
||||
|
||||
static void
|
||||
it6263_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void it6263_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct it6263 *it = bridge_to_it6263(bridge);
|
||||
const struct drm_crtc_state *crtc_state;
|
||||
struct regmap *regmap = it->hdmi_regmap;
|
||||
|
|
|
|||
|
|
@ -3183,11 +3183,10 @@ it6505_bridge_mode_valid(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void it6505_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct it6505 *it6505 = bridge_to_it6505(bridge);
|
||||
struct device *dev = it6505->dev;
|
||||
struct drm_atomic_state *state = old_state->base.state;
|
||||
struct hdmi_avi_infoframe frame;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
struct drm_connector_state *conn_state;
|
||||
|
|
|
|||
|
|
@ -721,10 +721,9 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void it66121_bridge_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
|
||||
ctx->connector = drm_atomic_get_new_connector_for_encoder(state, bridge->encoder);
|
||||
|
||||
|
|
|
|||
|
|
@ -455,10 +455,9 @@ static int lt9211_configure_tx(struct lt9211 *ctx, bool jeida,
|
|||
}
|
||||
|
||||
static void lt9211_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct lt9211 *ctx = bridge_to_lt9211(bridge);
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
const struct drm_bridge_state *bridge_state;
|
||||
const struct drm_crtc_state *crtc_state;
|
||||
const struct drm_display_mode *mode;
|
||||
|
|
|
|||
|
|
@ -640,12 +640,10 @@ lt9611_get_edid_block(void *data, u8 *buf, unsigned int block, size_t len)
|
|||
}
|
||||
|
||||
/* bridge funcs */
|
||||
static void
|
||||
lt9611_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void lt9611_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct drm_connector *connector;
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
|
|
|
|||
|
|
@ -898,9 +898,8 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge,
|
|||
pm_runtime_put_sync(dev);
|
||||
}
|
||||
|
||||
static void
|
||||
nwl_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void nwl_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct nwl_dsi *dsi = bridge_to_dsi(bridge);
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -128,10 +128,9 @@ static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void panel_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *atomic_state)
|
||||
{
|
||||
struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
|
||||
struct drm_atomic_state *atomic_state = old_bridge_state->base.state;
|
||||
struct drm_encoder *encoder = bridge->encoder;
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_crtc_state *old_crtc_state;
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct samsung_dsim *dsi = bridge_to_dsi(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ static void sii902x_bridge_atomic_disable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void sii902x_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct sii902x *sii902x = bridge_to_sii902x(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -362,10 +362,9 @@ static int dw_hdmi_qp_config_drm_infoframe(struct dw_hdmi_qp *hdmi,
|
|||
}
|
||||
|
||||
static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct dw_hdmi_qp *hdmi = bridge->driver_private;
|
||||
struct drm_atomic_state *state = old_state->base.state;
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_connector *connector;
|
||||
unsigned int op_mode;
|
||||
|
|
|
|||
|
|
@ -2959,10 +2959,9 @@ static void dw_hdmi_bridge_atomic_disable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void dw_hdmi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct dw_hdmi *hdmi = bridge->driver_private;
|
||||
struct drm_atomic_state *state = old_state->base.state;
|
||||
struct drm_connector *connector;
|
||||
|
||||
connector = drm_atomic_get_new_connector_for_encoder(state,
|
||||
|
|
|
|||
|
|
@ -1043,7 +1043,7 @@ static void dw_mipi_dsi_bridge_mode_set(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void dw_mipi_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -840,7 +840,7 @@ static void dw_mipi_dsi2_bridge_mode_set(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void dw_mipi_dsi2_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct dw_mipi_dsi2 *dsi2 = bridge_to_dsi2(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -189,7 +189,8 @@ static void tc358762_pre_enable(struct drm_bridge *bridge,
|
|||
ctx->pre_enabled = true;
|
||||
}
|
||||
|
||||
static void tc358762_enable(struct drm_bridge *bridge, struct drm_bridge_state *state)
|
||||
static void tc358762_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct tc358762 *ctx = bridge_to_tc358762(bridge);
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -1548,9 +1548,8 @@ static int tc_edp_stream_disable(struct tc_data *tc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
tc_dpi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void tc_dpi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
|
||||
{
|
||||
struct tc_data *tc = bridge_to_tc(bridge);
|
||||
|
|
@ -1576,9 +1575,8 @@ tc_dpi_bridge_atomic_disable(struct drm_bridge *bridge,
|
|||
dev_err(tc->dev, "main link stream stop error: %d\n", ret);
|
||||
}
|
||||
|
||||
static void
|
||||
tc_edp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
static void tc_edp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct tc_data *tc = bridge_to_tc(bridge);
|
||||
int ret;
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ static const struct regmap_config dlpc_regmap_config = {
|
|||
};
|
||||
|
||||
static void dlpc_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct dlpc *dlpc = bridge_to_dlpc(bridge);
|
||||
struct device *dev = dlpc->dev;
|
||||
|
|
|
|||
|
|
@ -639,7 +639,7 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void sn65dsi83_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct sn65dsi83 *ctx = bridge_to_sn65dsi83(bridge);
|
||||
unsigned int pval;
|
||||
|
|
|
|||
|
|
@ -1073,7 +1073,7 @@ static int ti_sn_link_training(struct ti_sn65dsi86 *pdata, int dp_rate_idx,
|
|||
}
|
||||
|
||||
static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
|
||||
struct drm_connector *connector;
|
||||
|
|
@ -1085,7 +1085,7 @@ static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
int max_dp_lanes;
|
||||
unsigned int bpp;
|
||||
|
||||
connector = drm_atomic_get_new_connector_for_encoder(old_bridge_state->base.state,
|
||||
connector = drm_atomic_get_new_connector_for_encoder(state,
|
||||
bridge->encoder);
|
||||
if (!connector) {
|
||||
dev_err_ratelimited(pdata->dev, "Could not get the connector\n");
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@ struct tdp158 {
|
|||
struct device *dev;
|
||||
};
|
||||
|
||||
static void tdp158_enable(struct drm_bridge *bridge, struct drm_bridge_state *prev)
|
||||
static void tdp158_enable(struct drm_bridge *bridge,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
int err;
|
||||
struct tdp158 *tdp158 = bridge->driver_private;
|
||||
|
|
|
|||
|
|
@ -806,15 +806,7 @@ void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge,
|
|||
encoder = bridge->encoder;
|
||||
list_for_each_entry_from(bridge, &encoder->bridge_chain, chain_node) {
|
||||
if (bridge->funcs->atomic_enable) {
|
||||
struct drm_bridge_state *old_bridge_state;
|
||||
|
||||
old_bridge_state =
|
||||
drm_atomic_get_old_bridge_state(old_state,
|
||||
bridge);
|
||||
if (WARN_ON(!old_bridge_state))
|
||||
return;
|
||||
|
||||
bridge->funcs->atomic_enable(bridge, old_bridge_state);
|
||||
bridge->funcs->atomic_enable(bridge, old_state);
|
||||
} else if (bridge->funcs->enable) {
|
||||
bridge->funcs->enable(bridge);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ static int ingenic_drm_update_pixclk(struct notifier_block *nb,
|
|||
}
|
||||
|
||||
static void ingenic_drm_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct ingenic_drm *priv = drm_device_get_priv(bridge->dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -2350,12 +2350,12 @@ static void mtk_dp_bridge_detach(struct drm_bridge *bridge)
|
|||
}
|
||||
|
||||
static void mtk_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct mtk_dp *mtk_dp = mtk_dp_from_bridge(bridge);
|
||||
int ret;
|
||||
|
||||
mtk_dp->conn = drm_atomic_get_new_connector_for_encoder(old_state->base.state,
|
||||
mtk_dp->conn = drm_atomic_get_new_connector_for_encoder(state,
|
||||
bridge->encoder);
|
||||
if (!mtk_dp->conn) {
|
||||
drm_err(mtk_dp->drm_dev,
|
||||
|
|
|
|||
|
|
@ -834,7 +834,7 @@ static void mtk_dsi_bridge_atomic_disable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void mtk_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct mtk_dsi *dsi = bridge_to_dsi(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -1383,9 +1383,8 @@ static void mtk_hdmi_send_infoframe(struct mtk_hdmi *hdmi,
|
|||
}
|
||||
|
||||
static void mtk_hdmi_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = old_state->base.state;
|
||||
struct mtk_hdmi *hdmi = hdmi_ctx_from_bridge(bridge);
|
||||
|
||||
/* Retrieve the connector through the atomic state. */
|
||||
|
|
|
|||
|
|
@ -139,10 +139,9 @@ static int meson_encoder_cvbs_atomic_check(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void meson_encoder_cvbs_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct meson_encoder_cvbs *encoder_cvbs = bridge_to_meson_encoder_cvbs(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct meson_drm *priv = encoder_cvbs->priv;
|
||||
const struct meson_cvbs_mode *meson_mode;
|
||||
struct drm_connector_state *conn_state;
|
||||
|
|
|
|||
|
|
@ -42,10 +42,9 @@ static int meson_encoder_dsi_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void meson_encoder_dsi_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct meson_encoder_dsi *encoder_dsi = bridge_to_meson_encoder_dsi(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct meson_drm *priv = encoder_dsi->priv;
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
|
|
|
|||
|
|
@ -186,10 +186,9 @@ static enum drm_mode_status meson_encoder_hdmi_mode_valid(struct drm_bridge *bri
|
|||
}
|
||||
|
||||
static void meson_encoder_hdmi_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct meson_encoder_hdmi *encoder_hdmi = bridge_to_meson_encoder_hdmi(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
unsigned int ycrcb_map = VPU_HDMI_OUTPUT_CBYCR;
|
||||
struct meson_drm *priv = encoder_hdmi->priv;
|
||||
struct drm_connector_state *conn_state;
|
||||
|
|
|
|||
|
|
@ -1491,13 +1491,13 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_display, struct drm_device *dev,
|
|||
}
|
||||
|
||||
void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
|
||||
struct msm_dp *dp = msm_dp_bridge->msm_dp_display;
|
||||
int rc = 0;
|
||||
struct msm_dp_display_private *msm_dp_display;
|
||||
u32 state;
|
||||
u32 hpd_state;
|
||||
bool force_link_train = false;
|
||||
|
||||
msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display);
|
||||
|
|
@ -1516,8 +1516,8 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
|||
return;
|
||||
}
|
||||
|
||||
state = msm_dp_display->hpd_state;
|
||||
if (state != ST_DISPLAY_OFF && state != ST_MAINLINK_READY) {
|
||||
hpd_state = msm_dp_display->hpd_state;
|
||||
if (hpd_state != ST_DISPLAY_OFF && hpd_state != ST_MAINLINK_READY) {
|
||||
mutex_unlock(&msm_dp_display->event_mutex);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1529,9 +1529,9 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
|||
return;
|
||||
}
|
||||
|
||||
state = msm_dp_display->hpd_state;
|
||||
hpd_state = msm_dp_display->hpd_state;
|
||||
|
||||
if (state == ST_DISPLAY_OFF) {
|
||||
if (hpd_state == ST_DISPLAY_OFF) {
|
||||
msm_dp_display_host_phy_init(msm_dp_display);
|
||||
force_link_train = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,9 +137,8 @@ static int msm_edp_bridge_atomic_check(struct drm_bridge *drm_bridge,
|
|||
}
|
||||
|
||||
static void msm_edp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *atomic_state = old_bridge_state->base.state;
|
||||
struct drm_crtc *crtc;
|
||||
struct drm_crtc_state *old_crtc_state;
|
||||
struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
|
||||
|
|
@ -151,19 +150,19 @@ static void msm_edp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
|||
* If the panel is in psr, just exit psr state and skip the full
|
||||
* bridge enable sequence.
|
||||
*/
|
||||
crtc = drm_atomic_get_new_crtc_for_encoder(atomic_state,
|
||||
crtc = drm_atomic_get_new_crtc_for_encoder(state,
|
||||
drm_bridge->encoder);
|
||||
if (!crtc)
|
||||
return;
|
||||
|
||||
old_crtc_state = drm_atomic_get_old_crtc_state(atomic_state, crtc);
|
||||
old_crtc_state = drm_atomic_get_old_crtc_state(state, crtc);
|
||||
|
||||
if (old_crtc_state && old_crtc_state->self_refresh_active) {
|
||||
msm_dp_display_set_psr(dp, false);
|
||||
return;
|
||||
}
|
||||
|
||||
msm_dp_bridge_atomic_enable(drm_bridge, old_bridge_state);
|
||||
msm_dp_bridge_atomic_enable(drm_bridge, state);
|
||||
}
|
||||
|
||||
static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, struct drm_device *dev,
|
|||
bool yuv_supported);
|
||||
|
||||
void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
|
||||
struct drm_bridge_state *old_bridge_state);
|
||||
struct drm_atomic_state *state);
|
||||
void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
|
||||
struct drm_bridge_state *old_bridge_state);
|
||||
void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
|
||||
|
|
|
|||
|
|
@ -341,10 +341,9 @@ static void hdmi4_bridge_mode_set(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void hdmi4_bridge_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_connector *connector;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
|
|
|
|||
|
|
@ -339,10 +339,9 @@ static void hdmi5_bridge_mode_set(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void hdmi5_bridge_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
|
||||
struct drm_atomic_state *state = bridge_state->base.state;
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_connector *connector;
|
||||
struct drm_crtc_state *crtc_state;
|
||||
|
|
|
|||
|
|
@ -582,9 +582,8 @@ EXPORT_SYMBOL_GPL(rcar_lvds_pclk_disable);
|
|||
*/
|
||||
|
||||
static void rcar_lvds_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct drm_connector *connector;
|
||||
struct drm_crtc *crtc;
|
||||
|
||||
|
|
|
|||
|
|
@ -808,7 +808,7 @@ static int rcar_mipi_dsi_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void rcar_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct rcar_mipi_dsi *dsi = bridge_to_rcar_mipi_dsi(bridge);
|
||||
|
||||
|
|
|
|||
|
|
@ -532,9 +532,8 @@ static int rzg2l_mipi_dsi_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct rzg2l_mipi_dsi *dsi = bridge_to_rzg2l_mipi_dsi(bridge);
|
||||
const struct drm_display_mode *mode;
|
||||
struct drm_connector *connector;
|
||||
|
|
|
|||
|
|
@ -980,9 +980,8 @@ static int lvds_attach(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void lvds_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
struct stm_lvds *lvds = bridge_to_stm_lvds(bridge);
|
||||
struct drm_connector_state *conn_state;
|
||||
struct drm_connector *connector;
|
||||
|
|
|
|||
|
|
@ -1142,7 +1142,7 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void vc4_dsi_bridge_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct vc4_dsi *dsi = bridge_to_vc4_dsi(bridge);
|
||||
bool debug_dump_regs = false;
|
||||
|
|
|
|||
|
|
@ -1437,7 +1437,7 @@ zynqmp_dp_disp_connected_live_layer(struct zynqmp_dp *dp)
|
|||
}
|
||||
|
||||
static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct zynqmp_disp_layer *layer;
|
||||
struct drm_bridge_state *bridge_state;
|
||||
|
|
@ -1447,8 +1447,7 @@ static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp,
|
|||
if (!layer)
|
||||
return;
|
||||
|
||||
bridge_state = drm_atomic_get_new_bridge_state(old_bridge_state->base.state,
|
||||
old_bridge_state->bridge);
|
||||
bridge_state = drm_atomic_get_new_bridge_state(state, &dp->bridge);
|
||||
if (WARN_ON(!bridge_state))
|
||||
return;
|
||||
|
||||
|
|
@ -1549,10 +1548,9 @@ zynqmp_dp_bridge_mode_valid(struct drm_bridge *bridge,
|
|||
}
|
||||
|
||||
static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state)
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct zynqmp_dp *dp = bridge_to_dp(bridge);
|
||||
struct drm_atomic_state *state = old_bridge_state->base.state;
|
||||
const struct drm_crtc_state *crtc_state;
|
||||
const struct drm_display_mode *adjusted_mode;
|
||||
const struct drm_display_mode *mode;
|
||||
|
|
@ -1565,7 +1563,7 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
|
|||
pm_runtime_get_sync(dp->dev);
|
||||
|
||||
guard(mutex)(&dp->lock);
|
||||
zynqmp_dp_disp_enable(dp, old_bridge_state);
|
||||
zynqmp_dp_disp_enable(dp, state);
|
||||
|
||||
/*
|
||||
* Retrieve the CRTC mode and adjusted mode. This requires a little
|
||||
|
|
|
|||
|
|
@ -325,7 +325,7 @@ struct drm_bridge_funcs {
|
|||
* The @atomic_enable callback is optional.
|
||||
*/
|
||||
void (*atomic_enable)(struct drm_bridge *bridge,
|
||||
struct drm_bridge_state *old_bridge_state);
|
||||
struct drm_atomic_state *state);
|
||||
/**
|
||||
* @atomic_disable:
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user