drm/amd/display: Update dmub header to match DMUB
[WHY] Last PR missed name of a struct to match in DMUB [HOW] Update the logic in dmub_cmh.h header Tested-by: Daniel Wheeler <Daniel.Wheeler@amd.com> Reviewed-by: Meenakshikumar Somasundaram <Meenakshikumar.Somasundaram@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Mustapha Ghaddar <mghaddar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
60b7342974
commit
8af54c61cc
@ -130,6 +130,17 @@ enum dmub_notification_type {
|
||||
DMUB_NOTIFICATION_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* DPIA NOTIFICATION Response Type
|
||||
*/
|
||||
enum dpia_notify_bw_alloc_status {
|
||||
|
||||
DPIA_BW_REQ_FAILED = 0,
|
||||
DPIA_BW_REQ_SUCCESS,
|
||||
DPIA_EST_BW_CHANGED,
|
||||
DPIA_BW_ALLOC_CAPS_CHANGED
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dmub_region - dmub hw memory region
|
||||
* @base: base address for region, must be 256 byte aligned
|
||||
@ -465,7 +476,10 @@ struct dmub_notification {
|
||||
struct aux_reply_data aux_reply;
|
||||
enum dp_hpd_status hpd_status;
|
||||
enum set_config_status sc_status;
|
||||
struct dpia_notification_reply_data bw_alloc_reply;
|
||||
/**
|
||||
* DPIA notification command.
|
||||
*/
|
||||
struct dmub_rb_cmd_dpia_notification dpia_notification;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -770,7 +770,10 @@ enum dmub_out_cmd_type {
|
||||
* Command type used for SET_CONFIG Reply notification
|
||||
*/
|
||||
DMUB_OUT_CMD__SET_CONFIG_REPLY = 3,
|
||||
DMUB_OUT_CMD__DPIA_NOTIFICATION = 5
|
||||
/**
|
||||
* Command type used for USB4 DPIA notification
|
||||
*/
|
||||
DMUB_OUT_CMD__DPIA_NOTIFICATION = 5,
|
||||
};
|
||||
|
||||
/* DMUB_CMD__DPIA command sub-types. */
|
||||
@ -780,6 +783,11 @@ enum dmub_cmd_dpia_type {
|
||||
DMUB_CMD__DPIA_MST_ALLOC_SLOTS = 2,
|
||||
};
|
||||
|
||||
/* DMUB_OUT_CMD__DPIA_NOTIFICATION command types. */
|
||||
enum dmub_cmd_dpia_notification_type {
|
||||
DPIA_NOTIFY__BW_ALLOCATION = 0,
|
||||
};
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
/**
|
||||
@ -1517,84 +1525,6 @@ struct dp_hpd_data {
|
||||
uint8_t pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* DPIA NOTIFICATION Response Type
|
||||
*/
|
||||
enum dpia_notify_bw_alloc_status {
|
||||
|
||||
DPIA_BW_REQ_FAILED = 0,
|
||||
DPIA_BW_REQ_SUCCESS,
|
||||
DPIA_EST_BW_CHANGED,
|
||||
DPIA_BW_ALLOC_CAPS_CHANGED
|
||||
};
|
||||
|
||||
/* DMUB_OUT_CMD__DPIA_NOTIFY Reply command - OutBox Cmd */
|
||||
/**
|
||||
* Data passed to driver from FW in a DMUB_OUT_CMD__DPIA_NOTIFY command.
|
||||
*/
|
||||
struct dpia_notification_reply_data {
|
||||
uint8_t allocated_bw;
|
||||
uint8_t estimated_bw;
|
||||
};
|
||||
|
||||
struct dpia_notification_common {
|
||||
bool shared;
|
||||
};
|
||||
|
||||
struct dpia_bw_allocation_notify_data {
|
||||
union {
|
||||
struct {
|
||||
uint16_t cm_bw_alloc_support: 1; /**< USB4 CM BW Allocation mode support */
|
||||
uint16_t bw_request_failed: 1; /**< BW_Request_Failed */
|
||||
uint16_t bw_request_succeeded: 1; /**< BW_Request_Succeeded */
|
||||
uint16_t est_bw_changed: 1; /**< Estimated_BW changed */
|
||||
uint16_t bw_alloc_cap_changed: 1; /**< BW_Allocation_Capabiity_Changed */
|
||||
uint16_t reserved: 11;
|
||||
} bits;
|
||||
uint16_t flags;
|
||||
};
|
||||
uint8_t cm_id; /**< CM ID */
|
||||
uint8_t group_id; /**< Group ID */
|
||||
uint8_t granularity; /**< BW Allocation Granularity */
|
||||
uint8_t estimated_bw; /**< Estimated_BW */
|
||||
uint8_t allocated_bw; /**< Allocated_BW */
|
||||
uint8_t reserved;
|
||||
};
|
||||
|
||||
union dpia_notification_data {
|
||||
struct dpia_notification_common common_data;
|
||||
struct dpia_bw_allocation_notify_data dpia_bw_alloc; /**< Used for DPIA BW Allocation mode notification */
|
||||
};
|
||||
|
||||
enum dmub_cmd_dpia_notification_type {
|
||||
DPIA_NOTIFY__BW_ALLOCATION = 0,
|
||||
};
|
||||
|
||||
struct dpia_notification_header {
|
||||
uint8_t instance; /**< DPIA Instance */
|
||||
uint8_t reserved[3];
|
||||
enum dmub_cmd_dpia_notification_type type; /**< DPIA notification type */
|
||||
};
|
||||
|
||||
struct dpia_notification_payload {
|
||||
struct dpia_notification_header header;
|
||||
union dpia_notification_data data; /**< DPIA notification data */
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DMUB_OUT_CMD__DPIA_NOTIFY command.
|
||||
*/
|
||||
struct dmub_rb_cmd_dpia_notification {
|
||||
/**
|
||||
* Command header.
|
||||
*/
|
||||
struct dmub_cmd_header header; /**< DPIA notification header */
|
||||
/**
|
||||
* Data passed to driver from FW in a DMUB_OUT_CMD__DPIA_NOTIFY command.
|
||||
*/
|
||||
struct dpia_notification_payload payload; /**< DPIA notification payload */
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DMUB_OUT_CMD__DP_HPD_NOTIFY command.
|
||||
*/
|
||||
@ -1636,6 +1566,79 @@ struct dmub_rb_cmd_dp_set_config_reply {
|
||||
struct set_config_reply_control_data set_config_reply_control;
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DPIA notification header
|
||||
*/
|
||||
struct dpia_notification_header {
|
||||
uint8_t instance; /**< DPIA Instance */
|
||||
uint8_t reserved[3];
|
||||
enum dmub_cmd_dpia_notification_type type; /**< DPIA notification type */
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of the common data struct of DPIA notification
|
||||
*/
|
||||
struct dpia_notification_common {
|
||||
uint8_t cmd_buffer[DMUB_RB_CMD_SIZE - sizeof(struct dmub_cmd_header)
|
||||
- sizeof(struct dpia_notification_header)];
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DPIA notification data
|
||||
*/
|
||||
struct dpia_bw_allocation_notify_data {
|
||||
union {
|
||||
struct {
|
||||
uint16_t cm_bw_alloc_support: 1; /**< USB4 CM BW Allocation mode support */
|
||||
uint16_t bw_request_failed: 1; /**< BW_Request_Failed */
|
||||
uint16_t bw_request_succeeded: 1; /**< BW_Request_Succeeded */
|
||||
uint16_t est_bw_changed: 1; /**< Estimated_BW changed */
|
||||
uint16_t bw_alloc_cap_changed: 1; /**< BW_Allocation_Capabiity_Changed */
|
||||
uint16_t reserved: 11; /**< Reserved */
|
||||
} bits;
|
||||
|
||||
uint16_t flags;
|
||||
};
|
||||
|
||||
uint8_t cm_id; /**< CM ID */
|
||||
uint8_t group_id; /**< Group ID */
|
||||
uint8_t granularity; /**< BW Allocation Granularity */
|
||||
uint8_t estimated_bw; /**< Estimated_BW */
|
||||
uint8_t allocated_bw; /**< Allocated_BW */
|
||||
uint8_t reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* union dpia_notify_data_type - DPIA Notification in Outbox command
|
||||
*/
|
||||
union dpia_notification_data {
|
||||
/**
|
||||
* DPIA Notification for common data struct
|
||||
*/
|
||||
struct dpia_notification_common common_data;
|
||||
|
||||
/**
|
||||
* DPIA Notification for DP BW Allocation support
|
||||
*/
|
||||
struct dpia_bw_allocation_notify_data dpia_bw_alloc;
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DPIA notification payload
|
||||
*/
|
||||
struct dpia_notification_payload {
|
||||
struct dpia_notification_header header;
|
||||
union dpia_notification_data data; /**< DPIA notification payload data */
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition of a DMUB_OUT_CMD__DPIA_NOTIFICATION command.
|
||||
*/
|
||||
struct dmub_rb_cmd_dpia_notification {
|
||||
struct dmub_cmd_header header; /**< DPIA notification header */
|
||||
struct dpia_notification_payload payload; /**< DPIA notification payload */
|
||||
};
|
||||
|
||||
/**
|
||||
* Data passed from driver to FW in a DMUB_CMD__QUERY_HPD_STATE command.
|
||||
*/
|
||||
@ -3502,9 +3505,9 @@ union dmub_rb_out_cmd {
|
||||
*/
|
||||
struct dmub_rb_cmd_dp_set_config_reply set_config_reply;
|
||||
/**
|
||||
* BW ALLOCATION notification command.
|
||||
* DPIA notification command.
|
||||
*/
|
||||
struct dmub_rb_cmd_dpia_notification dpia_notify;
|
||||
struct dmub_rb_cmd_dpia_notification dpia_notification;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
|
@ -94,22 +94,22 @@ enum dmub_status dmub_srv_stat_get_notification(struct dmub_srv *dmub,
|
||||
break;
|
||||
case DMUB_OUT_CMD__DPIA_NOTIFICATION:
|
||||
notify->type = DMUB_NOTIFICATION_DPIA_NOTIFICATION;
|
||||
notify->link_index = cmd.dpia_notify.payload.header.instance;
|
||||
notify->link_index = cmd.dpia_notification.payload.header.instance;
|
||||
|
||||
if (cmd.dpia_notify.payload.header.type == DPIA_NOTIFY__BW_ALLOCATION) {
|
||||
if (cmd.dpia_notification.payload.header.type == DPIA_NOTIFY__BW_ALLOCATION) {
|
||||
|
||||
notify->bw_alloc_reply.estimated_bw =
|
||||
cmd.dpia_notify.payload.data.dpia_bw_alloc.estimated_bw;
|
||||
notify->bw_alloc_reply.allocated_bw =
|
||||
cmd.dpia_notify.payload.data.dpia_bw_alloc.allocated_bw;
|
||||
notify->dpia_notification.payload.data.dpia_bw_alloc.estimated_bw =
|
||||
cmd.dpia_notification.payload.data.dpia_bw_alloc.estimated_bw;
|
||||
notify->dpia_notification.payload.data.dpia_bw_alloc.allocated_bw =
|
||||
cmd.dpia_notification.payload.data.dpia_bw_alloc.allocated_bw;
|
||||
|
||||
if (cmd.dpia_notify.payload.data.dpia_bw_alloc.bits.bw_request_failed)
|
||||
if (cmd.dpia_notification.payload.data.dpia_bw_alloc.bits.bw_request_failed)
|
||||
notify->result = DPIA_BW_REQ_FAILED;
|
||||
else if (cmd.dpia_notify.payload.data.dpia_bw_alloc.bits.bw_request_succeeded)
|
||||
else if (cmd.dpia_notification.payload.data.dpia_bw_alloc.bits.bw_request_succeeded)
|
||||
notify->result = DPIA_BW_REQ_SUCCESS;
|
||||
else if (cmd.dpia_notify.payload.data.dpia_bw_alloc.bits.est_bw_changed)
|
||||
else if (cmd.dpia_notification.payload.data.dpia_bw_alloc.bits.est_bw_changed)
|
||||
notify->result = DPIA_EST_BW_CHANGED;
|
||||
else if (cmd.dpia_notify.payload.data.dpia_bw_alloc.bits.bw_alloc_cap_changed)
|
||||
else if (cmd.dpia_notification.payload.data.dpia_bw_alloc.bits.bw_alloc_cap_changed)
|
||||
notify->result = DPIA_BW_ALLOC_CAPS_CHANGED;
|
||||
}
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user