]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/display: Add Read Histogram command header
authorChun-Liang Chang <Chun-Liang.Chang@amd.com>
Fri, 21 Feb 2025 16:36:22 +0000 (10:36 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 7 Apr 2025 19:18:30 +0000 (15:18 -0400)
[Why]
Read the histogram for VariBright validation

[How]
Add dc/dmub functions to read histogram and ACE

Reviewed-by: Jun Lei <jun.lei@amd.com>
Signed-off-by: Chun-Liang Chang <Chun-Liang.Chang@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dce/dmub_abm.c
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index ccc154b0281c2c9274f7e28af06ab03288d592f9..3b9011ef9b68af5f4287eeeeaf662646d5731746 100644 (file)
@@ -28,6 +28,8 @@
 #include "dc.h"
 #include "core_types.h"
 #include "dmub_cmd.h"
+#include "dc_dmub_srv.h"
+#include "dmub/dmub_srv.h"
 
 #define TO_DMUB_ABM(abm)\
        container_of(abm, struct dce_abm, base)
index 1f5f4e3e49d411c4e8c3f3e9dd9407eeea0993c1..5e7c698f9bfb6cd573d81fdde694c6de11430152 100644 (file)
@@ -4360,6 +4360,11 @@ enum dmub_cmd_abm_type {
         * Get the current ACE curve.
         */
        DMUB_CMD__ABM_GET_ACE_CURVE = 10,
+
+       /**
+        * Get current histogram data
+        */
+       DMUB_CMD__ABM_GET_HISTOGRAM_DATA = 11,
 };
 
 struct abm_ace_curve {
@@ -4953,6 +4958,20 @@ enum dmub_abm_ace_curve_type {
        ABM_ACE_CURVE_TYPE__SW_IF = 1,
 };
 
+/**
+ * enum dmub_abm_histogram_type - Histogram type.
+ */
+enum dmub_abm_histogram_type {
+       /**
+        * ACE curve as defined by the SW layer.
+        */
+       ABM_HISTOGRAM_TYPE__SW = 0,
+       /**
+        * ACE curve as defined by the SW to HW translation interface layer.
+        */
+       ABM_HISTOGRAM_TYPE__SW_IF = 1,
+};
+
 /**
  * Definition of a DMUB_CMD__ABM_GET_ACE_CURVE command.
  */
@@ -4988,6 +5007,41 @@ struct dmub_rb_cmd_abm_get_ace_curve {
        uint8_t pad;
 };
 
+/**
+ * Definition of a DMUB_CMD__ABM_GET_HISTOGRAM command.
+ */
+struct dmub_rb_cmd_abm_get_histogram {
+       /**
+        * Command header.
+        */
+       struct dmub_cmd_header header;
+
+       /**
+        * Address where Histogram should be copied.
+        */
+       union dmub_addr dest;
+
+       /**
+        * Type of Histogram being queried.
+        */
+       enum dmub_abm_histogram_type histogram_type;
+
+       /**
+        * Indirect buffer length.
+        */
+       uint16_t bytes;
+
+       /**
+        * eDP panel instance.
+        */
+       uint8_t panel_inst;
+
+       /**
+        * Explicit padding to 4 byte boundary.
+        */
+       uint8_t pad;
+};
+
 /**
  * Definition of a DMUB_CMD__ABM_SAVE_RESTORE command.
  */
@@ -5686,6 +5740,11 @@ union dmub_rb_cmd {
         */
        struct dmub_rb_cmd_abm_get_ace_curve abm_get_ace_curve;
 
+       /**
+        * Definition of a DMUB_CMD__ABM_GET_HISTOGRAM command.
+        */
+       struct dmub_rb_cmd_abm_get_histogram abm_get_histogram;
+
        /**
         * Definition of a DMUB_CMD__ABM_SET_EVENT command.
         */