forked from luck/tmp_suning_uos_patched
drm: Add logging function for DP VSC SDP
When receiving video it is very useful to be able to log DP VSC SDP. This greatly simplifies debugging. v2: Minor style fix v3: Move logging functions to drm core [Jani N] v5: Rebased v10: Rebased Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com> Reviewed-by: Uma Shankar <uma.shankar@intel.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200514060732.3378396-4-gwan-gyeong.mun@intel.com
This commit is contained in:
parent
1b404b7dbb
commit
2ba6221cca
|
@ -1629,3 +1629,177 @@ int drm_dp_set_phy_test_pattern(struct drm_dp_aux *aux,
|
|||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_set_phy_test_pattern);
|
||||
|
||||
static const char *dp_pixelformat_get_name(enum dp_pixelformat pixelformat)
|
||||
{
|
||||
if (pixelformat < 0 || pixelformat > DP_PIXELFORMAT_RESERVED)
|
||||
return "Invalid";
|
||||
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "RGB";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
return "YUV444";
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
return "YUV422";
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "YUV420";
|
||||
case DP_PIXELFORMAT_Y_ONLY:
|
||||
return "Y_ONLY";
|
||||
case DP_PIXELFORMAT_RAW:
|
||||
return "RAW";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *dp_colorimetry_get_name(enum dp_pixelformat pixelformat,
|
||||
enum dp_colorimetry colorimetry)
|
||||
{
|
||||
if (pixelformat < 0 || pixelformat > DP_PIXELFORMAT_RESERVED)
|
||||
return "Invalid";
|
||||
|
||||
switch (colorimetry) {
|
||||
case DP_COLORIMETRY_DEFAULT:
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "sRGB";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "BT.601";
|
||||
case DP_PIXELFORMAT_Y_ONLY:
|
||||
return "DICOM PS3.14";
|
||||
case DP_PIXELFORMAT_RAW:
|
||||
return "Custom Color Profile";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_RGB_WIDE_FIXED: /* and DP_COLORIMETRY_BT709_YCC */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "Wide Fixed";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "BT.709";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_RGB_WIDE_FLOAT: /* and DP_COLORIMETRY_XVYCC_601 */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "Wide Float";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "xvYCC 601";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_OPRGB: /* and DP_COLORIMETRY_XVYCC_709 */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "OpRGB";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "xvYCC 709";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_DCI_P3_RGB: /* and DP_COLORIMETRY_SYCC_601 */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "DCI-P3";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "sYCC 601";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_RGB_CUSTOM: /* and DP_COLORIMETRY_OPYCC_601 */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "Custom Profile";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "OpYCC 601";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_BT2020_RGB: /* and DP_COLORIMETRY_BT2020_CYCC */
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_RGB:
|
||||
return "BT.2020 RGB";
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "BT.2020 CYCC";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
case DP_COLORIMETRY_BT2020_YCC:
|
||||
switch (pixelformat) {
|
||||
case DP_PIXELFORMAT_YUV444:
|
||||
case DP_PIXELFORMAT_YUV422:
|
||||
case DP_PIXELFORMAT_YUV420:
|
||||
return "BT.2020 YCC";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
default:
|
||||
return "Invalid";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *dp_dynamic_range_get_name(enum dp_dynamic_range dynamic_range)
|
||||
{
|
||||
switch (dynamic_range) {
|
||||
case DP_DYNAMIC_RANGE_VESA:
|
||||
return "VESA range";
|
||||
case DP_DYNAMIC_RANGE_CTA:
|
||||
return "CTA range";
|
||||
default:
|
||||
return "Invalid";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *dp_content_type_get_name(enum dp_content_type content_type)
|
||||
{
|
||||
switch (content_type) {
|
||||
case DP_CONTENT_TYPE_NOT_DEFINED:
|
||||
return "Not defined";
|
||||
case DP_CONTENT_TYPE_GRAPHICS:
|
||||
return "Graphics";
|
||||
case DP_CONTENT_TYPE_PHOTO:
|
||||
return "Photo";
|
||||
case DP_CONTENT_TYPE_VIDEO:
|
||||
return "Video";
|
||||
case DP_CONTENT_TYPE_GAME:
|
||||
return "Game";
|
||||
default:
|
||||
return "Reserved";
|
||||
}
|
||||
}
|
||||
|
||||
void drm_dp_vsc_sdp_log(const char *level, struct device *dev,
|
||||
const struct drm_dp_vsc_sdp *vsc)
|
||||
{
|
||||
#define DP_SDP_LOG(fmt, ...) dev_printk(level, dev, fmt, ##__VA_ARGS__)
|
||||
DP_SDP_LOG("DP SDP: %s, revision %u, length %u\n", "VSC",
|
||||
vsc->revision, vsc->length);
|
||||
DP_SDP_LOG(" pixelformat: %s\n",
|
||||
dp_pixelformat_get_name(vsc->pixelformat));
|
||||
DP_SDP_LOG(" colorimetry: %s\n",
|
||||
dp_colorimetry_get_name(vsc->pixelformat, vsc->colorimetry));
|
||||
DP_SDP_LOG(" bpc: %u\n", vsc->bpc);
|
||||
DP_SDP_LOG(" dynamic range: %s\n",
|
||||
dp_dynamic_range_get_name(vsc->dynamic_range));
|
||||
DP_SDP_LOG(" content type: %s\n",
|
||||
dp_content_type_get_name(vsc->content_type));
|
||||
#undef DP_SDP_LOG
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_vsc_sdp_log);
|
||||
|
|
|
@ -1348,6 +1348,9 @@ struct drm_dp_vsc_sdp {
|
|||
enum dp_content_type content_type;
|
||||
};
|
||||
|
||||
void drm_dp_vsc_sdp_log(const char *level, struct device *dev,
|
||||
const struct drm_dp_vsc_sdp *vsc);
|
||||
|
||||
int drm_dp_psr_setup_time(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]);
|
||||
|
||||
static inline int
|
||||
|
|
Loading…
Reference in New Issue
Block a user