drm/dp: Add Adaptive Sync SDP logging
Add structure representing Adaptive Sync Secondary Data Packet (AS SDP). Also, add Adaptive Sync SDP logging in drm_dp_helper.c to facilitate debugging. --v2: - Update logging. [Jani, Ankit] - Use 'as_sdp' instead of 'async' [Ankit] - Correct define placeholders to where they are actually used. [Jani] - Update members in 'as_sdp' structure to make it uniform. [Jani] --v3: - Added changes to dri-devel mailing list. No code changes. --v4: - Instead of directly using operation mode, use an enum to accommodate all operation modes (Ankit). --v5: Nit-pick changes to commit message. --v6: - Add correct place holder and name change for AS_SDP_OP_MODE. - Separate i915 changes from drm changes. - Remove extra lines. --v7: - Add drm/dp in subject line (Ankit) Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240322031157.3823909-3-mitulkumar.ajitkumar.golani@intel.com
This commit is contained in:
parent
a835b784ba
commit
0bbb8f594e
|
@ -2948,6 +2948,18 @@ void drm_dp_vsc_sdp_log(struct drm_printer *p, const struct drm_dp_vsc_sdp *vsc)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_dp_vsc_sdp_log);
|
||||
|
||||
void drm_dp_as_sdp_log(struct drm_printer *p, const struct drm_dp_as_sdp *as_sdp)
|
||||
{
|
||||
drm_printf(p, "DP SDP: AS_SDP, revision %u, length %u\n",
|
||||
as_sdp->revision, as_sdp->length);
|
||||
drm_printf(p, " vtotal: %d\n", as_sdp->vtotal);
|
||||
drm_printf(p, " target_rr: %d\n", as_sdp->target_rr);
|
||||
drm_printf(p, " duration_incr_ms: %d\n", as_sdp->duration_incr_ms);
|
||||
drm_printf(p, " duration_decr_ms: %d\n", as_sdp->duration_decr_ms);
|
||||
drm_printf(p, " operation_mode: %d\n", as_sdp->mode);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_as_sdp_log);
|
||||
|
||||
/**
|
||||
* drm_dp_as_sdp_supported() - check if adaptive sync sdp is supported
|
||||
* @aux: DisplayPort AUX channel
|
||||
|
|
|
@ -1150,6 +1150,8 @@
|
|||
|
||||
#define DP_DPRX_FEATURE_ENUMERATION_LIST_CONT_1 0x2214 /* 2.0 E11 */
|
||||
# define DP_ADAPTIVE_SYNC_SDP_SUPPORTED (1 << 0)
|
||||
# define DP_ADAPTIVE_SYNC_SDP_OPERATION_MODE GENMASK(1, 0)
|
||||
# define DP_ADAPTIVE_SYNC_SDP_LENGTH GENMASK(5, 0)
|
||||
# define DP_AS_SDP_FIRST_HALF_LINE_OR_3840_PIXEL_CYCLE_WINDOW_NOT_SUPPORTED (1 << 1)
|
||||
# define DP_VSC_EXT_SDP_FRAMEWORK_VERSION_1_SUPPORTED (1 << 4)
|
||||
|
||||
|
@ -1639,10 +1641,12 @@ enum drm_dp_phy {
|
|||
#define DP_SDP_AUDIO_COPYMANAGEMENT 0x05 /* DP 1.2 */
|
||||
#define DP_SDP_ISRC 0x06 /* DP 1.2 */
|
||||
#define DP_SDP_VSC 0x07 /* DP 1.2 */
|
||||
#define DP_SDP_ADAPTIVE_SYNC 0x22 /* DP 1.4 */
|
||||
#define DP_SDP_CAMERA_GENERIC(i) (0x08 + (i)) /* 0-7, DP 1.3 */
|
||||
#define DP_SDP_PPS 0x10 /* DP 1.4 */
|
||||
#define DP_SDP_VSC_EXT_VESA 0x20 /* DP 1.4 */
|
||||
#define DP_SDP_VSC_EXT_CEA 0x21 /* DP 1.4 */
|
||||
|
||||
/* 0x80+ CEA-861 infoframe types */
|
||||
|
||||
#define DP_SDP_AUDIO_INFOFRAME_HB2 0x1b
|
||||
|
@ -1798,4 +1802,11 @@ enum dp_content_type {
|
|||
DP_CONTENT_TYPE_GAME = 0x04,
|
||||
};
|
||||
|
||||
enum operation_mode {
|
||||
DP_AS_SDP_AVT_DYNAMIC_VTOTAL = 0x00,
|
||||
DP_AS_SDP_AVT_FIXED_VTOTAL = 0x01,
|
||||
DP_AS_SDP_FAVT_TRR_NOT_REACHED = 0x02,
|
||||
DP_AS_SDP_FAVT_TRR_REACHED = 0x03
|
||||
};
|
||||
|
||||
#endif /* _DRM_DP_H_ */
|
||||
|
|
|
@ -98,6 +98,35 @@ struct drm_dp_vsc_sdp {
|
|||
enum dp_content_type content_type;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_dp_as_sdp - drm DP Adaptive Sync SDP
|
||||
*
|
||||
* This structure represents a DP AS SDP of drm
|
||||
* It is based on DP 2.1 spec [Table 2-126: Adaptive-Sync SDP Header Bytes] and
|
||||
* [Table 2-127: Adaptive-Sync SDP Payload for DB0 through DB8]
|
||||
*
|
||||
* @sdp_type: Secondary-data packet type
|
||||
* @revision: Revision Number
|
||||
* @length: Number of valid data bytes
|
||||
* @vtotal: Minimum Vertical Vtotal
|
||||
* @target_rr: Target Refresh
|
||||
* @duration_incr_ms: Successive frame duration increase
|
||||
* @duration_decr_ms: Successive frame duration decrease
|
||||
* @operation_mode: Adaptive Sync Operation Mode
|
||||
*/
|
||||
struct drm_dp_as_sdp {
|
||||
unsigned char sdp_type;
|
||||
unsigned char revision;
|
||||
unsigned char length;
|
||||
int vtotal;
|
||||
int target_rr;
|
||||
int duration_incr_ms;
|
||||
int duration_decr_ms;
|
||||
enum operation_mode mode;
|
||||
};
|
||||
|
||||
void drm_dp_as_sdp_log(struct drm_printer *p,
|
||||
const struct drm_dp_as_sdp *as_sdp);
|
||||
void drm_dp_vsc_sdp_log(struct drm_printer *p, const struct drm_dp_vsc_sdp *vsc);
|
||||
|
||||
bool drm_dp_vsc_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
|
||||
|
|
Loading…
Reference in New Issue