4747
4848/* Firmware versioning. */
4949#ifdef DMUB_EXPOSE_VERSION
50- #define DMUB_FW_VERSION_GIT_HASH 0x5cac099d3
50+ #define DMUB_FW_VERSION_GIT_HASH 0xf3da2b656
5151#define DMUB_FW_VERSION_MAJOR 0
5252#define DMUB_FW_VERSION_MINOR 0
53- #define DMUB_FW_VERSION_REVISION 70
53+ #define DMUB_FW_VERSION_REVISION 71
5454#define DMUB_FW_VERSION_TEST 0
5555#define DMUB_FW_VERSION_VBIOS 0
5656#define DMUB_FW_VERSION_HOTFIX 0
@@ -309,6 +309,7 @@ struct dmcub_trace_buf_entry {
309309 * Current scratch register usage is as follows:
310310 *
311311 * SCRATCH0: FW Boot Status register
312+ * SCRATCH5: LVTMA Status Register
312313 * SCRATCH15: FW Boot Options register
313314 */
314315
@@ -335,6 +336,21 @@ enum dmub_fw_boot_status_bit {
335336 DMUB_FW_BOOT_STATUS_BIT_RESTORE_REQUIRED = (1 << 3 ), /**< 1 if driver should call restore */
336337};
337338
339+ /* Register bit definition for SCRATCH5 */
340+ union dmub_lvtma_status {
341+ struct {
342+ uint32_t psp_ok : 1 ;
343+ uint32_t edp_on : 1 ;
344+ uint32_t reserved : 30 ;
345+ } bits ;
346+ uint32_t all ;
347+ };
348+
349+ enum dmub_lvtma_status_bit {
350+ DMUB_LVTMA_STATUS_BIT_PSP_OK = (1 << 0 ),
351+ DMUB_LVTMA_STATUS_BIT_EDP_ON = (1 << 1 ),
352+ };
353+
338354/**
339355 * union dmub_fw_boot_options - Boot option definitions for SCRATCH15
340356 */
@@ -629,6 +645,10 @@ enum dmub_cmd_type {
629645 */
630646 DMUB_CMD__PANEL_CNTL = 74 ,
631647#endif
648+ /**
649+ * Command type used for EDID CEA parsing
650+ */
651+ DMUB_CMD__EDID_CEA = 79 ,
632652 /**
633653 * Command type used for all VBIOS interface commands.
634654 */
@@ -2152,6 +2172,68 @@ struct dmub_rb_cmd_lvtma_control {
21522172 struct dmub_cmd_lvtma_control_data data ;
21532173};
21542174
2175+ /**
2176+ * Maximum number of bytes a chunk sent to DMUB for parsing
2177+ */
2178+ #define DMUB_EDID_CEA_DATA_CHUNK_BYTES 8
2179+
2180+ /**
2181+ * Represent a chunk of CEA blocks sent to DMUB for parsing
2182+ */
2183+ struct dmub_cmd_send_edid_cea {
2184+ uint16_t offset ; /**< offset into the CEA block */
2185+ uint8_t length ; /**< number of bytes in payload to copy as part of CEA block */
2186+ uint16_t total_length ; /**< total length of the CEA block */
2187+ uint8_t payload [DMUB_EDID_CEA_DATA_CHUNK_BYTES ]; /**< data chunk of the CEA block */
2188+ uint8_t pad [3 ]; /**< padding and for future expansion */
2189+ };
2190+
2191+ /**
2192+ * Result of VSDB parsing from CEA block
2193+ */
2194+ struct dmub_cmd_edid_cea_amd_vsdb {
2195+ uint8_t vsdb_found ; /**< 1 if parsing has found valid AMD VSDB */
2196+ uint8_t freesync_supported ; /**< 1 if Freesync is supported */
2197+ uint16_t amd_vsdb_version ; /**< AMD VSDB version */
2198+ uint16_t min_frame_rate ; /**< Maximum frame rate */
2199+ uint16_t max_frame_rate ; /**< Minimum frame rate */
2200+ };
2201+
2202+ /**
2203+ * Result of sending a CEA chunk
2204+ */
2205+ struct dmub_cmd_edid_cea_ack {
2206+ uint16_t offset ; /**< offset of the chunk into the CEA block */
2207+ uint8_t success ; /**< 1 if this sending of chunk succeeded */
2208+ uint8_t pad ; /**< padding and for future expansion */
2209+ };
2210+
2211+ /**
2212+ * Specify whether the result is an ACK/NACK or the parsing has finished
2213+ */
2214+ enum dmub_cmd_edid_cea_reply_type {
2215+ DMUB_CMD__EDID_CEA_AMD_VSDB = 1 , /**< VSDB parsing has finished */
2216+ DMUB_CMD__EDID_CEA_ACK = 2 , /**< acknowledges the CEA sending is OK or failing */
2217+ };
2218+
2219+ /**
2220+ * Definition of a DMUB_CMD__EDID_CEA command.
2221+ */
2222+ struct dmub_rb_cmd_edid_cea {
2223+ struct dmub_cmd_header header ; /**< Command header */
2224+ union dmub_cmd_edid_cea_data {
2225+ struct dmub_cmd_send_edid_cea input ; /**< input to send CEA chunks */
2226+ struct dmub_cmd_edid_cea_output { /**< output with results */
2227+ uint8_t type ; /**< dmub_cmd_edid_cea_reply_type */
2228+ union {
2229+ struct dmub_cmd_edid_cea_amd_vsdb amd_vsdb ;
2230+ struct dmub_cmd_edid_cea_ack ack ;
2231+ };
2232+ } output ; /**< output to retrieve ACK/NACK or VSDB parsing results */
2233+ } data ; /**< Command data */
2234+
2235+ };
2236+
21552237/**
21562238 * union dmub_rb_cmd - DMUB inbox command.
21572239 */
@@ -2290,6 +2372,10 @@ union dmub_rb_cmd {
22902372 * Definition of a DMUB_CMD__VBIOS_LVTMA_CONTROL command.
22912373 */
22922374 struct dmub_rb_cmd_lvtma_control lvtma_control ;
2375+ /**
2376+ * Definition of a DMUB_CMD__EDID_CEA command.
2377+ */
2378+ struct dmub_rb_cmd_edid_cea edid_cea ;
22932379};
22942380
22952381/**
0 commit comments