Commit 4a8396d5 authored by Chun-Liang Chang's avatar Chun-Liang Chang Committed by Alex Deucher
Browse files

drm/amd/display: Add Read Histogram command header



[Why]
Read the histogram for VariBright validation

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

Reviewed-by: default avatarJun Lei <jun.lei@amd.com>
Signed-off-by: default avatarChun-Liang Chang <Chun-Liang.Chang@amd.com>
Signed-off-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8b8a602c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
+59 −0
Original line number Diff line number Diff line
@@ -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.
	 */