drm: add helper functions for YCBCR420 handling
This patch adds helper functions for YCBCR 420 handling. These functions do: - check if a given video mode is YCBCR 420 only mode. - check if a given video mode is YCBCR 420 also mode. V2: Added YCBCR functions as helpers in DRM layer, instead of keeping it in I915 layer. V3: Added handling for YCBCR-420 only modes too. V4: EXPORT_SYMBOL(drm_find_hdmi_output_type) V5: Addressed review comments from Danvet: - %s/drm_find_hdmi_output_type/drm_display_info_hdmi_output_type - %s/drm_can_support_ycbcr_output/drm_display_supports_ycbcr_output - %s/drm_can_support_this_ycbcr_output/ drm_display_supports_this_ycbcr_output - pass drm_display_info instead of drm_connector for consistency - For drm_get_highest_quality_ycbcr_supported doc, move the variable description above, and then the function description. V6: Add only YCBCR420 helpers (Ville) V7: Addressed review comments from Ville - Remove cea_vic_valid() check. - Fix indentation. - Make input parameters to helpers, const. Cc: Ville Syrjala <ville.syrjala@linux.intel.com> Cc: Jose Abreu <Jose.Abreu@synopsys.com> Cc: Daniel Vetter <daniel.vetter@intel.com> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1499960000-9232-9-git-send-email-shashank.sharma@intel.com [vsyrjala: Fix sparse indentation warn] Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
This commit is contained in:
parent
e6a9a2c3dc
commit
2570fe2586
@ -1605,3 +1605,61 @@ int drm_mode_convert_umode(struct drm_display_mode *out,
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_mode_is_420_only - if a given videomode can be only supported in YCBCR420
|
||||
* output format
|
||||
*
|
||||
* @connector: drm connector under action.
|
||||
* @mode: video mode to be tested.
|
||||
*
|
||||
* Returns:
|
||||
* true if the mode can be supported in YCBCR420 format
|
||||
* false if not.
|
||||
*/
|
||||
bool drm_mode_is_420_only(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
u8 vic = drm_match_cea_mode(mode);
|
||||
|
||||
return test_bit(vic, display->hdmi.y420_vdb_modes);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_is_420_only);
|
||||
|
||||
/**
|
||||
* drm_mode_is_420_also - if a given videomode can be supported in YCBCR420
|
||||
* output format also (along with RGB/YCBCR444/422)
|
||||
*
|
||||
* @display: display under action.
|
||||
* @mode: video mode to be tested.
|
||||
*
|
||||
* Returns:
|
||||
* true if the mode can be support YCBCR420 format
|
||||
* false if not.
|
||||
*/
|
||||
bool drm_mode_is_420_also(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
u8 vic = drm_match_cea_mode(mode);
|
||||
|
||||
return test_bit(vic, display->hdmi.y420_cmdb_modes);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_is_420_also);
|
||||
/**
|
||||
* drm_mode_is_420 - if a given videomode can be supported in YCBCR420
|
||||
* output format
|
||||
*
|
||||
* @display: display under action.
|
||||
* @mode: video mode to be tested.
|
||||
*
|
||||
* Returns:
|
||||
* true if the mode can be supported in YCBCR420 format
|
||||
* false if not.
|
||||
*/
|
||||
bool drm_mode_is_420(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode)
|
||||
{
|
||||
return drm_mode_is_420_only(display, mode) ||
|
||||
drm_mode_is_420_also(display, mode);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_mode_is_420);
|
||||
|
@ -452,6 +452,12 @@ int drm_mode_convert_umode(struct drm_display_mode *out,
|
||||
const struct drm_mode_modeinfo *in);
|
||||
void drm_mode_probed_add(struct drm_connector *connector, struct drm_display_mode *mode);
|
||||
void drm_mode_debug_printmodeline(const struct drm_display_mode *mode);
|
||||
bool drm_mode_is_420_only(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode);
|
||||
bool drm_mode_is_420_also(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode);
|
||||
bool drm_mode_is_420(const struct drm_display_info *display,
|
||||
const struct drm_display_mode *mode);
|
||||
|
||||
struct drm_display_mode *drm_cvt_mode(struct drm_device *dev,
|
||||
int hdisplay, int vdisplay, int vrefresh,
|
||||
|
Loading…
Reference in New Issue
Block a user