dp: rx: mst: Added generic NACK reply if request is not supported.

Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
This commit is contained in:
Andrei-Liviu Simion 2015-05-13 15:25:05 -07:00 committed by Nava kishore Manne
parent 1b62220e4e
commit a2642c951b
2 changed files with 57 additions and 0 deletions

View file

@ -2388,6 +2388,21 @@
#define XDP_SBMSG_QUERY_STREAM_ENCRYPT_STATUS 0x38
/* @} */
/** @name Sideband message codes when the driver is in MST mode.
* @{
*/
#define XDP_SBMSG_NAK_REASON_WRITE_FAILURE 0x01
#define XDP_SBMSG_NAK_REASON_INVALID_RAD 0x02
#define XDP_SBMSG_NAK_REASON_CRC_FAILURE 0x03
#define XDP_SBMSG_NAK_REASON_BAD_PARAM 0x04
#define XDP_SBMSG_NAK_REASON_DEFER 0x05
#define XDP_SBMSG_NAK_REASON_LINK_FAILURE 0x06
#define XDP_SBMSG_NAK_REASON_NO_RESOURCES 0x07
#define XDP_SBMSG_NAK_REASON_DPCD_FAIL 0x08
#define XDP_SBMSG_NAK_REASON_I2C_NAK 0x09
#define XDP_SBMSG_NAK_REASON_ALLOCATE_FAIL 0x0A
/* @} */
#define XDP_RX_NUM_I2C_ENTRIES_PER_PORT 3 /**< The number of I2C user-
defined entries in the
I2C map of each port. */

View file

@ -152,6 +152,7 @@ static void XDp_RxSetLinkAddressReply(XDp *InstancePtr, XDp_SidebandMsg *Msg);
static void XDp_RxSetClearPayloadIdReply(XDp_SidebandMsg *Msg);
static void XDp_RxSetAllocPayloadReply(XDp_SidebandMsg *Msg);
static void XDp_RxSetEnumPathResReply(XDp *InstancePtr, XDp_SidebandMsg *Msg);
static void XDp_RxSetGenericNackReply(XDp *InstancePtr, XDp_SidebandMsg *Msg);
static u32 XDp_RxSetRemoteDpcdReadReply(XDp *InstancePtr, XDp_SidebandMsg *Msg);
static u32 XDp_RxSetRemoteIicReadReply(XDp *InstancePtr, XDp_SidebandMsg *Msg);
static void XDp_RxDeviceInfoToRawData(XDp *InstancePtr, XDp_SidebandMsg *Msg);
@ -2360,6 +2361,7 @@ u32 XDp_RxHandleDownReq(XDp *InstancePtr)
break;
default:
XDp_RxSetGenericNackReply(InstancePtr, &Msg);
break;
}
@ -2875,6 +2877,46 @@ static u32 XDp_RxSetRemoteIicReadReply(XDp *InstancePtr, XDp_SidebandMsg *Msg)
return XST_SUCCESS;
}
/******************************************************************************/
/**
* This function will set and format a sideband message structure for replying
* with a NAK
*
* @param Msg is a pointer to the message to be formatted.
*
* @return None.
*
* @note None.
*
*******************************************************************************/
static void XDp_RxSetGenericNackReply(XDp *InstancePtr, XDp_SidebandMsg *Msg)
{
u8 ReplyIndex = 0;
u8 GuidIndex;
Msg->Header.LinkCountTotal = 1;
Msg->Header.LinkCountRemaining = 0;
Msg->Header.BroadcastMsg = 0;
Msg->Header.PathMsg = 0;
Msg->Header.MsgHeaderLength = 3;
/* Reply type for NACK. */
Msg->Body.MsgData[ReplyIndex++] |= (1 << 7);
/* 16 bytes of GUID. */
for (GuidIndex = 0; GuidIndex < 16; GuidIndex++) {
Msg->Body.MsgData[ReplyIndex++] = (0xFF &
(InstancePtr->RxInstance.Topology.LinkAddressInfo.Guid[
GuidIndex / 4] >> (8 * (3 - (GuidIndex % 4)))));
}
/* Reason for NACK. */
Msg->Body.MsgData[ReplyIndex++] = XDP_SBMSG_NAK_REASON_WRITE_FAILURE;
/* NACK Data */
Msg->Body.MsgData[ReplyIndex++] = 0x00;
Msg->Body.MsgDataLength = ReplyIndex;
}
/******************************************************************************/
/**
* This function will set and format a sideband message structure for replying