diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index ba3616c4dfd0..145a7c0aad29 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -98,6 +99,42 @@ void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category va_end(args); } +bool rockchip_drm_is_afbc(struct drm_plane *plane, u64 modifier) +{ + int i; + + if (modifier == DRM_FORMAT_MOD_LINEAR) + return false; + + if (!drm_is_afbc(modifier)) + return false; + + for (i = 0 ; i < plane->modifier_count; i++) + if (plane->modifiers[i] == modifier) + break; + + return (i < plane->modifier_count) ? true : false; +} +EXPORT_SYMBOL(rockchip_drm_is_afbc); + +bool rockchip_drm_is_rfbc(struct drm_plane *plane, u64 modifier) +{ + int i; + + if (modifier == DRM_FORMAT_MOD_LINEAR) + return false; + + if (!IS_ROCKCHIP_RFBC_MOD(modifier)) + return false; + + for (i = 0 ; i < plane->modifier_count; i++) + if (plane->modifiers[i] == modifier) + break; + + return (i < plane->modifier_count) ? true : false; +} +EXPORT_SYMBOL(rockchip_drm_is_rfbc); + /** * rockchip_drm_wait_vact_end * @crtc: CRTC to enable line flag diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index 9484f76616a0..923f48863005 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -633,6 +633,8 @@ int rockchip_drm_parse_colorimetry_data_block(u8 *colorimetry, const struct edid struct dma_buf *rockchip_drm_gem_prime_export(struct drm_gem_object *obj, int flags); long rockchip_drm_dclk_round_rate(u32 version, struct clk *dclk, unsigned long rate); int rockchip_drm_dclk_set_rate(u32 version, struct clk *dclk, unsigned long rate); +bool rockchip_drm_is_afbc(struct drm_plane *plane, u64 modifier); +bool rockchip_drm_is_rfbc(struct drm_plane *plane, u64 modifier); __printf(3, 4) void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category category, diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 148ae098d82e..16441a33ca18 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -795,16 +795,7 @@ static bool is_alpha_support(uint32_t format) static inline bool rockchip_afbc(struct drm_plane *plane, u64 modifier) { - int i; - - if (modifier == DRM_FORMAT_MOD_LINEAR) - return false; - - for (i = 0 ; i < plane->modifier_count; i++) - if (plane->modifiers[i] == modifier) - break; - - return (i < plane->modifier_count) ? true : false; + return rockchip_drm_is_afbc(plane, modifier); } static uint16_t scl_vop_cal_scale(enum scale_mode mode, uint32_t src, diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index a908265803ff..06b4d809852f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -2386,19 +2386,7 @@ static bool is_alpha_support(uint32_t format) static inline bool rockchip_afbc(struct drm_plane *plane, u64 modifier) { - int i; - - if (modifier == DRM_FORMAT_MOD_LINEAR) - return false; - - if (!drm_is_afbc(modifier)) - return false; - - for (i = 0 ; i < plane->modifier_count; i++) - if (plane->modifiers[i] == modifier) - break; - - return (i < plane->modifier_count) ? true : false; + return rockchip_drm_is_afbc(plane, modifier); } static inline bool rockchip_tiled(struct drm_plane *plane, u64 modifier) @@ -2420,19 +2408,7 @@ static inline bool rockchip_tiled(struct drm_plane *plane, u64 modifier) static inline bool rockchip_rfbc(struct drm_plane *plane, u64 modifier) { - int i; - - if (modifier == DRM_FORMAT_MOD_LINEAR) - return false; - - if (!IS_ROCKCHIP_RFBC_MOD(modifier)) - return false; - - for (i = 0 ; i < plane->modifier_count; i++) - if (plane->modifiers[i] == modifier) - break; - - return (i < plane->modifier_count) ? true : false; + return rockchip_drm_is_rfbc(plane, modifier); } static bool rockchip_vop2_mod_supported(struct drm_plane *plane, u32 format, u64 modifier)