Commit b228501f authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

drm/msm: merge dpu format database to MDP formats

Finally remove duplication between DPU and generic MDP code by merging
DPU format lists to the MDP format database.
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/590435/
Link: https://lore.kernel.org/r/20240420-dpu-format-v2-8-9e93226cbffd@linaro.org
parent f4f39207
...@@ -274,7 +274,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine( ...@@ -274,7 +274,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
drm_mode_to_intf_timing_params(phys_enc, &mode, &timing_params); drm_mode_to_intf_timing_params(phys_enc, &mode, &timing_params);
fmt = dpu_get_dpu_format(fmt_fourcc); fmt = phys_enc->dpu_kms->base.funcs->get_format(&phys_enc->dpu_kms->base, fmt_fourcc, 0);
DPU_DEBUG_VIDENC(phys_enc, "fmt_fourcc 0x%X\n", fmt_fourcc); DPU_DEBUG_VIDENC(phys_enc, "fmt_fourcc 0x%X\n", fmt_fourcc);
if (phys_enc->hw_cdm) if (phys_enc->hw_cdm)
...@@ -414,7 +414,7 @@ static void dpu_encoder_phys_vid_enable(struct dpu_encoder_phys *phys_enc) ...@@ -414,7 +414,7 @@ static void dpu_encoder_phys_vid_enable(struct dpu_encoder_phys *phys_enc)
ctl = phys_enc->hw_ctl; ctl = phys_enc->hw_ctl;
fmt_fourcc = dpu_encoder_get_drm_fmt(phys_enc); fmt_fourcc = dpu_encoder_get_drm_fmt(phys_enc);
fmt = dpu_get_dpu_format(fmt_fourcc); fmt = phys_enc->dpu_kms->base.funcs->get_format(&phys_enc->dpu_kms->base, fmt_fourcc, 0);
DPU_DEBUG_VIDENC(phys_enc, "\n"); DPU_DEBUG_VIDENC(phys_enc, "\n");
......
...@@ -326,7 +326,8 @@ static void dpu_encoder_phys_wb_setup( ...@@ -326,7 +326,8 @@ static void dpu_encoder_phys_wb_setup(
wb_job = wb_enc->wb_job; wb_job = wb_enc->wb_job;
format = msm_framebuffer_format(wb_enc->wb_job->fb); format = msm_framebuffer_format(wb_enc->wb_job->fb);
dpu_fmt = dpu_get_dpu_format_ext(format->pixel_format, wb_job->fb->modifier); dpu_fmt = phys_enc->dpu_kms->base.funcs->get_format(&phys_enc->dpu_kms->base,
format->pixel_format, wb_job->fb->modifier);
DPU_DEBUG("[mode_set:%d, \"%s\",%d,%d]\n", DPU_DEBUG("[mode_set:%d, \"%s\",%d,%d]\n",
hw_wb->idx - WB_0, mode.name, hw_wb->idx - WB_0, mode.name,
...@@ -576,7 +577,7 @@ static void dpu_encoder_phys_wb_prepare_wb_job(struct dpu_encoder_phys *phys_enc ...@@ -576,7 +577,7 @@ static void dpu_encoder_phys_wb_prepare_wb_job(struct dpu_encoder_phys *phys_enc
format = msm_framebuffer_format(job->fb); format = msm_framebuffer_format(job->fb);
wb_cfg->dest.format = dpu_get_dpu_format_ext( wb_cfg->dest.format = phys_enc->dpu_kms->base.funcs->get_format(&phys_enc->dpu_kms->base,
format->pixel_format, job->fb->modifier); format->pixel_format, job->fb->modifier);
if (!wb_cfg->dest.format) { if (!wb_cfg->dest.format) {
/* this error should be detected during atomic_check */ /* this error should be detected during atomic_check */
......
This diff is collapsed.
...@@ -9,17 +9,6 @@ ...@@ -9,17 +9,6 @@
#include "msm_gem.h" #include "msm_gem.h"
#include "dpu_hw_mdss.h" #include "dpu_hw_mdss.h"
/**
* dpu_get_dpu_format_ext() - Returns dpu format structure pointer.
* @format: DRM FourCC Code
* @modifiers: format modifier array from client, one per plane
*/
const struct msm_format *dpu_get_dpu_format_ext(
const uint32_t format,
const uint64_t modifier);
#define dpu_get_dpu_format(f) dpu_get_dpu_format_ext(f, 0)
/** /**
* dpu_find_format - validate if the pixel format is supported * dpu_find_format - validate if the pixel format is supported
* @format: dpu format * @format: dpu format
...@@ -42,18 +31,6 @@ static inline bool dpu_find_format(u32 format, const u32 *supported_formats, ...@@ -42,18 +31,6 @@ static inline bool dpu_find_format(u32 format, const u32 *supported_formats,
return false; return false;
} }
/**
* dpu_get_msm_format - get an msm_format by its msm_format base
* callback function registers with the msm_kms layer
* @kms: kms driver
* @format: DRM FourCC Code
* @modifiers: data layout modifier
*/
const struct msm_format *dpu_get_msm_format(
struct msm_kms *kms,
const uint32_t format,
const uint64_t modifiers);
/** /**
* dpu_format_check_modified_format - validate format and buffers for * dpu_format_check_modified_format - validate format and buffers for
* dpu non-standard, i.e. modified format * dpu non-standard, i.e. modified format
......
...@@ -270,16 +270,6 @@ enum dpu_vbif { ...@@ -270,16 +270,6 @@ enum dpu_vbif {
VBIF_MAX, VBIF_MAX,
}; };
/**
* DPU HW,Component order color map
*/
enum {
C0_G_Y = 0,
C1_B_Cb = 1,
C2_R_Cr = 2,
C3_ALPHA = 3
};
/** /**
* enum dpu_3d_blend_mode * enum dpu_3d_blend_mode
* Desribes how the 3d data is blended * Desribes how the 3d data is blended
......
...@@ -982,7 +982,7 @@ static const struct msm_kms_funcs kms_funcs = { ...@@ -982,7 +982,7 @@ static const struct msm_kms_funcs kms_funcs = {
.enable_vblank = dpu_kms_enable_vblank, .enable_vblank = dpu_kms_enable_vblank,
.disable_vblank = dpu_kms_disable_vblank, .disable_vblank = dpu_kms_disable_vblank,
.check_modified_format = dpu_format_check_modified_format, .check_modified_format = dpu_format_check_modified_format,
.get_format = dpu_get_msm_format, .get_format = mdp_get_format,
.destroy = dpu_kms_destroy, .destroy = dpu_kms_destroy,
.snapshot = dpu_kms_mdp_snapshot, .snapshot = dpu_kms_mdp_snapshot,
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
......
...@@ -617,6 +617,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu, ...@@ -617,6 +617,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu,
{ {
const struct msm_format *fmt; const struct msm_format *fmt;
const struct drm_plane *plane = &pdpu->base; const struct drm_plane *plane = &pdpu->base;
struct msm_drm_private *priv = plane->dev->dev_private;
struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state); struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state);
u32 fill_color = (color & 0xFFFFFF) | ((alpha & 0xFF) << 24); u32 fill_color = (color & 0xFFFFFF) | ((alpha & 0xFF) << 24);
...@@ -626,7 +627,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu, ...@@ -626,7 +627,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu,
* select fill format to match user property expectation, * select fill format to match user property expectation,
* h/w only supports RGB variants * h/w only supports RGB variants
*/ */
fmt = dpu_get_dpu_format(DRM_FORMAT_ABGR8888); fmt = priv->kms->funcs->get_format(priv->kms, DRM_FORMAT_ABGR8888, 0);
/* should not happen ever */ /* should not happen ever */
if (!fmt) if (!fmt)
return; return;
......
This diff is collapsed.
...@@ -24,6 +24,16 @@ enum msm_format_flags { ...@@ -24,6 +24,16 @@ enum msm_format_flags {
#define MSM_FORMAT_FLAG_UNPACK_TIGHT BIT(MSM_FORMAT_FLAG_UNPACK_TIGHT_BIT) #define MSM_FORMAT_FLAG_UNPACK_TIGHT BIT(MSM_FORMAT_FLAG_UNPACK_TIGHT_BIT)
#define MSM_FORMAT_FLAG_UNPACK_ALIGN_MSB BIT(MSM_FORMAT_FLAG_UNPACK_ALIGN_MSB_BIT) #define MSM_FORMAT_FLAG_UNPACK_ALIGN_MSB BIT(MSM_FORMAT_FLAG_UNPACK_ALIGN_MSB_BIT)
/**
* DPU HW,Component order color map
*/
enum {
C0_G_Y = 0,
C1_B_Cb = 1,
C2_R_Cr = 2,
C3_ALPHA = 3
};
/** /**
* struct msm_format: defines the format configuration * struct msm_format: defines the format configuration
* @pixel_format: format fourcc * @pixel_format: format fourcc
......
...@@ -78,8 +78,6 @@ void mdp_irq_update(struct mdp_kms *mdp_kms); ...@@ -78,8 +78,6 @@ void mdp_irq_update(struct mdp_kms *mdp_kms);
* pixel format helpers: * pixel format helpers:
*/ */
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, uint64_t modifier);
/* MDP capabilities */ /* MDP capabilities */
#define MDP_CAP_SMP BIT(0) /* Shared Memory Pool */ #define MDP_CAP_SMP BIT(0) /* Shared Memory Pool */
#define MDP_CAP_DSC BIT(1) /* VESA Display Stream Compression */ #define MDP_CAP_DSC BIT(1) /* VESA Display Stream Compression */
......
...@@ -239,6 +239,8 @@ struct msm_drm_private { ...@@ -239,6 +239,8 @@ struct msm_drm_private {
bool disable_err_irq; bool disable_err_irq;
}; };
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, uint64_t modifier);
struct msm_pending_timer; struct msm_pending_timer;
int msm_atomic_init_pending_timer(struct msm_pending_timer *timer, int msm_atomic_init_pending_timer(struct msm_pending_timer *timer,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment