summaryrefslogtreecommitdiff
path: root/include/drm
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2026-07-07 09:33:58 +1000
committerDave Airlie <airlied@redhat.com>2026-07-07 09:34:04 +1000
commit26934ed848fab9978da089b84c1e78395ef343bb (patch)
tree380fe307a849300ecdcbe6cc8ba7ace7756320f3 /include/drm
parent00422c79d0774673829540972c3cb25754e6561e (diff)
parentcff96362794a5c1f3adb013b4a46c7233149a629 (diff)
downloadlwn-26934ed848fab9978da089b84c1e78395ef343bb.tar.gz
lwn-26934ed848fab9978da089b84c1e78395ef343bb.zip
Merge tag 'drm-misc-next-2026-07-02' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for 7.3: UAPI Changes: Cross-subsystem Changes: Core Changes: - bridge: Add atomic_create_state callback and helpers, drop atomic_reset - dp: Add support for DSC max delta BPP - edid: Parse panel type from DisplayID 2.x Display Parameters - sysfb: Improve panel, stride and framebuffer size validation Driver Changes: - hibmc: Improvements to the plane formats handling, switch to gem-shmem - nouveau: race fixes, misc improvements - bridges: - Convert all bridges to atomic_create_state - panels: - panel-edp: New quirks for BOE NE160QDM-NY1, MB116AS01 Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <mripard@redhat.com> Link: https://patch.msgid.link/20260702-powerful-successful-raptor-eded34@houat
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/display/drm_dp.h13
-rw-r--r--include/drm/drm_atomic_state_helper.h6
-rw-r--r--include/drm/drm_bridge.h33
-rw-r--r--include/drm/drm_connector.h6
-rw-r--r--include/drm/drm_gem_shmem_helper.h4
5 files changed, 35 insertions, 27 deletions
diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index 829e4d98d61c..7154216e0aff 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -354,15 +354,24 @@
# define DP_DSC_20_PER_DP_DSC_SINK (1 << 1)
# define DP_DSC_24_PER_DP_DSC_SINK (1 << 2)
-#define DP_DSC_BITS_PER_PIXEL_INC 0x06F
+#define DP_DSC_MAX_BPP_DELTA_VERSION_1 0x06E
# define DP_DSC_RGB_YCbCr444_MAX_BPP_DELTA_MASK 0x1f
-# define DP_DSC_RGB_YCbCr420_MAX_BPP_DELTA_MASK 0xe0
+# define DP_DSC_NATIVE_YCbCr420_MAX_BPP_DELTA_MASK 0xe0
+
+# define DP_DSC_BPP_DELTA_444 16
+# define DP_DSC_BPP_DELTA_420 12
+# define DP_DSC_BPP_DELTA_SHIFT_420 5
+
+#define DP_DSC_BITS_PER_PIXEL_INC 0x06F
# define DP_DSC_BITS_PER_PIXEL_1_16 0x0
# define DP_DSC_BITS_PER_PIXEL_1_8 0x1
# define DP_DSC_BITS_PER_PIXEL_1_4 0x2
# define DP_DSC_BITS_PER_PIXEL_1_2 0x3
# define DP_DSC_BITS_PER_PIXEL_1_1 0x4
# define DP_DSC_BITS_PER_PIXEL_MASK 0x7
+# define DP_DSC_NATIVE_YCbCr422_MAX_BPP_DELTA_MASK 0x78
+# define DP_DSC_BPP_DELTA_NATIVE_SHIFT_422 3
+# define DP_DSC_BPP_DELTA_NATIVE_422 16
#define DP_PSR_SUPPORT 0x070 /* XXX 1.2? */
# define DP_PSR_IS_SUPPORTED 1
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index f4b6d8833bc2..34a599c3d86d 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -102,7 +102,7 @@ struct drm_bridge_state *
drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge);
void drm_atomic_helper_bridge_destroy_state(struct drm_bridge *bridge,
struct drm_bridge_state *state);
-void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge,
- struct drm_bridge_state *state);
+void __drm_atomic_helper_bridge_state_init(struct drm_bridge_state *state,
+ struct drm_bridge *bridge);
struct drm_bridge_state *
-drm_atomic_helper_bridge_reset(struct drm_bridge *bridge);
+drm_atomic_helper_bridge_create_state(struct drm_bridge *bridge);
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 00a95f927e34..18f3db367dc1 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -504,31 +504,20 @@ struct drm_bridge_funcs {
struct drm_connector_state *conn_state);
/**
- * @atomic_reset:
+ * @atomic_create_state:
*
- * Reset the bridge to a predefined state (or retrieve its current
- * state) and return a &drm_bridge_state object matching this state.
- * This function is called at attach time.
- *
- * The atomic_reset hook is mandatory if the bridge implements any of
- * the atomic hooks, and should be left unassigned otherwise. For
- * bridges that don't subclass &drm_bridge_state, the
- * drm_atomic_helper_bridge_reset() helper function shall be used to
- * implement this hook.
- *
- * Note that the atomic_reset() semantics is not exactly matching the
- * reset() semantics found on other components (connector, plane, ...).
- *
- * 1. The reset operation happens when the bridge is attached, not when
- * drm_mode_config_reset() is called
- * 2. It's meant to be used exclusively on bridges that have been
- * converted to the ATOMIC API
+ * Allocate a pristine, initialized, state for the bridge
+ * object and return it. This callback must have no side
+ * effects: in particular, the returned state must not be
+ * assigned to the object's state pointer and it must not affect
+ * the hardware state.
*
* RETURNS:
- * A valid drm_bridge_state object in case of success, an ERR_PTR()
- * giving the reason of the failure otherwise.
+ *
+ * A new, pristine, bridge state instance or an error pointer
+ * on failure.
*/
- struct drm_bridge_state *(*atomic_reset)(struct drm_bridge *bridge);
+ struct drm_bridge_state *(*atomic_create_state)(struct drm_bridge *bridge);
/**
* @detect:
@@ -1375,7 +1364,7 @@ drm_bridge_get_current_state(struct drm_bridge *bridge)
* drm_atomic_private_obj_init(), so we need to make sure we're
* working with one before we try to use the lock.
*/
- if (!bridge->funcs || !bridge->funcs->atomic_reset)
+ if (!bridge->funcs || !bridge->funcs->atomic_create_state)
return NULL;
drm_modeset_lock_assert_held(&bridge->base.lock);
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index d75deba31d93..af075c38f4db 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -989,6 +989,12 @@ struct drm_display_info {
* @amd_vsdb: AMD-specific VSDB information.
*/
struct drm_amd_vsdb_info amd_vsdb;
+
+ /**
+ * @panel_type: Panel type from DisplayID Display Parameters
+ * Data Block (tag 0x21). Uses DRM_MODE_PANEL_TYPE_* constants.
+ */
+ u8 panel_type;
};
int drm_display_info_set_bus_formats(struct drm_display_info *info,
diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h
index b2c23af628e1..bcbb92f3fe9b 100644
--- a/include/drm/drm_gem_shmem_helper.h
+++ b/include/drm/drm_gem_shmem_helper.h
@@ -142,6 +142,10 @@ struct sg_table *drm_gem_shmem_get_pages_sgt(struct drm_gem_shmem_object *shmem)
void drm_gem_shmem_print_info(const struct drm_gem_shmem_object *shmem,
struct drm_printer *p, unsigned int indent);
+int drm_gem_shmem_create_with_handle(struct drm_file *file_priv,
+ struct drm_device *dev, size_t size,
+ uint32_t *handle);
+
extern const struct vm_operations_struct drm_gem_shmem_vm_ops;
/*