disp: msm: dp: set the output format YUV or RGB

When doing mode set, check the given videomode, if it
can be only supported in YCBCR420, set the output
format to YUV420.

Change-Id: I74224e5ad70f4fd8834b5b1e19109d4868cc14ff
Signed-off-by: Yuan Zhao <yzhao@codeaurora.org>
Bu işleme şunda yer alıyor:
Yuan Zhao
2021-01-13 12:51:12 +08:00
işlemeyi yapan: Gerrit - the friendly Code Review server
ebeveyn 45644f811d
işleme a264f27680
2 değiştirilmiş dosya ile 30 ekleme ve 0 silme

Dosyayı Görüntüle

@@ -2968,6 +2968,21 @@ static void dp_panel_convert_to_dp_mode(struct dp_panel *dp_panel,
comp_info->comp_ratio = DP_COMPRESSION_RATIO_NONE;
comp_info->comp_type = MSM_DISPLAY_COMPRESSION_NONE;
/* As YUV was not supported now, so set the default format to RGB */
dp_mode->output_format = DP_OUTPUT_FORMAT_RGB;
/*
* If a given videomode can be only supported in YCBCR420, set
* the output format to YUV420. While now our driver did not
* support YUV display over DP, so just place this flag here.
* When we want to support YUV, we can use this flag to do
* a lot of settings, like CDM, CSC and pixel_clock.
*/
if (drm_mode_is_420_only(&dp_panel->connector->display_info,
drm_mode)) {
dp_mode->output_format = DP_OUTPUT_FORMAT_YCBCR420;
DP_DEBUG("YCBCR420 was not supported");
}
if (dp_panel->dsc_en && dsc_cap) {
if (dp_panel_dsc_prepare_basic_params(comp_info,
dp_mode, dp_panel)) {

Dosyayı Görüntüle

@@ -35,6 +35,14 @@ enum dp_lane_count {
DP_LANE_COUNT_4 = 4,
};
enum dp_output_format {
DP_OUTPUT_FORMAT_RGB,
DP_OUTPUT_FORMAT_YCBCR420,
DP_OUTPUT_FORMAT_YCBCR422,
DP_OUTPUT_FORMAT_YCBCR444,
DP_OUTPUT_FORMAT_INVALID,
};
#define DP_MAX_DOWNSTREAM_PORTS 0x10
struct dp_panel_info {
@@ -62,6 +70,13 @@ struct dp_display_mode {
u32 capabilities;
s64 fec_overhead_fp;
s64 dsc_overhead_fp;
/**
* @output_format:
*
* This is used to indicate DP output format.
* The output format can be read from drm_mode.
*/
enum dp_output_format output_format;
};
struct dp_panel;