[PATCH v2 01/19] drm: Pass pixel_format+modifier to .get_format_info()

2025-07-01 Thread Ville Syrjala
From: Ville Syrjälä Decouple .get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use .get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just for this

[PATCH v2 09/19] drm/amdgpu: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()

2025-07-01 Thread Ville Syrjala
From: Ville Syrjälä Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup. Cc: Alex Deucher Cc: amd-gfx@lists.freedesktop.org Reviewed-by: Thomas Zimmermann Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/amd/amdgpu/amdgpu_disp

[PATCH v2 05/19] drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct()

2025-07-01 Thread Ville Syrjala
From: Ville Syrjälä Soon all drivers should have the format info already available in the places where they call drm_helper_mode_fill_fb_struct(). Allow it to be passed along into drm_helper_mode_fill_fb_struct() instead of doing yet another redundant lookup. Start by always passing in NULL and

[PATCH v2 02/19] drm: Pass pixel_format+modifier directly to drm_get_format_info()

2025-07-01 Thread Ville Syrjala
From: Ville Syrjälä Decouple drm_get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use drm_get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just fo

[PATCH v2 04/19] drm: Pass the format info to .fb_create()

2025-07-01 Thread Ville Syrjala
From: Ville Syrjälä Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers. Done with cocci (with some manual fixups): @@ identifier func =~ ".*create.*"; identifier dev, file, mode_cmd; @@ struct drm_framebuf

[PATCH v2 04/19] drm: Pass the format info to .fb_create()

2025-04-11 Thread Ville Syrjala
From: Ville Syrjälä Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers. Done with cocci (with some manual fixups): @@ identifier func =~ ".*create.*"; identifier dev, file, mode_cmd; @@ struct drm_framebuf

[PATCH v2 02/19] drm: Pass pixel_format+modifier directly to drm_get_format_info()

2025-04-11 Thread Ville Syrjala
From: Ville Syrjälä Decouple drm_get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use drm_get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just fo

[PATCH v2 01/19] drm: Pass pixel_format+modifier to .get_format_info()

2025-04-11 Thread Ville Syrjala
From: Ville Syrjälä Decouple .get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use .get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just for this

[PATCH 05/19] drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct()

2025-04-10 Thread Ville Syrjala
From: Ville Syrjälä Soon all drivers should have the format info already available in the places where they call drm_helper_mode_fill_fb_struct(). Allow it to be passed along into drm_helper_mode_fill_fb_struct() instead of doing yet another redundant lookup. Start by always passing in NULL and

[PATCH 09/19] drm/amdgpu: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()

2025-04-10 Thread Ville Syrjala
From: Ville Syrjälä Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup. Cc: Alex Deucher Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 +++-- 1 file changed,

[PATCH 04/19] drm: Pass the format info to .fb_create()

2025-04-10 Thread Ville Syrjala
From: Ville Syrjälä Pass long the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers. Done with cocci (with some manual fixups): @@ identifier func =~ ".*create.*"; identifier dev, file, mode_cmd; @@ struct drm_framebuff

[PATCH 02/19] drm: Pass pixel_format+modifier directly to drm_get_format_info()

2025-04-10 Thread Ville Syrjala
From: Ville Syrjälä Decouple drm_get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use drm_get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just fo

[PATCH 01/19] drm: Pass pixel_format+modifier to .get_format_info()

2025-04-10 Thread Ville Syrjala
From: Ville Syrjälä Decouple .get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand. We may want to use .get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just for this

[PATCH] drm/radeon: Fix encoder->possible_clones

2024-10-14 Thread Ville Syrjala
From: Ville Syrjälä Include the encoder itself in its possible_clones bitmask. In the past nothing validated that drivers were populating possible_clones correctly, but that changed in commit 74d2aacbe840 ("drm: Validate encoder->possible_clones"). Looks like radeon never got the memo and is stil

[PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy sub-structure

2024-10-02 Thread Ville Syrjala
From: Ville Syrjälä Atomic drivers shouldn't be using the legacy state stored directly under drm_crtc. Move that junk into a 'legacy' sub structure to highlight the offenders, of which there are quite a few unfortunately. I'm hoping we could get all these fixed and then declare the legacy state

[PATCH 1/2] drm: Move plane->{fb, old_fb, crtc} to legacy sub-structure

2024-10-02 Thread Ville Syrjala
From: Ville Syrjälä Hide the plane->fb/etc. footguns better by stashing them inside a "legacy" sub struct. Eventually maybe we could turn 'legacy' into a pointer that only exists on legacy drivers to completely prevent any abuse by atomic drivers... Side note: _dpu_plane_set_danger_state() look

[PATCH 0/2] drm: Treewide plane/crtc legacy state sweeping

2024-10-02 Thread Ville Syrjala
From: Ville Syrjälä An attempt to hide the drm_plane/crtc legacy state better. This also highlights the fact that a lot of supposedly atomic drivers are poking around in the legacy crtc state, which is rather questionable. For planes we did force the legacy state to NULL already to force drivers

[PATCH 2/5] drm/amdgpu: Use drm_crtc_vblank_crtc()

2024-04-08 Thread Ville Syrjala
From: Ville Syrjälä Replace the open coded drm_crtc_vblank_crtc() with the real thing. Cc: Alex Deucher Cc: "Christian König" Cc: "Pan, Xinhui" Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 8 ++-- drivers/gpu/drm/

[PATCH v2 1/7] drm/amdgpu: Use drm_mode_init() for on-stack modes

2022-11-07 Thread Ville Syrjala
From: Ville Syrjälä Initialize on-stack modes with drm_mode_init() to guarantee no stack garbage in the list head, or that we aren't copying over another mode's list head. Based on the following cocci script, with manual fixups: @decl@ identifier M; expression E; @@ - struct drm_display_mode M =

[PATCH v2 9/9] drm/edid: s/monitor_rage/vrr_range/

2022-09-27 Thread Ville Syrjala
From: Ville Syrjälä Rename info->monitor_range to info->vrr_range to actually reflect its usage. Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedesktop.org Reviewed-by: Manasi Navare Acked-by: Jani Nikula Signed-off-by: Ville Syrjälä ---

[PATCH v2 3/9] drm/edid: Only parse VRR range for continuous frequency displays

2022-09-27 Thread Ville Syrjala
From: Ville Syrjälä Since we only use the parsed vrefresh range to determine if VRR should be supported we should only accept continuous frequency displays here. Cc: Manasi Navare Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedesktop.org Re

[PATCH v2 1/9] drm/edid: Clarify why we only accept the "range limits only" descriptor

2022-09-27 Thread Ville Syrjala
From: Ville Syrjälä The current comment fails to clarify why we only accept the "range limits only" variant of the range descriptor. Reword it to make some actual sense. Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedesktop.org Reviewed-by:

[PATCH 05/11] drm/edid: Only parse VRR range for continuous frequency displays

2022-08-26 Thread Ville Syrjala
From: Ville Syrjälä Since we only use the parsed vrefresh range to determine if VRR should be supported we should only accept continuous frequency displays here. Cc: Manasi Navare Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedesktop.org Si

[PATCH 03/11] drm/edid: s/monitor_rage/vrr_range/

2022-08-26 Thread Ville Syrjala
From: Ville Syrjälä Rename info->monitor_range to info->vrr_range to actually reflect its usage. Cc: Manasi Navare Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä --- .../gpu/drm/amd/display/amdgpu_d

[PATCH 02/11] drm/edid: Clarify why we only accept the "range limits only" descriptor

2022-08-26 Thread Ville Syrjala
From: Ville Syrjälä The current comment fails to clarify why we only accept the "range limits only" variant of the range descriptor. Reword it to make some actual sense. Cc: Manasi Navare Cc: Nicholas Kazlauskas Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: amd-gfx@lists.freedeskto

[PATCH 04/22] drm/amdgpu: Use drm_mode_copy()

2022-02-18 Thread Ville Syrjala
From: Ville Syrjälä struct drm_display_mode embeds a list head, so overwriting the full struct with another one will corrupt the list (if the destination mode is on a list). Use drm_mode_copy() instead which explicitly preserves the list head of the destination mode. Even if we know the destinat

[PATCH 05/22] drm/radeon: Use drm_mode_copy()

2022-02-18 Thread Ville Syrjala
From: Ville Syrjälä struct drm_display_mode embeds a list head, so overwriting the full struct with another one will corrupt the list (if the destination mode is on a list). Use drm_mode_copy() instead which explicitly preserves the list head of the destination mode. Even if we know the destinat

[PATCH 03/22] drm/amdgpu: Use drm_mode_init() for on-stack modes

2022-02-18 Thread Ville Syrjala
From: Ville Syrjälä Initialize on-stack modes with drm_mode_init() to guarantee no stack garbage in the list head, or that we aren't copying over another mode's list head. Based on the following cocci script, with manual fixups: @decl@ identifier M; expression E; @@ - struct drm_display_mode M =

[PATCH 02/22] drm/amdgpu: Remove pointless on stack mode copies

2022-02-18 Thread Ville Syrjala
From: Ville Syrjälä These on stack copies of the modes appear to be pointless. Just look at the originals directly. Cc: Harry Wentland Cc: Leo Li Cc: Rodrigo Siqueira Cc: Alex Deucher Cc: amd-gfx@lists.freedesktop.org Cc: Nikola Cornij Cc: Aurabindo Pillai Signed-off-by: Ville Syrjälä ---

[PATCH 00/22] drm: Review of mode copies

2022-02-18 Thread Ville Syrjala
From: Ville Syrjälä I might be taking this a bit too far, but the lack of consistency in our methods to copy drm_display_mode structs around is bugging me. The main worry is the embedded list head, which if clobbered could lead to list corruption. I'd also prefer to make sure even the valid list

[PATCH 2/3] drm/amdgpu/powerplay: Use swap() where appropriate

2019-10-10 Thread Ville Syrjala
From: Ville Syrjälä @swap@ identifier TEMP; expression A,B; @@ - TEMP = A; - A = B; - B = TEMP; + swap(A, B); @@ type T; identifier swap.TEMP; @@ ( - T TEMP; | - T TEMP = {...}; ) ... when != TEMP Cc: Rex Zhu Cc: Evan Quan Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou"

[PATCH 1/3] drm/amd/display: Use swap() where appropriate

2019-10-10 Thread Ville Syrjala
From: Ville Syrjälä Mostly a cocci-job, but it flat out refused to remove the declaration in drivers/gpu/drm/amd/display/dc/core/dc.c so had to do that part manually. @swap@ identifier TEMP; expression A,B; @@ - TEMP = A; - A = B; - B = TEMP; + swap(A, B); @@ type T; identifier swap.TEMP; @@ (

[PATCH 3/4] drm/radeon: Use drm_hdmi_avi_infoframe_quant_range()

2019-01-08 Thread Ville Syrjala
From: Ville Syrjälä Fill out the AVI infoframe quantization range bits using drm_hdmi_avi_infoframe_quant_range() instead of hand rolling it. This changes the behaviour slightly as drm_hdmi_avi_infoframe_quant_range() will set a non-zero Q bit even when QS==0 iff the Q bit matched the default qu

[PATCH 1/4] drm/edid: Pass connector to AVI infoframe functions

2019-01-08 Thread Ville Syrjala
From: Ville Syrjälä Make life easier for drivers by simply passing the connector to drm_hdmi_avi_infoframe_from_display_mode() and drm_hdmi_avi_infoframe_quant_range(). That way drivers don't need to worry about is_hdmi2_sink mess. v2: Make is_hdmi2_sink() return true for sil-sii8620 Adapt t

[PATCH 4/4] drm/edid: Add display_info.rgb_quant_range_selectable

2019-01-08 Thread Ville Syrjala
From: Ville Syrjälä Move the CEA-861 QS bit handling entirely into the edid code. No need to bother the drivers with this. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: amd-gfx@lists.freedesktop.org Cc: Eric Anholt (supporter:DRM DRIVERS FOR VC4) Signed-off-by: Ville

[PATCH 3/4] drm/radeon: Use drm_hdmi_avi_infoframe_quant_range()

2018-11-20 Thread Ville Syrjala
From: Ville Syrjälä Fill out the AVI infoframe quantization range bits using drm_hdmi_avi_infoframe_quant_range() instead of hand rolling it. This changes the behaviour slightly as drm_hdmi_avi_infoframe_quant_range() will set a non-zero Q bit even when QS==0 iff the Q bit matched the default qu

[PATCH 4/4] drm/edid: Add display_info.rgb_quant_range_selectable

2018-11-20 Thread Ville Syrjala
From: Ville Syrjälä Move the CEA-861 QS bit handling entirely into the edid code. No need to bother the drivers with this. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: amd-gfx@lists.freedesktop.org Cc: Eric Anholt (supporter:DRM DRIVERS FOR VC4) Signed-off-by: Ville

[PATCH 1/4] drm/edid: Pass connector to AVI inforframe functions

2018-11-20 Thread Ville Syrjala
From: Ville Syrjälä Make life easier for drivers by simply passing the connector to drm_hdmi_avi_infoframe_from_display_mode() and drm_hdmi_avi_infoframe_quant_range(). That way drivers don't need to worry about is_hdmi2_sink mess. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Z

[PATCH v2 6/9] drm/radeon: Use drm_connector_for_each_possible_encoder()

2018-06-28 Thread Ville Syrjala
From: Ville Syrjälä Use drm_connector_for_each_possible_encoder() for iterating connector->encoder_ids[]. A bit more convenient not having to deal with the implementation details. v2: Replace drm_for_each_connector_encoder_ids() with drm_connector_for_each_possible_encoder() (Daniel) Cc: Da

[PATCH v2 4/9] drm/amdgpu: Use drm_connector_for_each_possible_encoder()

2018-06-28 Thread Ville Syrjala
From: Ville Syrjälä Use drm_connector_for_each_possible_encoder() for iterating connector->encoder_ids[]. A bit more convenient not having to deal with the implementation details. v2: Replace drm_for_each_connector_encoder_ids() with drm_connector_for_each_possible_encoder() (Daniel) Cc: Da

[PATCH v2 0/9] drm: Third attempt at fixing the fb-helper .best_encoder() mess

2018-06-28 Thread Ville Syrjala
From: Ville Syrjälä Changes from the previous version mainly involve Danoie's suggestion of hiding the drm_encoder_find() in the iterator macro. I also polished the msm and tilcdc cases a bit more with another small helper. Cc: Alex Deucher Cc: amd-gfx@lists.freedesktop.org Cc: Ben Skeggs Cc:

[PATCH 4/8] drm/amdgpu: Use drm_for_each_connector_encoder_ids()

2018-06-26 Thread Ville Syrjala
From: Ville Syrjälä Use drm_for_each_connector_encoder_ids() for iterating connector->encoder_ids[]. A bit more convenient not having to deal with the implementation details. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: Harry Wentland Cc: amd-gfx@lists.freedesktop.o

[PATCH 7/8] drm/radeon: Use drm_for_each_connector_encoder_ids()

2018-06-26 Thread Ville Syrjala
From: Ville Syrjälä Use drm_for_each_connector_encoder_ids() for iterating connector->encoder_ids[]. A bit more convenient not having to deal with the implementation details. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: Harry Wentland Cc: amd-gfx@lists.freedesktop.o

[PATCH] drm: Pass crtc to .best_encoder()

2018-06-15 Thread Ville Syrjala
From: Ville Syrjälä To pick the correct MST encoder i915 wants to know which crtc is going to be feeding us. To that end let's pass the crtc to the .best_encoder() hook. The atomic variant already knows the crtc via the connector state, but the non-atomic hooks is still being used by the fb_helpe

[PATCH v2 07/13] drm/amdgpu/dc: Stop updating plane->fb

2018-05-25 Thread Ville Syrjala
From: Ville Syrjälä We want to get rid of plane->fb on atomic drivers. Stop setting it. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: Harry Wentland Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä Reviewed-by: Maarten Lankhorst Reviewed-by: Harry Wen

[PATCH v2 00/13] drm: Eliminate plane->fb/crtc usage for atomic drivers

2018-05-25 Thread Ville Syrjala
From: Ville Syrjälä Here are again the last (?) bits of eliminating the plane->fb/crtc usage for atomic drivers. I've pushed everything else (thanks to everyone who reviewed them). Deepak said he'd tested the vmwgfx stuff, so I think it should be safe to land. Just missing a bit of review... C

[PATCH 04/13] drm/amdgpu/dc: Stop updating plane->fb

2018-04-05 Thread Ville Syrjala
From: Ville Syrjälä We want to get rid of plane->fb on atomic drivers. Stop setting it. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: Harry Wentland Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä Reviewed-by: Maarten Lankhorst Reviewed-by: Harry Wen

[PATCH 16/23] drm/amdgpu/dc: Stop updating plane->fb

2018-03-22 Thread Ville Syrjala
From: Ville Syrjälä We want to get rid of plane->fb on atomic drivers. Stop setting it. Cc: Alex Deucher Cc: "Christian König" Cc: "David (ChunMing) Zhou" Cc: Harry Wentland Cc: amd-gfx@lists.freedesktop.org Signed-off-by: Ville Syrjälä --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

[PATCH 00/23] drm: Eliminate plane->fb/crtc usage for atomic drivers

2018-03-22 Thread Ville Syrjala
From: Ville Syrjälä I really just wanted to fix i915 to re-enable its planes afer load detection (a two line patch). This is what I actually ended up with after I ran into a framebuffer refcount leak with said two line patch. I've tested this on a few i915 boxes and so far it's looking good. Eve