Skip to content

Commit fb1e881

Browse files
mripardjlahtine-intel
authored andcommitted
drm/i915/tv: Fix TV mode
Commit 1fd4a5a ("drm/connector: Rename legacy TV property") failed to update all the users of the struct drm_tv_connector_state mode field, which resulted in a build failure in i915. However, a subsequent commit in the same series reintroduced a mode field in that structure, with a different semantic but the same type, with the assumption that all previous users were updated. Since that didn't happen, the i915 driver now compiles, but mixes accesses to the legacy_mode field and the newer mode field, but with the previous semantics. This obviously doesn't work very well, so we need to update the accesses that weren't in the legacy renaming commit. Fixes: 1fd4a5a ("drm/connector: Rename legacy TV property") Reported-by: Ville Syrjälä <[email protected]> Signed-off-by: Maxime Ripard <[email protected]> Reviewed-by: Rodrigo Vivi <[email protected]> Signed-off-by: Rodrigo Vivi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit bf7626f) Signed-off-by: Joonas Lahtinen <[email protected]>
1 parent b401b62 commit fb1e881

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

drivers/gpu/drm/i915/display/intel_sdvo.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,7 @@ static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo,
12091209
struct intel_sdvo_tv_format format;
12101210
u32 format_map;
12111211

1212-
format_map = 1 << conn_state->tv.mode;
1212+
format_map = 1 << conn_state->tv.legacy_mode;
12131213
memset(&format, 0, sizeof(format));
12141214
memcpy(&format, &format_map, min(sizeof(format), sizeof(format_map)));
12151215

@@ -2298,7 +2298,7 @@ static int intel_sdvo_get_tv_modes(struct drm_connector *connector)
22982298
* Read the list of supported input resolutions for the selected TV
22992299
* format.
23002300
*/
2301-
format_map = 1 << conn_state->tv.mode;
2301+
format_map = 1 << conn_state->tv.legacy_mode;
23022302
memcpy(&tv_res, &format_map,
23032303
min(sizeof(format_map), sizeof(struct intel_sdvo_sdtv_resolution_request)));
23042304

@@ -2363,7 +2363,7 @@ intel_sdvo_connector_atomic_get_property(struct drm_connector *connector,
23632363
int i;
23642364

23652365
for (i = 0; i < intel_sdvo_connector->format_supported_num; i++)
2366-
if (state->tv.mode == intel_sdvo_connector->tv_format_supported[i]) {
2366+
if (state->tv.legacy_mode == intel_sdvo_connector->tv_format_supported[i]) {
23672367
*val = i;
23682368

23692369
return 0;
@@ -2419,7 +2419,7 @@ intel_sdvo_connector_atomic_set_property(struct drm_connector *connector,
24192419
struct intel_sdvo_connector_state *sdvo_state = to_intel_sdvo_connector_state(state);
24202420

24212421
if (property == intel_sdvo_connector->tv_format) {
2422-
state->tv.mode = intel_sdvo_connector->tv_format_supported[val];
2422+
state->tv.legacy_mode = intel_sdvo_connector->tv_format_supported[val];
24232423

24242424
if (state->crtc) {
24252425
struct drm_crtc_state *crtc_state =
@@ -3076,7 +3076,7 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
30763076
drm_property_add_enum(intel_sdvo_connector->tv_format, i,
30773077
tv_format_names[intel_sdvo_connector->tv_format_supported[i]]);
30783078

3079-
intel_sdvo_connector->base.base.state->tv.mode = intel_sdvo_connector->tv_format_supported[0];
3079+
intel_sdvo_connector->base.base.state->tv.legacy_mode = intel_sdvo_connector->tv_format_supported[0];
30803080
drm_object_attach_property(&intel_sdvo_connector->base.base.base,
30813081
intel_sdvo_connector->tv_format, 0);
30823082
return true;

drivers/gpu/drm/i915/display/intel_tv.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -949,7 +949,7 @@ intel_disable_tv(struct intel_atomic_state *state,
949949

950950
static const struct tv_mode *intel_tv_mode_find(const struct drm_connector_state *conn_state)
951951
{
952-
int format = conn_state->tv.mode;
952+
int format = conn_state->tv.legacy_mode;
953953

954954
return &tv_modes[format];
955955
}
@@ -1704,7 +1704,7 @@ static void intel_tv_find_better_format(struct drm_connector *connector)
17041704
break;
17051705
}
17061706

1707-
connector->state->tv.mode = i;
1707+
connector->state->tv.legacy_mode = i;
17081708
}
17091709

17101710
static int
@@ -1859,7 +1859,7 @@ static int intel_tv_atomic_check(struct drm_connector *connector,
18591859
old_state = drm_atomic_get_old_connector_state(state, connector);
18601860
new_crtc_state = drm_atomic_get_new_crtc_state(state, new_state->crtc);
18611861

1862-
if (old_state->tv.mode != new_state->tv.mode ||
1862+
if (old_state->tv.legacy_mode != new_state->tv.legacy_mode ||
18631863
old_state->tv.margins.left != new_state->tv.margins.left ||
18641864
old_state->tv.margins.right != new_state->tv.margins.right ||
18651865
old_state->tv.margins.top != new_state->tv.margins.top ||
@@ -1896,7 +1896,7 @@ static void intel_tv_add_properties(struct drm_connector *connector)
18961896
conn_state->tv.margins.right = 46;
18971897
conn_state->tv.margins.bottom = 37;
18981898

1899-
conn_state->tv.mode = 0;
1899+
conn_state->tv.legacy_mode = 0;
19001900

19011901
/* Create TV properties then attach current values */
19021902
for (i = 0; i < ARRAY_SIZE(tv_modes); i++) {
@@ -1910,7 +1910,7 @@ static void intel_tv_add_properties(struct drm_connector *connector)
19101910

19111911
drm_object_attach_property(&connector->base,
19121912
i915->drm.mode_config.legacy_tv_mode_property,
1913-
conn_state->tv.mode);
1913+
conn_state->tv.legacy_mode);
19141914
drm_object_attach_property(&connector->base,
19151915
i915->drm.mode_config.tv_left_margin_property,
19161916
conn_state->tv.margins.left);

0 commit comments

Comments
 (0)