drm/amd/display: define abm debug interface
authorJosip Pavic <josip.pavic@amd.com>
Fri, 10 May 2024 14:57:48 +0000 (10:57 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Jun 2024 20:17:16 +0000 (16:17 -0400)
[Why & How]
Define debug interface to dmub for reading back abm data.

Reviewed-by: Anthony Koo <anthony.koo@amd.com>
Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: Josip Pavic <josip.pavic@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dmub/inc/dmub_cmd.h

index 7fea9bec7b64b26e3156f21d69f935141d966a73..87f2e4e38f9a0066a52666737ef3172bedd5a32b 100644 (file)
@@ -3960,6 +3960,11 @@ enum dmub_cmd_abm_type {
         * Set ABM Events
         */
        DMUB_CMD__ABM_SET_EVENT = 9,
+
+       /**
+        * Get the current ACE curve.
+        */
+       DMUB_CMD__ABM_GET_ACE_CURVE = 10,
 };
 
 struct abm_ace_curve {
@@ -4488,6 +4493,55 @@ struct dmub_rb_cmd_abm_query_caps {
        } data;
 };
 
+/**
+ * enum dmub_abm_ace_curve_type - ACE curve type.
+ */
+enum dmub_abm_ace_curve_type {
+       /**
+        * ACE curve as defined by the SW layer.
+        */
+       ABM_ACE_CURVE_TYPE__SW = 0,
+       /**
+        * ACE curve as defined by the SW to HW translation interface layer.
+        */
+       ABM_ACE_CURVE_TYPE__SW_IF = 1,
+};
+
+/**
+ * Definition of a DMUB_CMD__ABM_GET_ACE_CURVE command.
+ */
+struct dmub_rb_cmd_abm_get_ace_curve {
+       /**
+        * Command header.
+        */
+       struct dmub_cmd_header header;
+
+       /**
+        * Address where ACE curve should be copied.
+        */
+       union dmub_addr dest;
+
+       /**
+        * Type of ACE curve being queried.
+        */
+       enum dmub_abm_ace_curve_type ace_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.
  */
@@ -4521,6 +4575,7 @@ struct dmub_rb_cmd_abm_save_restore {
 /**
  * Data passed from driver to FW in a DMUB_CMD__ABM_SET_EVENT command.
  */
+
 struct dmub_cmd_abm_set_event_data {
 
        /**
@@ -5102,6 +5157,11 @@ union dmub_rb_cmd {
         */
        struct dmub_rb_cmd_abm_query_caps abm_query_caps;
 
+       /**
+        * Definition of a DMUB_CMD__ABM_GET_ACE_CURVE command.
+        */
+       struct dmub_rb_cmd_abm_get_ace_curve abm_get_ace_curve;
+
        /**
         * Definition of a DMUB_CMD__ABM_SET_EVENT command.
         */