Skip to content

Commit 6f3b627

Browse files
committed
drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state
Everyone who implements connector_helper_funcs->atomic_check reaches into the connector state to get the atomic state. Instead of continuing this pattern, change the callback signature to just give atomic state and let the driver determine what it does and does not need from it. Eventually all atomic functions should do this, but that's just too much busy work for me. Changes in v3: - Added to the set Changes in v4: - None Changes in v5: - intel_digital_connector_atomic_check declaration moved to i915_atomic.h Link to v3: https://patchwork.freedesktop.org/patch/msgid/[email protected] Link to v4: https://patchwork.freedesktop.org/patch/msgid/[email protected] Cc: Daniel Vetter <[email protected]> Cc: Ville Syrjälä <[email protected]> Cc: Jani Nikula <[email protected]> Cc: Joonas Lahtinen <[email protected]> Cc: Rodrigo Vivi <[email protected]> Cc: Ben Skeggs <[email protected]> Cc: Laurent Pinchart <[email protected]> Cc: Kieran Bingham <[email protected]> Cc: Eric Anholt <[email protected]> Tested-by: Heiko Stuebner <[email protected]> Reviewed-by: Laurent Pinchart <[email protected]> [for rcar lvds] Acked-by: Daniel Vetter <[email protected]> Signed-off-by: Sean Paul <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 5ade071 commit 6f3b627

File tree

10 files changed

+37
-27
lines changed

10 files changed

+37
-27
lines changed

drivers/gpu/drm/drm_atomic_helper.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
686686
}
687687

688688
if (funcs->atomic_check)
689-
ret = funcs->atomic_check(connector, new_connector_state);
689+
ret = funcs->atomic_check(connector, state);
690690
if (ret)
691691
return ret;
692692

@@ -728,7 +728,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
728728
continue;
729729

730730
if (funcs->atomic_check)
731-
ret = funcs->atomic_check(connector, new_connector_state);
731+
ret = funcs->atomic_check(connector, state);
732732
if (ret)
733733
return ret;
734734
}

drivers/gpu/drm/i915/intel_atomic.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,14 @@ int intel_digital_connector_atomic_set_property(struct drm_connector *connector,
106106
}
107107

