mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
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: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav 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
This commit is contained in:
@@ -274,7 +274,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
|
||||
|
||||
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);
|
||||
|
||||
if (phys_enc->hw_cdm)
|
||||
@@ -414,7 +414,7 @@ static void dpu_encoder_phys_vid_enable(struct dpu_encoder_phys *phys_enc)
|
||||
|
||||
ctl = phys_enc->hw_ctl;
|
||||
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");
|
||||
|
||||
|
||||
@@ -326,7 +326,8 @@ static void dpu_encoder_phys_wb_setup(
|
||||
|
||||
wb_job = wb_enc->wb_job;
|
||||
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",
|
||||
hw_wb->idx - WB_0, mode.name,
|
||||
@@ -576,8 +577,8 @@ static void dpu_encoder_phys_wb_prepare_wb_job(struct dpu_encoder_phys *phys_enc
|
||||
|
||||
format = msm_framebuffer_format(job->fb);
|
||||
|
||||
wb_cfg->dest.format = dpu_get_dpu_format_ext(
|
||||
format->pixel_format, job->fb->modifier);
|
||||
wb_cfg->dest.format = phys_enc->dpu_kms->base.funcs->get_format(&phys_enc->dpu_kms->base,
|
||||
format->pixel_format, job->fb->modifier);
|
||||
if (!wb_cfg->dest.format) {
|
||||
/* this error should be detected during atomic_check */
|
||||
DPU_ERROR("failed to get format %p4cc\n", &format->pixel_format);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,17 +9,6 @@
|
||||
#include "msm_gem.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
|
||||
* @format: dpu format
|
||||
@@ -42,18 +31,6 @@ static inline bool dpu_find_format(u32 format, const u32 *supported_formats,
|
||||
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 non-standard, i.e. modified format
|
||||
|
||||
@@ -270,16 +270,6 @@ enum dpu_vbif {
|
||||
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
|
||||
* Desribes how the 3d data is blended
|
||||
|
||||
@@ -982,7 +982,7 @@ static const struct msm_kms_funcs kms_funcs = {
|
||||
.enable_vblank = dpu_kms_enable_vblank,
|
||||
.disable_vblank = dpu_kms_disable_vblank,
|
||||
.check_modified_format = dpu_format_check_modified_format,
|
||||
.get_format = dpu_get_msm_format,
|
||||
.get_format = mdp_get_format,
|
||||
.destroy = dpu_kms_destroy,
|
||||
.snapshot = dpu_kms_mdp_snapshot,
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
|
||||
@@ -617,6 +617,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu,
|
||||
{
|
||||
const struct msm_format *fmt;
|
||||
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);
|
||||
u32 fill_color = (color & 0xFFFFFF) | ((alpha & 0xFF) << 24);
|
||||
|
||||
@@ -626,7 +627,7 @@ static void _dpu_plane_color_fill(struct dpu_plane *pdpu,
|
||||
* select fill format to match user property expectation,
|
||||
* 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 */
|
||||
if (!fmt)
|
||||
return;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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_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
|
||||
* @pixel_format: format fourcc
|
||||
|
||||
@@ -78,8 +78,6 @@ void mdp_irq_update(struct mdp_kms *mdp_kms);
|
||||
* pixel format helpers:
|
||||
*/
|
||||
|
||||
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, uint64_t modifier);
|
||||
|
||||
/* MDP capabilities */
|
||||
#define MDP_CAP_SMP BIT(0) /* Shared Memory Pool */
|
||||
#define MDP_CAP_DSC BIT(1) /* VESA Display Stream Compression */
|
||||
|
||||
@@ -239,6 +239,8 @@ struct msm_drm_private {
|
||||
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;
|
||||
|
||||
int msm_atomic_init_pending_timer(struct msm_pending_timer *timer,
|
||||
|
||||
Reference in New Issue
Block a user