summaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2024-06-21 11:06:48 +1000
committerDave Airlie <airlied@redhat.com>2024-06-21 11:06:56 +1000
commitab3d8479626d281f43db0d41b8e36f6a9bd9980a (patch)
tree779a421a2659ddec0d34992804138e3e101857ad /include/drm
parent91c93e475ca4b4bd5f1e8d525c9a9810283db056 (diff)
parentb9578c49456340ca4d3c7ddbaca054ffc2b51bc1 (diff)
downloadlinux-stable-ab3d8479626d281f43db0d41b8e36f6a9bd9980a.tar.gz
linux-stable-ab3d8479626d281f43db0d41b8e36f6a9bd9980a.tar.bz2
linux-stable-ab3d8479626d281f43db0d41b8e36f6a9bd9980a.zip
Merge tag 'drm-misc-next-2024-06-20' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for 6.11: UAPI Changes: - New monochrome TV mode variant Cross-subsystem Changes: - dma heaps: Change slightly the allocation hook prototype Core Changes: Driver Changes: - ivpu: various improvements over firmware handling, clocks, power management, scheduling and logging. - mgag200: Add BMC output, enable polling - panfrost: Enable MT8188 support - tidss: drm_panic support - zynqmp_dp: IRQ cleanups, debugfs DP compliance testing API - bridge: - sii902x: state validation improvements - panel: - edp: Drop legacy panel compatibles - simple-bridge: Switch to devm_drm_bridge_add Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <mripard@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240620-heretic-honored-macaque-b40f8a@houat
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drm_connector.h213
1 files changed, 115 insertions, 98 deletions
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index e04a8a0d1bbd..c754651044d4 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -202,6 +202,13 @@ enum drm_connector_tv_mode {
DRM_MODE_TV_MODE_SECAM,
/**
+ * @DRM_MODE_TV_MODE_MONOCHROME: Use timings appropriate to
+ * the DRM mode, including equalizing pulses for a 525-line
+ * or 625-line mode, with no pedestal or color encoding.
+ */
+ DRM_MODE_TV_MODE_MONOCHROME,
+
+ /**
* @DRM_MODE_TV_MODE_MAX: Number of analog TV output modes.
*
* Internal implementation detail; this is not uABI.
@@ -929,6 +936,67 @@ struct drm_connector_hdmi_infoframe {
bool set;
};
+/*
+ * struct drm_connector_hdmi_state - HDMI state container
+ */
+struct drm_connector_hdmi_state {
+ /**
+ * @broadcast_rgb: Connector property to pass the
+ * Broadcast RGB selection value.
+ */
+ enum drm_hdmi_broadcast_rgb broadcast_rgb;
+
+ /**
+ * @infoframes: HDMI Infoframes matching that state
+ */
+ struct {
+ /**
+ * @avi: AVI Infoframes structure matching our
+ * state.
+ */
+ struct drm_connector_hdmi_infoframe avi;
+
+ /**
+ * @hdr_drm: DRM (Dynamic Range and Mastering)
+ * Infoframes structure matching our state.
+ */
+ struct drm_connector_hdmi_infoframe hdr_drm;
+
+ /**
+ * @spd: SPD Infoframes structure matching our
+ * state.
+ */
+ struct drm_connector_hdmi_infoframe spd;
+
+ /**
+ * @vendor: HDMI Vendor Infoframes structure
+ * matching our state.
+ */
+ struct drm_connector_hdmi_infoframe hdmi;
+ } infoframes;
+
+ /**
+ * @is_limited_range: Is the output supposed to use a limited
+ * RGB Quantization Range or not?
+ */
+ bool is_limited_range;
+
+ /**
+ * @output_bpc: Bits per color channel to output.
+ */
+ unsigned int output_bpc;
+
+ /**
+ * @output_format: Pixel format to output in.
+ */
+ enum hdmi_colorspace output_format;
+
+ /**
+ * @tmds_char_rate: TMDS Character Rate, in Hz.
+ */
+ unsigned long long tmds_char_rate;
+};
+
/**
* struct drm_connector_state - mutable connector state
*/
@@ -1078,63 +1146,7 @@ struct drm_connector_state {
* @hdmi: HDMI-related variable and properties. Filled by
* @drm_atomic_helper_connector_hdmi_check().
*/
- struct {
- /**
- * @broadcast_rgb: Connector property to pass the
- * Broadcast RGB selection value.
- */
- enum drm_hdmi_broadcast_rgb broadcast_rgb;
-
- /**
- * @infoframes: HDMI Infoframes matching that state
- */
- struct {
- /**
- * @avi: AVI Infoframes structure matching our
- * state.
- */
- struct drm_connector_hdmi_infoframe avi;
-
- /**
- * @hdr_drm: DRM (Dynamic Range and Mastering)
- * Infoframes structure matching our state.
- */
- struct drm_connector_hdmi_infoframe hdr_drm;
-
- /**
- * @spd: SPD Infoframes structure matching our
- * state.
- */
- struct drm_connector_hdmi_infoframe spd;
-
- /**
- * @vendor: HDMI Vendor Infoframes structure
- * matching our state.
- */
- struct drm_connector_hdmi_infoframe hdmi;
- } infoframes;
-
- /**
- * @is_limited_range: Is the output supposed to use a limited
- * RGB Quantization Range or not?
- */
- bool is_limited_range;
-
- /**
- * @output_bpc: Bits per color channel to output.
- */
- unsigned int output_bpc;
-
- /**
- * @output_format: Pixel format to output in.
- */
- enum hdmi_colorspace output_format;
-
- /**
- * @tmds_char_rate: TMDS Character Rate, in Hz.
- */
- unsigned long long tmds_char_rate;
- } hdmi;
+ struct drm_connector_hdmi_state hdmi;
};
/**
@@ -1656,6 +1668,51 @@ struct drm_cmdline_mode {
bool tv_mode_specified;
};
+/*
+ * struct drm_connector_hdmi - DRM Connector HDMI-related structure
+ */
+struct drm_connector_hdmi {
+#define DRM_CONNECTOR_HDMI_VENDOR_LEN 8
+ /**
+ * @vendor: HDMI Controller Vendor Name
+ */
+ unsigned char vendor[DRM_CONNECTOR_HDMI_VENDOR_LEN] __nonstring;
+
+#define DRM_CONNECTOR_HDMI_PRODUCT_LEN 16
+ /**
+ * @product: HDMI Controller Product Name
+ */
+ unsigned char product[DRM_CONNECTOR_HDMI_PRODUCT_LEN] __nonstring;
+
+ /**
+ * @supported_formats: Bitmask of @hdmi_colorspace
+ * supported by the controller.
+ */
+ unsigned long supported_formats;
+
+ /**
+ * @funcs: HDMI connector Control Functions
+ */
+ const struct drm_connector_hdmi_funcs *funcs;
+
+ /**
+ * @infoframes: Current Infoframes output by the connector
+ */
+ struct {
+ /**
+ * @lock: Mutex protecting against concurrent access to
+ * the infoframes, most notably between KMS and ALSA.
+ */
+ struct mutex lock;
+
+ /**
+ * @audio: Current Audio Infoframes structure. Protected
+ * by @lock.
+ */
+ struct drm_connector_hdmi_infoframe audio;
+ } infoframes;
+};
+
/**
* struct drm_connector - central DRM connector control structure
*
@@ -2068,47 +2125,7 @@ struct drm_connector {
/**
* @hdmi: HDMI-related variable and properties.
*/
- struct {
-#define DRM_CONNECTOR_HDMI_VENDOR_LEN 8
- /**
- * @vendor: HDMI Controller Vendor Name
- */
- unsigned char vendor[DRM_CONNECTOR_HDMI_VENDOR_LEN] __nonstring;
-
-#define DRM_CONNECTOR_HDMI_PRODUCT_LEN 16
- /**
- * @product: HDMI Controller Product Name
- */
- unsigned char product[DRM_CONNECTOR_HDMI_PRODUCT_LEN] __nonstring;
-
- /**
- * @supported_formats: Bitmask of @hdmi_colorspace
- * supported by the controller.
- */
- unsigned long supported_formats;
-
- /**
- * @funcs: HDMI connector Control Functions
- */
- const struct drm_connector_hdmi_funcs *funcs;
-
- /**
- * @infoframes: Current Infoframes output by the connector
- */
- struct {
- /**
- * @lock: Mutex protecting against concurrent access to
- * the infoframes, most notably between KMS and ALSA.
- */
- struct mutex lock;
-
- /**
- * @audio: Current Audio Infoframes structure. Protected
- * by @lock.
- */
- struct drm_connector_hdmi_infoframe audio;
- } infoframes;
- } hdmi;
+ struct drm_connector_hdmi hdmi;
};
#define obj_to_connector(x) container_of(x, struct drm_connector, base)