108108
int intel_digital_connector_atomic_check(struct drm_connector *conn,
109-
struct drm_connector_state *new_state)
109+
struct drm_atomic_state *state)
110110
{
111+
struct drm_connector_state *new_state =
112+
drm_atomic_get_new_connector_state(state, conn);
111113
struct intel_digital_connector_state *new_conn_state =
112114
to_intel_digital_connector_state(new_state);
113115
struct drm_connector_state *old_state =
114-
drm_atomic_get_old_connector_state(new_state->state, conn);
116+
drm_atomic_get_old_connector_state(state, conn);
115117
struct intel_digital_connector_state *old_conn_state =
116118
to_intel_digital_connector_state(old_state);
117119
struct drm_crtc_state *crtc_state;
@@ -121,7 +123,7 @@ int intel_digital_connector_atomic_check(struct drm_connector *conn,
121123
if (!new_state->crtc)
122124
return 0;
123125

124-
crtc_state = drm_atomic_get_new_crtc_state(new_state->state, new_state->crtc);
126+
crtc_state = drm_atomic_get_new_crtc_state(state, new_state->crtc);
125127

126128
/*
127129
* These properties are handled by fastset, and might not end

drivers/gpu/drm/i915/intel_atomic.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ int intel_digital_connector_atomic_set_property(struct drm_connector *connector,
2828
struct drm_property *property,
2929
u64 val);
3030
int intel_digital_connector_atomic_check(struct drm_connector *conn,
31-
struct drm_connector_state *new_state);
31+
struct drm_atomic_state *state);
3232
struct drm_connector_state *
3333
intel_digital_connector_duplicate_state(struct drm_connector *connector);
3434

drivers/gpu/drm/i915/intel_dp_mst.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,10 @@ static int intel_dp_mst_compute_config(struct intel_encoder *encoder,
151151

152152
static int
153153
intel_dp_mst_atomic_check(struct drm_connector *connector,
154-
struct drm_connector_state *new_conn_state)
154+
struct drm_atomic_state *state)
155155
{
156-
struct drm_atomic_state *state = new_conn_state->state;
156+
struct drm_connector_state *new_conn_state =
157+
drm_atomic_get_new_connector_state(state, connector);
157158
struct drm_connector_state *old_conn_state =
158159
drm_atomic_get_old_connector_state(state, connector);
159160
struct intel_connector *intel_connector =
@@ -163,7 +164,7 @@ intel_dp_mst_atomic_check(struct drm_connector *connector,
163164
struct drm_dp_mst_topology_mgr *mgr;
164165
int ret;
165166

166-
ret = intel_digital_connector_atomic_check(connector, new_conn_state);
167+
ret = intel_digital_connector_atomic_check(connector, state);
167168
if (ret)
168169
return ret;
169170

drivers/gpu/drm/i915/intel_sdvo.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,9 +2353,10 @@ static const struct drm_connector_funcs intel_sdvo_connector_funcs = {
23532353
};
23542354

23552355
static int intel_sdvo_atomic_check(struct drm_connector *conn,
2356-
struct drm_connector_state *new_conn_state)
2356+
struct drm_atomic_state *state)
23572357
{
2358-
struct drm_atomic_state *state = new_conn_state->state;
2358+
struct drm_connector_state *new_conn_state =
2359+
drm_atomic_get_new_connector_state(state, conn);
23592360
struct drm_connector_state *old_conn_state =
23602361
drm_atomic_get_old_connector_state(state, conn);
23612362
struct intel_sdvo_connector_state *old_state =
@@ -2367,13 +2368,13 @@ static int intel_sdvo_atomic_check(struct drm_connector *conn,
23672368
(memcmp(&old_state->tv, &new_state->tv, sizeof(old_state->tv)) ||
23682369
memcmp(&old_conn_state->tv, &new_conn_state->tv, sizeof(old_conn_state->tv)))) {
23692370
struct drm_crtc_state *crtc_state =
2370-
drm_atomic_get_new_crtc_state(new_conn_state->state,
2371+
drm_atomic_get_new_crtc_state(state,
23712372
new_conn_state->crtc);
23722373

23732374
crtc_state->connectors_changed = true;
23742375
}
23752376

2376-
return intel_digital_connector_atomic_check(conn, new_conn_state);
2377+
return intel_digital_connector_atomic_check(conn, state);
23772378
}
23782379

23792380
static const struct drm_connector_helper_funcs intel_sdvo_connector_helper_funcs = {

drivers/gpu/drm/i915/intel_tv.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1821,16 +1821,18 @@ static const struct drm_connector_funcs intel_tv_connector_funcs = {
18211821
};
18221822

18231823
static int intel_tv_atomic_check(struct drm_connector *connector,
1824-
struct drm_connector_state *new_state)
1824+
struct drm_atomic_state *state)
18251825
{
1826+
struct drm_connector_state *new_state;
18261827
struct drm_crtc_state *new_crtc_state;
18271828
struct drm_connector_state *old_state;
18281829

1830+
new_state = drm_atomic_get_new_connector_state(state, connector);
18291831
if (!new_state->crtc)
18301832
return 0;
18311833

1832-
old_state = drm_atomic_get_old_connector_state(new_state->state, connector);
1833-
new_crtc_state = drm_atomic_get_new_crtc_state(new_state->state, new_state->crtc);
1834+
old_state = drm_atomic_get_old_connector_state(state, connector);
1835+
new_crtc_state = drm_atomic_get_new_crtc_state(state, new_state->crtc);
18341836

18351837
if (old_state->tv.mode != new_state->tv.mode ||
18361838
old_state->tv.margins.left != new_state->tv.margins.left ||

drivers/gpu/drm/nouveau/dispnv50/disp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -948,11 +948,12 @@ nv50_mstc_get_modes(struct drm_connector *connector)
948948

949949
static int
950950
nv50_mstc_atomic_check(struct drm_connector *connector,
951-
struct drm_connector_state *new_conn_state)
951+
struct drm_atomic_state *state)
952952
{
953-
struct drm_atomic_state *state = new_conn_state->state;
954953
struct nv50_mstc *mstc = nv50_mstc(connector);
955954
struct drm_dp_mst_topology_mgr *mgr = &mstc->mstm->mgr;
955+
struct drm_connector_state *new_conn_state =
956+
drm_atomic_get_new_connector_state(state, connector);
956957
struct drm_connector_state *old_conn_state =
957958
drm_atomic_get_old_connector_state(state, connector);
958959
struct drm_crtc_state *crtc_state;

drivers/gpu/drm/rcar-du/rcar_lvds.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,15 @@ static int rcar_lvds_connector_get_modes(struct drm_connector *connector)
9292
}
9393

9494
static int rcar_lvds_connector_atomic_check(struct drm_connector *connector,
95-
struct drm_connector_state *state)
95+
struct drm_atomic_state *state)
9696
{
9797
struct rcar_lvds *lvds = connector_to_rcar_lvds(connector);
9898
const struct drm_display_mode *panel_mode;
99+
struct drm_connector_state *conn_state;
99100
struct drm_crtc_state *crtc_state;
100101

101-
if (!state->crtc)
102+
conn_state = drm_atomic_get_new_connector_state(state, connector);
103+
if (!conn_state->crtc)
102104
return 0;
103105

104106
if (list_empty(&connector->modes)) {
@@ -110,9 +112,9 @@ static int rcar_lvds_connector_atomic_check(struct drm_connector *connector,
110112
struct drm_display_mode, head);
111113

112114
/* We're not allowed to modify the resolution. */
113-
crtc_state = drm_atomic_get_crtc_state(state->state, state->crtc);
114-
if (IS_ERR(crtc_state))
115-
return PTR_ERR(crtc_state);
115+
crtc_state = drm_atomic_get_crtc_state(state, conn_state->crtc);
116+
if (!crtc_state)
117+
return -EINVAL;
116118

117119
if (crtc_state->mode.hdisplay != panel_mode->hdisplay ||
118120
crtc_state->mode.vdisplay != panel_mode->vdisplay)

drivers/gpu/drm/vc4/vc4_txp.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,17 +221,18 @@ static const u32 txp_fmts[] = {
221221
};
222222

223223
static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
224-
struct drm_connector_state *conn_state)
224+
struct drm_atomic_state *state)
225225
{
226+
struct drm_connector_state *conn_state;
226227
struct drm_crtc_state *crtc_state;
227228
struct drm_framebuffer *fb;
228229
int i;
229230

231+
conn_state = drm_atomic_get_new_connector_state(state, conn);
230232
if (!conn_state->writeback_job || !conn_state->writeback_job->fb)
231233
return 0;
232234

233-
crtc_state = drm_atomic_get_new_crtc_state(conn_state->state,
234-
conn_state->crtc);
235+
crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc);
235236

236237
fb = conn_state->writeback_job->fb;
237238
if (fb->width != crtc_state->mode.hdisplay ||

include/drm/drm_modeset_helper_vtables.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ struct drm_connector_helper_funcs {
10281028
* deadlock.
10291029
*/
10301030
int (*atomic_check)(struct drm_connector *connector,
1031-
struct drm_connector_state *state);
1031+
struct drm_atomic_state *state);
10321032

10331033
/**
10341034
* @atomic_commit:

0 commit comments

Comments
 (0)