From a0b4d1fa927ce9099f9c08dde79dbddfa1a76a2b Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Fri, 10 Sep 2021 16:05:16 +0800 Subject: [PATCH] drm/rockchip: driver: add interface to get format bpp drm_format_info can't offer yuv afbc bpp info, so we add this interface to replenish it. Signed-off-by: Sandy Huang Change-Id: Ib4d5f804b2ccdc20909420acd4911aa159d5a6fc --- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 22 +++++++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 4 +++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 4f69e531f9b7..62d69c449dc2 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -45,6 +45,28 @@ static bool is_support_iommu = true; static struct drm_driver rockchip_drm_driver; +uint32_t rockchip_drm_get_bpp(const struct drm_format_info *info) +{ + /* use whatever a driver has set */ + if (info->cpp[0]) + return info->cpp[0] * 8; + + switch (info->format) { + case DRM_FORMAT_YUV420_8BIT: + return 12; + case DRM_FORMAT_YUV420_10BIT: + return 15; + case DRM_FORMAT_VUY101010: + return 30; + default: + break; + } + + /* all attempts failed */ + return 0; +} +EXPORT_SYMBOL(rockchip_drm_get_bpp); + /** * rockchip_drm_of_find_possible_crtcs - find the possible CRTCs for an active * encoder port diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index b5c05cf595a7..00ec2123685e 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -9,8 +9,9 @@ #ifndef _ROCKCHIP_DRM_DRV_H #define _ROCKCHIP_DRM_DRV_H -#include #include +#include +#include #include #include #include @@ -231,6 +232,7 @@ static inline int rockchip_drm_get_sub_dev_type(void) int rockchip_drm_endpoint_is_subdriver(struct device_node *ep); uint32_t rockchip_drm_of_find_possible_crtcs(struct drm_device *dev, struct device_node *port); +uint32_t rockchip_drm_get_bpp(const struct drm_format_info *info); extern struct platform_driver cdn_dp_driver; extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;