Commit 0e67f514 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

drm/msm: merge dpu_format and mdp_format in struct msm_format

Structures dpu_format and mdp_format are largely the same structures.
In order to remove duplication between format databases, merge these two
stucture definitions into the global struct msm_format.
Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/590434/
Link: https://lore.kernel.org/r/20240420-dpu-format-v2-5-9e93226cbffd@linaro.org
parent 7120d8a0
...@@ -320,7 +320,7 @@ static bool dpu_crtc_get_scanout_position(struct drm_crtc *crtc, ...@@ -320,7 +320,7 @@ static bool dpu_crtc_get_scanout_position(struct drm_crtc *crtc,
} }
static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer,
struct dpu_plane_state *pstate, struct dpu_format *format) struct dpu_plane_state *pstate, const struct msm_format *format)
{ {
struct dpu_hw_mixer *lm = mixer->hw_lm; struct dpu_hw_mixer *lm = mixer->hw_lm;
uint32_t blend_op; uint32_t blend_op;
...@@ -363,7 +363,7 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, ...@@ -363,7 +363,7 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer,
fg_alpha, bg_alpha, blend_op); fg_alpha, bg_alpha, blend_op);
DRM_DEBUG_ATOMIC("format:%p4cc, alpha_en:%u blend_op:0x%x\n", DRM_DEBUG_ATOMIC("format:%p4cc, alpha_en:%u blend_op:0x%x\n",
&format->base.pixel_format, format->alpha_enable, blend_op); &format->pixel_format, format->alpha_enable, blend_op);
} }
static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc)
...@@ -395,7 +395,7 @@ static void _dpu_crtc_blend_setup_pipe(struct drm_crtc *crtc, ...@@ -395,7 +395,7 @@ static void _dpu_crtc_blend_setup_pipe(struct drm_crtc *crtc,
struct dpu_crtc_mixer *mixer, struct dpu_crtc_mixer *mixer,
u32 num_mixers, u32 num_mixers,
enum dpu_stage stage, enum dpu_stage stage,
struct dpu_format *format, const struct msm_format *format,
uint64_t modifier, uint64_t modifier,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
unsigned int stage_idx, unsigned int stage_idx,
...@@ -412,7 +412,7 @@ static void _dpu_crtc_blend_setup_pipe(struct drm_crtc *crtc, ...@@ -412,7 +412,7 @@ static void _dpu_crtc_blend_setup_pipe(struct drm_crtc *crtc,
trace_dpu_crtc_setup_mixer(DRMID(crtc), DRMID(plane), trace_dpu_crtc_setup_mixer(DRMID(crtc), DRMID(plane),
state, to_dpu_plane_state(state), stage_idx, state, to_dpu_plane_state(state), stage_idx,
format->base.pixel_format, format->pixel_format,
modifier); modifier);
DRM_DEBUG_ATOMIC("crtc %d stage:%d - plane %d sspp %d fb %d multirect_idx %d\n", DRM_DEBUG_ATOMIC("crtc %d stage:%d - plane %d sspp %d fb %d multirect_idx %d\n",
...@@ -440,7 +440,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, ...@@ -440,7 +440,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
struct drm_plane_state *state; struct drm_plane_state *state;
struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
struct dpu_plane_state *pstate = NULL; struct dpu_plane_state *pstate = NULL;
struct dpu_format *format; const struct msm_format *format;
struct dpu_hw_ctl *ctl = mixer->lm_ctl; struct dpu_hw_ctl *ctl = mixer->lm_ctl;
uint32_t lm_idx; uint32_t lm_idx;
...@@ -459,7 +459,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, ...@@ -459,7 +459,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
pstate = to_dpu_plane_state(state); pstate = to_dpu_plane_state(state);
fb = state->fb; fb = state->fb;
format = to_dpu_format(msm_framebuffer_format(pstate->base.fb)); format = msm_framebuffer_format(pstate->base.fb);
if (pstate->stage == DPU_STAGE_BASE && format->alpha_enable) if (pstate->stage == DPU_STAGE_BASE && format->alpha_enable)
bg_alpha_enable = true; bg_alpha_enable = true;
......
...@@ -675,7 +675,7 @@ static int dpu_encoder_virt_atomic_check( ...@@ -675,7 +675,7 @@ static int dpu_encoder_virt_atomic_check(
if (disp_info->intf_type == INTF_WB && conn_state->writeback_job) { if (disp_info->intf_type == INTF_WB && conn_state->writeback_job) {
fb = conn_state->writeback_job->fb; fb = conn_state->writeback_job->fb;
if (fb && DPU_FORMAT_IS_YUV(to_dpu_format(msm_framebuffer_format(fb)))) if (fb && MSM_FORMAT_IS_YUV(msm_framebuffer_format(fb)))
topology.needs_cdm = true; topology.needs_cdm = true;
} else if (disp_info->intf_type == INTF_DP) { } else if (disp_info->intf_type == INTF_DP) {
if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode)) if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode))
...@@ -2184,7 +2184,7 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc) ...@@ -2184,7 +2184,7 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc)
} }
void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc, void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc,
const struct dpu_format *dpu_fmt, const struct msm_format *dpu_fmt,
u32 output_type) u32 output_type)
{ {
struct dpu_hw_cdm *hw_cdm; struct dpu_hw_cdm *hw_cdm;
...@@ -2202,9 +2202,9 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc, ...@@ -2202,9 +2202,9 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc,
if (!hw_cdm) if (!hw_cdm)
return; return;
if (!DPU_FORMAT_IS_YUV(dpu_fmt)) { if (!MSM_FORMAT_IS_YUV(dpu_fmt)) {
DPU_DEBUG("[enc:%d] cdm_disable fmt:%p4cc\n", DRMID(phys_enc->parent), DPU_DEBUG("[enc:%d] cdm_disable fmt:%p4cc\n", DRMID(phys_enc->parent),
&dpu_fmt->base.pixel_format); &dpu_fmt->pixel_format);
if (hw_cdm->ops.bind_pingpong_blk) if (hw_cdm->ops.bind_pingpong_blk)
hw_cdm->ops.bind_pingpong_blk(hw_cdm, PINGPONG_NONE); hw_cdm->ops.bind_pingpong_blk(hw_cdm, PINGPONG_NONE);
...@@ -2217,7 +2217,7 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc, ...@@ -2217,7 +2217,7 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc,
cdm_cfg->output_height = phys_enc->cached_mode.vdisplay; cdm_cfg->output_height = phys_enc->cached_mode.vdisplay;
cdm_cfg->output_fmt = dpu_fmt; cdm_cfg->output_fmt = dpu_fmt;
cdm_cfg->output_type = output_type; cdm_cfg->output_type = output_type;
cdm_cfg->output_bit_depth = DPU_FORMAT_IS_DX(dpu_fmt) ? cdm_cfg->output_bit_depth = MSM_FORMAT_IS_DX(dpu_fmt) ?
CDM_CDWN_OUTPUT_10BIT : CDM_CDWN_OUTPUT_8BIT; CDM_CDWN_OUTPUT_10BIT : CDM_CDWN_OUTPUT_8BIT;
cdm_cfg->csc_cfg = &dpu_csc10_rgb2yuv_601l; cdm_cfg->csc_cfg = &dpu_csc10_rgb2yuv_601l;
...@@ -2246,7 +2246,7 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc, ...@@ -2246,7 +2246,7 @@ void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc,
DPU_DEBUG("[enc:%d] cdm_enable:%d,%d,%p4cc,%d,%d,%d,%d]\n", DPU_DEBUG("[enc:%d] cdm_enable:%d,%d,%p4cc,%d,%d,%d,%d]\n",
DRMID(phys_enc->parent), cdm_cfg->output_width, DRMID(phys_enc->parent), cdm_cfg->output_width,
cdm_cfg->output_height, &cdm_cfg->output_fmt->base.pixel_format, cdm_cfg->output_height, &cdm_cfg->output_fmt->pixel_format,
cdm_cfg->output_type, cdm_cfg->output_bit_depth, cdm_cfg->output_type, cdm_cfg->output_bit_depth,
cdm_cfg->h_cdwn_type, cdm_cfg->v_cdwn_type); cdm_cfg->h_cdwn_type, cdm_cfg->v_cdwn_type);
......
...@@ -393,7 +393,7 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc); ...@@ -393,7 +393,7 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc);
* @output_type: HDMI/WB * @output_type: HDMI/WB
*/ */
void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc, void dpu_encoder_helper_phys_setup_cdm(struct dpu_encoder_phys *phys_enc,
const struct dpu_format *dpu_fmt, const struct msm_format *dpu_fmt,
u32 output_type); u32 output_type);
/** /**
......
...@@ -235,7 +235,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine( ...@@ -235,7 +235,7 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
{ {
struct drm_display_mode mode; struct drm_display_mode mode;
struct dpu_hw_intf_timing_params timing_params = { 0 }; struct dpu_hw_intf_timing_params timing_params = { 0 };
const struct dpu_format *fmt = NULL; const struct msm_format *fmt = NULL;
u32 fmt_fourcc; u32 fmt_fourcc;
unsigned long lock_flags; unsigned long lock_flags;
struct dpu_hw_intf_cfg intf_cfg = { 0 }; struct dpu_hw_intf_cfg intf_cfg = { 0 };
...@@ -409,7 +409,7 @@ static int dpu_encoder_phys_vid_control_vblank_irq( ...@@ -409,7 +409,7 @@ static int dpu_encoder_phys_vid_control_vblank_irq(
static void dpu_encoder_phys_vid_enable(struct dpu_encoder_phys *phys_enc) static void dpu_encoder_phys_vid_enable(struct dpu_encoder_phys *phys_enc)
{ {
struct dpu_hw_ctl *ctl; struct dpu_hw_ctl *ctl;
const struct dpu_format *fmt; const struct msm_format *fmt;
u32 fmt_fourcc; u32 fmt_fourcc;
ctl = phys_enc->hw_ctl; ctl = phys_enc->hw_ctl;
......
...@@ -322,7 +322,7 @@ static void dpu_encoder_phys_wb_setup( ...@@ -322,7 +322,7 @@ static void dpu_encoder_phys_wb_setup(
struct dpu_encoder_phys_wb *wb_enc = to_dpu_encoder_phys_wb(phys_enc); struct dpu_encoder_phys_wb *wb_enc = to_dpu_encoder_phys_wb(phys_enc);
struct drm_writeback_job *wb_job; struct drm_writeback_job *wb_job;
const struct msm_format *format; const struct msm_format *format;
const struct dpu_format *dpu_fmt; const struct msm_format *dpu_fmt;
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);
...@@ -594,7 +594,7 @@ static void dpu_encoder_phys_wb_prepare_wb_job(struct dpu_encoder_phys *phys_enc ...@@ -594,7 +594,7 @@ static void dpu_encoder_phys_wb_prepare_wb_job(struct dpu_encoder_phys *phys_enc
wb_cfg->dest.height = job->fb->height; wb_cfg->dest.height = job->fb->height;
wb_cfg->dest.num_planes = wb_cfg->dest.format->num_planes; wb_cfg->dest.num_planes = wb_cfg->dest.format->num_planes;
if ((wb_cfg->dest.format->fetch_planes == MDP_PLANE_PLANAR) && if ((wb_cfg->dest.format->fetch_type == MDP_PLANE_PLANAR) &&
(wb_cfg->dest.format->element[0] == C1_B_Cb)) (wb_cfg->dest.format->element[0] == C1_B_Cb))
swap(wb_cfg->dest.plane_addr[1], wb_cfg->dest.plane_addr[2]); swap(wb_cfg->dest.plane_addr[1], wb_cfg->dest.plane_addr[2]);
......
...@@ -34,18 +34,21 @@ ...@@ -34,18 +34,21 @@
#define INTERLEAVED_RGB_FMT(fmt, a, r, g, b, e0, e1, e2, e3, uc, alpha, \ #define INTERLEAVED_RGB_FMT(fmt, a, r, g, b, e0, e1, e2, e3, uc, alpha, \
bp, flg, fm, np) \ bp, flg, fm, np) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_INTERLEAVED, \ .fetch_type = MDP_PLANE_INTERLEAVED, \
.alpha_enable = alpha, \ .alpha_enable = alpha, \
.element = { (e0), (e1), (e2), (e3) }, \ .element = { (e0), (e1), (e2), (e3) }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = CHROMA_FULL, \ .chroma_sample = CHROMA_FULL, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = uc, \ .unpack_count = uc, \
.bpp = bp, \ .bpp = bp, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = DPU_TILE_HEIGHT_DEFAULT \ .tile_height = DPU_TILE_HEIGHT_DEFAULT \
} }
...@@ -53,18 +56,21 @@ bp, flg, fm, np) \ ...@@ -53,18 +56,21 @@ bp, flg, fm, np) \
#define INTERLEAVED_RGB_FMT_TILED(fmt, a, r, g, b, e0, e1, e2, e3, uc, \ #define INTERLEAVED_RGB_FMT_TILED(fmt, a, r, g, b, e0, e1, e2, e3, uc, \
alpha, bp, flg, fm, np, th) \ alpha, bp, flg, fm, np, th) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_INTERLEAVED, \ .fetch_type = MDP_PLANE_INTERLEAVED, \
.alpha_enable = alpha, \ .alpha_enable = alpha, \
.element = { (e0), (e1), (e2), (e3) }, \ .element = { (e0), (e1), (e2), (e3) }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = CHROMA_FULL, \ .chroma_sample = CHROMA_FULL, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = uc, \ .unpack_count = uc, \
.bpp = bp, \ .bpp = bp, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = th \ .tile_height = th \
} }
...@@ -73,36 +79,42 @@ alpha, bp, flg, fm, np, th) \ ...@@ -73,36 +79,42 @@ alpha, bp, flg, fm, np, th) \
#define INTERLEAVED_YUV_FMT(fmt, a, r, g, b, e0, e1, e2, e3, \ #define INTERLEAVED_YUV_FMT(fmt, a, r, g, b, e0, e1, e2, e3, \
alpha, chroma, count, bp, flg, fm, np) \ alpha, chroma, count, bp, flg, fm, np) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_INTERLEAVED, \ .fetch_type = MDP_PLANE_INTERLEAVED, \
.alpha_enable = alpha, \ .alpha_enable = alpha, \
.element = { (e0), (e1), (e2), (e3)}, \ .element = { (e0), (e1), (e2), (e3)}, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = count, \ .unpack_count = count, \
.bpp = bp, \ .bpp = bp, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = DPU_TILE_HEIGHT_DEFAULT \ .tile_height = DPU_TILE_HEIGHT_DEFAULT \
} }
#define PSEUDO_YUV_FMT(fmt, a, r, g, b, e0, e1, chroma, flg, fm, np) \ #define PSEUDO_YUV_FMT(fmt, a, r, g, b, e0, e1, chroma, flg, fm, np) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_PSEUDO_PLANAR, \ .fetch_type = MDP_PLANE_PSEUDO_PLANAR, \
.alpha_enable = false, \ .alpha_enable = 0, \
.element = { (e0), (e1), 0, 0 }, \ .element = { (e0), (e1), 0, 0 }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = 2, \ .unpack_count = 2, \
.bpp = 2, \ .bpp = 2, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = DPU_TILE_HEIGHT_DEFAULT \ .tile_height = DPU_TILE_HEIGHT_DEFAULT \
} }
...@@ -110,36 +122,42 @@ alpha, chroma, count, bp, flg, fm, np) \ ...@@ -110,36 +122,42 @@ alpha, chroma, count, bp, flg, fm, np) \
#define PSEUDO_YUV_FMT_TILED(fmt, a, r, g, b, e0, e1, chroma, \ #define PSEUDO_YUV_FMT_TILED(fmt, a, r, g, b, e0, e1, chroma, \
flg, fm, np, th) \ flg, fm, np, th) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_PSEUDO_PLANAR, \ .fetch_type = MDP_PLANE_PSEUDO_PLANAR, \
.alpha_enable = false, \ .alpha_enable = 0, \
.element = { (e0), (e1), 0, 0 }, \ .element = { (e0), (e1), 0, 0 }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = 2, \ .unpack_count = 2, \
.bpp = 2, \ .bpp = 2, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = th \ .tile_height = th \
} }
#define PSEUDO_YUV_FMT_LOOSE(fmt, a, r, g, b, e0, e1, chroma, flg, fm, np)\ #define PSEUDO_YUV_FMT_LOOSE(fmt, a, r, g, b, e0, e1, chroma, flg, fm, np)\
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_PSEUDO_PLANAR, \ .fetch_type = MDP_PLANE_PSEUDO_PLANAR, \
.alpha_enable = false, \ .alpha_enable = 0, \
.element = { (e0), (e1), 0, 0 }, \ .element = { (e0), (e1), 0, 0 }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 1, \ .unpack_align_msb = 1, \
.unpack_tight = 0, \ .unpack_tight = 0, \
.unpack_count = 2, \ .unpack_count = 2, \
.bpp = 2, \ .bpp = 2, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = DPU_TILE_HEIGHT_DEFAULT \ .tile_height = DPU_TILE_HEIGHT_DEFAULT \
} }
...@@ -147,18 +165,21 @@ flg, fm, np, th) \ ...@@ -147,18 +165,21 @@ flg, fm, np, th) \
#define PSEUDO_YUV_FMT_LOOSE_TILED(fmt, a, r, g, b, e0, e1, chroma, \ #define PSEUDO_YUV_FMT_LOOSE_TILED(fmt, a, r, g, b, e0, e1, chroma, \
flg, fm, np, th) \ flg, fm, np, th) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_PSEUDO_PLANAR, \ .fetch_type = MDP_PLANE_PSEUDO_PLANAR, \
.alpha_enable = false, \ .alpha_enable = 0, \
.element = { (e0), (e1), 0, 0 }, \ .element = { (e0), (e1), 0, 0 }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 1, \ .unpack_align_msb = 1, \
.unpack_tight = 0, \ .unpack_tight = 0, \
.unpack_count = 2, \ .unpack_count = 2, \
.bpp = 2, \ .bpp = 2, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = th \ .tile_height = th \
} }
...@@ -167,18 +188,21 @@ flg, fm, np, th) \ ...@@ -167,18 +188,21 @@ flg, fm, np, th) \
#define PLANAR_YUV_FMT(fmt, a, r, g, b, e0, e1, e2, alpha, chroma, bp, \ #define PLANAR_YUV_FMT(fmt, a, r, g, b, e0, e1, e2, alpha, chroma, bp, \
flg, fm, np) \ flg, fm, np) \
{ \ { \
.base.pixel_format = DRM_FORMAT_ ## fmt, \ .pixel_format = DRM_FORMAT_ ## fmt, \
.fetch_planes = MDP_PLANE_PLANAR, \ .fetch_type = MDP_PLANE_PLANAR, \
.alpha_enable = alpha, \ .alpha_enable = alpha, \
.element = { (e0), (e1), (e2), 0 }, \ .element = { (e0), (e1), (e2), 0 }, \
.bits = { g, b, r, a }, \ .bpc_g_y = g, \
.bpc_b_cb = b, \
.bpc_r_cr = r, \
.bpc_a = a, \
.chroma_sample = chroma, \ .chroma_sample = chroma, \
.unpack_align_msb = 0, \ .unpack_align_msb = 0, \
.unpack_tight = 1, \ .unpack_tight = 1, \
.unpack_count = 1, \ .unpack_count = 1, \
.bpp = bp, \ .bpp = bp, \
.base.fetch_mode = fm, \ .fetch_mode = fm, \
.base.flags = flg, \ .flags = flg, \
.num_planes = np, \ .num_planes = np, \
.tile_height = DPU_TILE_HEIGHT_DEFAULT \ .tile_height = DPU_TILE_HEIGHT_DEFAULT \
} }
...@@ -193,7 +217,7 @@ struct dpu_media_color_map { ...@@ -193,7 +217,7 @@ struct dpu_media_color_map {
uint32_t color; uint32_t color;
}; };
static const struct dpu_format dpu_format_map[] = { static const struct msm_format dpu_format_map[] = {
INTERLEAVED_RGB_FMT(ARGB8888, INTERLEAVED_RGB_FMT(ARGB8888,
BPC8A, BPC8, BPC8, BPC8, BPC8A, BPC8, BPC8, BPC8,
C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA, 4,
...@@ -483,7 +507,7 @@ static const struct dpu_format dpu_format_map[] = { ...@@ -483,7 +507,7 @@ static const struct dpu_format dpu_format_map[] = {
* If a compression ratio needs to be used for this or any other format, * If a compression ratio needs to be used for this or any other format,
* the data will be passed by user-space. * the data will be passed by user-space.
*/ */
static const struct dpu_format dpu_format_map_ubwc[] = { static const struct msm_format dpu_format_map_ubwc[] = {
INTERLEAVED_RGB_FMT_TILED(BGR565, INTERLEAVED_RGB_FMT_TILED(BGR565,
0, BPC5, BPC6, BPC5, 0, BPC5, BPC6, BPC5,
C2_R_Cr, C0_G_Y, C1_B_Cb, 0, 3, C2_R_Cr, C0_G_Y, C1_B_Cb, 0, 3,
...@@ -593,7 +617,7 @@ static void _dpu_get_v_h_subsample_rate( ...@@ -593,7 +617,7 @@ static void _dpu_get_v_h_subsample_rate(
} }
} }
static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt) static int _dpu_format_get_media_color_ubwc(const struct msm_format *fmt)
{ {
static const struct dpu_media_color_map dpu_media_ubwc_map[] = { static const struct dpu_media_color_map dpu_media_ubwc_map[] = {
{DRM_FORMAT_ABGR8888, COLOR_FMT_RGBA8888_UBWC}, {DRM_FORMAT_ABGR8888, COLOR_FMT_RGBA8888_UBWC},
...@@ -609,9 +633,9 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt) ...@@ -609,9 +633,9 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt)
int color_fmt = -1; int color_fmt = -1;
int i; int i;
if (fmt->base.pixel_format == DRM_FORMAT_NV12 || if (fmt->pixel_format == DRM_FORMAT_NV12 ||
fmt->base.pixel_format == DRM_FORMAT_P010) { fmt->pixel_format == DRM_FORMAT_P010) {
if (DPU_FORMAT_IS_DX(fmt)) { if (MSM_FORMAT_IS_DX(fmt)) {
if (fmt->unpack_tight) if (fmt->unpack_tight)
color_fmt = COLOR_FMT_NV12_BPP10_UBWC; color_fmt = COLOR_FMT_NV12_BPP10_UBWC;
else else
...@@ -622,7 +646,7 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt) ...@@ -622,7 +646,7 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt)
} }
for (i = 0; i < ARRAY_SIZE(dpu_media_ubwc_map); ++i) for (i = 0; i < ARRAY_SIZE(dpu_media_ubwc_map); ++i)
if (fmt->base.pixel_format == dpu_media_ubwc_map[i].format) { if (fmt->pixel_format == dpu_media_ubwc_map[i].format) {
color_fmt = dpu_media_ubwc_map[i].color; color_fmt = dpu_media_ubwc_map[i].color;
break; break;
} }
...@@ -630,14 +654,14 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt) ...@@ -630,14 +654,14 @@ static int _dpu_format_get_media_color_ubwc(const struct dpu_format *fmt)
} }
static int _dpu_format_get_plane_sizes_ubwc( static int _dpu_format_get_plane_sizes_ubwc(
const struct dpu_format *fmt, const struct msm_format *fmt,
const uint32_t width, const uint32_t width,
const uint32_t height, const uint32_t height,
struct dpu_hw_fmt_layout *layout) struct dpu_hw_fmt_layout *layout)
{ {
int i; int i;
int color; int color;
bool meta = DPU_FORMAT_IS_UBWC(fmt); bool meta = MSM_FORMAT_IS_UBWC(fmt);
memset(layout, 0, sizeof(struct dpu_hw_fmt_layout)); memset(layout, 0, sizeof(struct dpu_hw_fmt_layout));
layout->format = fmt; layout->format = fmt;
...@@ -648,11 +672,11 @@ static int _dpu_format_get_plane_sizes_ubwc( ...@@ -648,11 +672,11 @@ static int _dpu_format_get_plane_sizes_ubwc(
color = _dpu_format_get_media_color_ubwc(fmt); color = _dpu_format_get_media_color_ubwc(fmt);
if (color < 0) { if (color < 0) {
DRM_ERROR("UBWC format not supported for fmt: %p4cc\n", DRM_ERROR("UBWC format not supported for fmt: %p4cc\n",
&fmt->base.pixel_format); &fmt->pixel_format);
return -EINVAL; return -EINVAL;
} }
if (DPU_FORMAT_IS_YUV(layout->format)) { if (MSM_FORMAT_IS_YUV(layout->format)) {
uint32_t y_sclines, uv_sclines; uint32_t y_sclines, uv_sclines;
uint32_t y_meta_scanlines = 0; uint32_t y_meta_scanlines = 0;
uint32_t uv_meta_scanlines = 0; uint32_t uv_meta_scanlines = 0;
...@@ -709,7 +733,7 @@ static int _dpu_format_get_plane_sizes_ubwc( ...@@ -709,7 +733,7 @@ static int _dpu_format_get_plane_sizes_ubwc(
} }
static int _dpu_format_get_plane_sizes_linear( static int _dpu_format_get_plane_sizes_linear(
const struct dpu_format *fmt, const struct msm_format *fmt,
const uint32_t width, const uint32_t width,
const uint32_t height, const uint32_t height,
struct dpu_hw_fmt_layout *layout, struct dpu_hw_fmt_layout *layout,
...@@ -724,7 +748,7 @@ static int _dpu_format_get_plane_sizes_linear( ...@@ -724,7 +748,7 @@ static int _dpu_format_get_plane_sizes_linear(
layout->num_planes = fmt->num_planes; layout->num_planes = fmt->num_planes;
/* Due to memset above, only need to set planes of interest */ /* Due to memset above, only need to set planes of interest */
if (fmt->fetch_planes == MDP_PLANE_INTERLEAVED) { if (fmt->fetch_type == MDP_PLANE_INTERLEAVED) {
layout->num_planes = 1; layout->num_planes = 1;
layout->plane_size[0] = width * height * layout->format->bpp; layout->plane_size[0] = width * height * layout->format->bpp;
layout->plane_pitch[0] = width * layout->format->bpp; layout->plane_pitch[0] = width * layout->format->bpp;
...@@ -742,8 +766,8 @@ static int _dpu_format_get_plane_sizes_linear( ...@@ -742,8 +766,8 @@ static int _dpu_format_get_plane_sizes_linear(
return -EINVAL; return -EINVAL;
} }
if ((fmt->base.pixel_format == DRM_FORMAT_NV12) && if ((fmt->pixel_format == DRM_FORMAT_NV12) &&
(DPU_FORMAT_IS_DX(fmt))) (MSM_FORMAT_IS_DX(fmt)))
bpp = 2; bpp = 2;
layout->plane_pitch[0] = width * bpp; layout->plane_pitch[0] = width * bpp;
layout->plane_pitch[1] = layout->plane_pitch[0] / h_subsample; layout->plane_pitch[1] = layout->plane_pitch[0] / h_subsample;
...@@ -751,7 +775,7 @@ static int _dpu_format_get_plane_sizes_linear( ...@@ -751,7 +775,7 @@ static int _dpu_format_get_plane_sizes_linear(
layout->plane_size[1] = layout->plane_pitch[1] * layout->plane_size[1] = layout->plane_pitch[1] *
(height / v_subsample); (height / v_subsample);
if (fmt->fetch_planes == MDP_PLANE_PSEUDO_PLANAR) { if (fmt->fetch_type == MDP_PLANE_PSEUDO_PLANAR) {
layout->num_planes = 2; layout->num_planes = 2;
layout->plane_size[1] *= 2; layout->plane_size[1] *= 2;
layout->plane_pitch[1] *= 2; layout->plane_pitch[1] *= 2;
...@@ -781,7 +805,7 @@ static int _dpu_format_get_plane_sizes_linear( ...@@ -781,7 +805,7 @@ static int _dpu_format_get_plane_sizes_linear(
} }
static int dpu_format_get_plane_sizes( static int dpu_format_get_plane_sizes(
const struct dpu_format *fmt, const struct msm_format *fmt,
const uint32_t w, const uint32_t w,
const uint32_t h, const uint32_t h,
struct dpu_hw_fmt_layout *layout, struct dpu_hw_fmt_layout *layout,
...@@ -797,7 +821,7 @@ static int dpu_format_get_plane_sizes( ...@@ -797,7 +821,7 @@ static int dpu_format_get_plane_sizes(
return -ERANGE; return -ERANGE;
} }
if (DPU_FORMAT_IS_UBWC(fmt) || DPU_FORMAT_IS_TILE(fmt)) if (MSM_FORMAT_IS_UBWC(fmt) || MSM_FORMAT_IS_TILE(fmt))
return _dpu_format_get_plane_sizes_ubwc(fmt, w, h, layout); return _dpu_format_get_plane_sizes_ubwc(fmt, w, h, layout);
return _dpu_format_get_plane_sizes_linear(fmt, w, h, layout, pitches); return _dpu_format_get_plane_sizes_linear(fmt, w, h, layout, pitches);
...@@ -823,10 +847,10 @@ static int _dpu_format_populate_addrs_ubwc( ...@@ -823,10 +847,10 @@ static int _dpu_format_populate_addrs_ubwc(
return -EFAULT; return -EFAULT;
} }
meta = DPU_FORMAT_IS_UBWC(layout->format); meta = MSM_FORMAT_IS_UBWC(layout->format);
/* Per-format logic for verifying active planes */ /* Per-format logic for verifying active planes */
if (DPU_FORMAT_IS_YUV(layout->format)) { if (MSM_FORMAT_IS_YUV(layout->format)) {
/************************************************/ /************************************************/
/* UBWC ** */ /* UBWC ** */
/* buffer ** DPU PLANE */ /* buffer ** DPU PLANE */
...@@ -942,7 +966,7 @@ int dpu_format_populate_layout( ...@@ -942,7 +966,7 @@ int dpu_format_populate_layout(
return -ERANGE; return -ERANGE;
} }
layout->format = to_dpu_format(msm_framebuffer_format(fb)); layout->format = msm_framebuffer_format(fb);
/* Populate the plane sizes etc via get_format */ /* Populate the plane sizes etc via get_format */
ret = dpu_format_get_plane_sizes(layout->format, fb->width, fb->height, ret = dpu_format_get_plane_sizes(layout->format, fb->width, fb->height,
...@@ -951,8 +975,8 @@ int dpu_format_populate_layout( ...@@ -951,8 +975,8 @@ int dpu_format_populate_layout(
return ret; return ret;
/* Populate the addresses given the fb */ /* Populate the addresses given the fb */
if (DPU_FORMAT_IS_UBWC(layout->format) || if (MSM_FORMAT_IS_UBWC(layout->format) ||
DPU_FORMAT_IS_TILE(layout->format)) MSM_FORMAT_IS_TILE(layout->format))
ret = _dpu_format_populate_addrs_ubwc(aspace, fb, layout); ret = _dpu_format_populate_addrs_ubwc(aspace, fb, layout);
else else
ret = _dpu_format_populate_addrs_linear(aspace, fb, layout); ret = _dpu_format_populate_addrs_linear(aspace, fb, layout);
...@@ -962,23 +986,21 @@ int dpu_format_populate_layout( ...@@ -962,23 +986,21 @@ int dpu_format_populate_layout(
int dpu_format_check_modified_format( int dpu_format_check_modified_format(
const struct msm_kms *kms, const struct msm_kms *kms,
const struct msm_format *msm_fmt, const struct msm_format *fmt,
const struct drm_mode_fb_cmd2 *cmd, const struct drm_mode_fb_cmd2 *cmd,
struct drm_gem_object **bos) struct drm_gem_object **bos)
{ {
const struct drm_format_info *info; const struct drm_format_info *info;
const struct dpu_format *fmt;
struct dpu_hw_fmt_layout layout; struct dpu_hw_fmt_layout layout;
uint32_t bos_total_size = 0; uint32_t bos_total_size = 0;
int ret, i; int ret, i;
if (!msm_fmt || !cmd || !bos) { if (!fmt || !cmd || !bos) {
DRM_ERROR("invalid arguments\n"); DRM_ERROR("invalid arguments\n");
return -EINVAL; return -EINVAL;
} }
fmt = to_dpu_format(msm_fmt); info = drm_format_info(fmt->pixel_format);
info = drm_format_info(fmt->base.pixel_format);
if (!info) if (!info)
return -EINVAL; return -EINVAL;
...@@ -1005,13 +1027,13 @@ int dpu_format_check_modified_format( ...@@ -1005,13 +1027,13 @@ int dpu_format_check_modified_format(
return 0; return 0;
} }
const struct dpu_format *dpu_get_dpu_format_ext( const struct msm_format *dpu_get_dpu_format_ext(
const uint32_t format, const uint32_t format,
const uint64_t modifier) const uint64_t modifier)
{ {
uint32_t i = 0; uint32_t i = 0;
const struct dpu_format *fmt = NULL; const struct msm_format *fmt = NULL;
const struct dpu_format *map = NULL; const struct msm_format *map = NULL;
ssize_t map_size = 0; ssize_t map_size = 0;
/* /*
...@@ -1037,7 +1059,7 @@ const struct dpu_format *dpu_get_dpu_format_ext( ...@@ -1037,7 +1059,7 @@ const struct dpu_format *dpu_get_dpu_format_ext(
} }
for (i = 0; i < map_size; i++) { for (i = 0; i < map_size; i++) {
if (format == map[i].base.pixel_format) { if (format == map[i].pixel_format) {
fmt = &map[i]; fmt = &map[i];
break; break;
} }
...@@ -1049,8 +1071,8 @@ const struct dpu_format *dpu_get_dpu_format_ext( ...@@ -1049,8 +1071,8 @@ const struct dpu_format *dpu_get_dpu_format_ext(
else else
DRM_DEBUG_ATOMIC("fmt %4.4s mod 0x%llX ubwc %d yuv %ld\n", DRM_DEBUG_ATOMIC("fmt %4.4s mod 0x%llX ubwc %d yuv %ld\n",
(char *)&format, modifier, (char *)&format, modifier,
DPU_FORMAT_IS_UBWC(fmt), MSM_FORMAT_IS_UBWC(fmt),
DPU_FORMAT_IS_YUV(fmt)); MSM_FORMAT_IS_YUV(fmt));
return fmt; return fmt;
} }
...@@ -1060,9 +1082,5 @@ const struct msm_format *dpu_get_msm_format( ...@@ -1060,9 +1082,5 @@ const struct msm_format *dpu_get_msm_format(
const uint32_t format, const uint32_t format,
const uint64_t modifiers) const uint64_t modifiers)
{ {
const struct dpu_format *fmt = dpu_get_dpu_format_ext(format, return dpu_get_dpu_format_ext(format, modifiers);
modifiers);
if (fmt)
return &fmt->base;
return NULL;
} }
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
* @format: DRM FourCC Code * @format: DRM FourCC Code
* @modifiers: format modifier array from client, one per plane * @modifiers: format modifier array from client, one per plane
*/ */
const struct dpu_format *dpu_get_dpu_format_ext( const struct msm_format *dpu_get_dpu_format_ext(
const uint32_t format, const uint32_t format,
const uint64_t modifier); const uint64_t modifier);
...@@ -43,7 +43,7 @@ static inline bool dpu_find_format(u32 format, const u32 *supported_formats, ...@@ -43,7 +43,7 @@ static inline bool dpu_find_format(u32 format, const u32 *supported_formats,
} }
/** /**
* dpu_get_msm_format - get an dpu_format by its msm_format base * dpu_get_msm_format - get an msm_format by its msm_format base
* callback function registers with the msm_kms layer * callback function registers with the msm_kms layer
* @kms: kms driver * @kms: kms driver
* @format: DRM FourCC Code * @format: DRM FourCC Code
...@@ -58,7 +58,7 @@ const struct msm_format *dpu_get_msm_format( ...@@ -58,7 +58,7 @@ const struct msm_format *dpu_get_msm_format(
* 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
* @kms: kms driver * @kms: kms driver
* @msm_fmt: pointer to the msm_fmt base pointer of an dpu_format * @msm_fmt: pointer to the msm_fmt base pointer of an msm_format
* @cmd: fb_cmd2 structure user request * @cmd: fb_cmd2 structure user request
* @bos: gem buffer object list * @bos: gem buffer object list
* *
......
...@@ -170,7 +170,7 @@ static int dpu_hw_cdm_setup_cdwn(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg * ...@@ -170,7 +170,7 @@ static int dpu_hw_cdm_setup_cdwn(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg *
static int dpu_hw_cdm_enable(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg *cdm) static int dpu_hw_cdm_enable(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg *cdm)
{ {
struct dpu_hw_blk_reg_map *c = &ctx->hw; struct dpu_hw_blk_reg_map *c = &ctx->hw;
const struct dpu_format *fmt; const struct msm_format *fmt;
u32 opmode = 0; u32 opmode = 0;
u32 csc = 0; u32 csc = 0;
...@@ -179,7 +179,7 @@ static int dpu_hw_cdm_enable(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg *cdm) ...@@ -179,7 +179,7 @@ static int dpu_hw_cdm_enable(struct dpu_hw_cdm *ctx, struct dpu_hw_cdm_cfg *cdm)
fmt = cdm->output_fmt; fmt = cdm->output_fmt;
if (!DPU_FORMAT_IS_YUV(fmt)) if (!MSM_FORMAT_IS_YUV(fmt))
return -EINVAL; return -EINVAL;
dpu_hw_csc_setup(&ctx->hw, CDM_CSC_10_MATRIX_COEFF_0, cdm->csc_cfg, true); dpu_hw_csc_setup(&ctx->hw, CDM_CSC_10_MATRIX_COEFF_0, cdm->csc_cfg, true);
......
...@@ -19,7 +19,7 @@ struct dpu_hw_cdm; ...@@ -19,7 +19,7 @@ struct dpu_hw_cdm;
* @output_bit_depth: output bit-depth of CDM block * @output_bit_depth: output bit-depth of CDM block
* @h_cdwn_type: downsample type used for horizontal pixels * @h_cdwn_type: downsample type used for horizontal pixels
* @v_cdwn_type: downsample type used for vertical pixels * @v_cdwn_type: downsample type used for vertical pixels
* @output_fmt: handle to dpu_format of CDM block * @output_fmt: handle to msm_format of CDM block
* @csc_cfg: handle to CSC matrix programmed for CDM block * @csc_cfg: handle to CSC matrix programmed for CDM block
* @output_type: interface to which CDM is paired (HDMI/WB) * @output_type: interface to which CDM is paired (HDMI/WB)
* @pp_id: ping-pong block to which CDM is bound to * @pp_id: ping-pong block to which CDM is bound to
...@@ -30,7 +30,7 @@ struct dpu_hw_cdm_cfg { ...@@ -30,7 +30,7 @@ struct dpu_hw_cdm_cfg {
u32 output_bit_depth; u32 output_bit_depth;
u32 h_cdwn_type; u32 h_cdwn_type;
u32 v_cdwn_type; u32 v_cdwn_type;
const struct dpu_format *output_fmt; const struct msm_format *output_fmt;
const struct dpu_csc_cfg *csc_cfg; const struct dpu_csc_cfg *csc_cfg;
u32 output_type; u32 output_type;
int pp_id; int pp_id;
......
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *intf, static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *intf,
const struct dpu_hw_intf_timing_params *p, const struct dpu_hw_intf_timing_params *p,
const struct dpu_format *fmt) const struct msm_format *fmt)
{ {
struct dpu_hw_blk_reg_map *c = &intf->hw; struct dpu_hw_blk_reg_map *c = &intf->hw;
u32 hsync_period, vsync_period; u32 hsync_period, vsync_period;
...@@ -194,10 +194,10 @@ static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *intf, ...@@ -194,10 +194,10 @@ static void dpu_hw_intf_setup_timing_engine(struct dpu_hw_intf *intf,
(p->vsync_polarity << 1) | /* VSYNC Polarity */ (p->vsync_polarity << 1) | /* VSYNC Polarity */
(p->hsync_polarity << 0); /* HSYNC Polarity */ (p->hsync_polarity << 0); /* HSYNC Polarity */
if (!DPU_FORMAT_IS_YUV(fmt)) if (!MSM_FORMAT_IS_YUV(fmt))
panel_format = (fmt->bits[C0_G_Y] | panel_format = (fmt->bpc_g_y |
(fmt->bits[C1_B_Cb] << 2) | (fmt->bpc_b_cb << 2) |
(fmt->bits[C2_R_Cr] << 4) | (fmt->bpc_r_cr << 4) |
(0x21 << 8)); (0x21 << 8));
else else
/* Interface treats all the pixel data in RGB888 format */ /* Interface treats all the pixel data in RGB888 format */
......
...@@ -81,7 +81,7 @@ struct dpu_hw_intf_cmd_mode_cfg { ...@@ -81,7 +81,7 @@ struct dpu_hw_intf_cmd_mode_cfg {
struct dpu_hw_intf_ops { struct dpu_hw_intf_ops {
void (*setup_timing_gen)(struct dpu_hw_intf *intf, void (*setup_timing_gen)(struct dpu_hw_intf *intf,
const struct dpu_hw_intf_timing_params *p, const struct dpu_hw_intf_timing_params *p,
const struct dpu_format *fmt); const struct msm_format *fmt);
void (*setup_prg_fetch)(struct dpu_hw_intf *intf, void (*setup_prg_fetch)(struct dpu_hw_intf *intf,
const struct dpu_hw_intf_prog_fetch *fetch); const struct dpu_hw_intf_prog_fetch *fetch);
......
...@@ -37,12 +37,6 @@ ...@@ -37,12 +37,6 @@
#define DPU_MAX_DE_CURVES 3 #define DPU_MAX_DE_CURVES 3
#endif #endif
#define DPU_FORMAT_IS_YUV(X) MSM_FORMAT_IS_YUV(&(X)->base)
#define DPU_FORMAT_IS_DX(X) MSM_FORMAT_IS_DX(&(X)->base)
#define DPU_FORMAT_IS_LINEAR(X) MSM_FORMAT_IS_LINEAR(&(X)->base)
#define DPU_FORMAT_IS_TILE(X) MSM_FORMAT_IS_TILE(&(X)->base)
#define DPU_FORMAT_IS_UBWC(X) MSM_FORMAT_IS_UBWC(&(X)->base)
#define DPU_BLEND_FG_ALPHA_FG_CONST (0 << 0) #define DPU_BLEND_FG_ALPHA_FG_CONST (0 << 0)
#define DPU_BLEND_FG_ALPHA_BG_CONST (1 << 0) #define DPU_BLEND_FG_ALPHA_BG_CONST (1 << 0)
#define DPU_BLEND_FG_ALPHA_FG_PIXEL (2 << 0) #define DPU_BLEND_FG_ALPHA_FG_PIXEL (2 << 0)
...@@ -305,39 +299,6 @@ enum dpu_3d_blend_mode { ...@@ -305,39 +299,6 @@ enum dpu_3d_blend_mode {
BLEND_3D_MAX BLEND_3D_MAX
}; };
/** struct dpu_format - defines the format configuration which
* allows DPU HW to correctly fetch and decode the format
* @base: base msm_format structure containing fourcc code
* @fetch_planes: how the color components are packed in pixel format
* @element: element color ordering
* @bits: element bit widths
* @chroma_sample: chroma sub-samplng type
* @unpack_align_msb: unpack aligned, 0 to LSB, 1 to MSB
* @unpack_tight: 0 for loose, 1 for tight
* @unpack_count: 0 = 1 component, 1 = 2 component
* @bpp: bytes per pixel
* @alpha_enable: whether the format has an alpha channel
* @num_planes: number of planes (including meta data planes)
* @tile_width: format tile width
* @tile_height: format tile height
*/
struct dpu_format {
struct msm_format base;
enum mdp_fetch_type fetch_planes;
u8 element[DPU_MAX_PLANES];
u8 bits[DPU_MAX_PLANES];
enum mdp_chroma_samp_type chroma_sample;
u8 unpack_align_msb;
u8 unpack_tight;
u8 unpack_count;
u8 bpp;
u8 alpha_enable;
u8 num_planes;
u16 tile_width;
u16 tile_height;
};
#define to_dpu_format(x) container_of(x, struct dpu_format, base)
/** /**
* struct dpu_hw_fmt_layout - format information of the source pixel data * struct dpu_hw_fmt_layout - format information of the source pixel data
* @format: pixel format parameters * @format: pixel format parameters
...@@ -350,7 +311,7 @@ struct dpu_format { ...@@ -350,7 +311,7 @@ struct dpu_format {
* @plane_pitch: pitch of each plane * @plane_pitch: pitch of each plane
*/ */
struct dpu_hw_fmt_layout { struct dpu_hw_fmt_layout {
const struct dpu_format *format; const struct msm_format *format;
uint32_t num_planes; uint32_t num_planes;
uint32_t width; uint32_t width;
uint32_t height; uint32_t height;
......
...@@ -206,7 +206,7 @@ static void _sspp_setup_csc10_opmode(struct dpu_hw_sspp *ctx, ...@@ -206,7 +206,7 @@ static void _sspp_setup_csc10_opmode(struct dpu_hw_sspp *ctx,
* Setup source pixel format, flip, * Setup source pixel format, flip,
*/ */
static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe, static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, u32 flags) const struct msm_format *fmt, u32 flags)
{ {
struct dpu_hw_sspp *ctx = pipe->sspp; struct dpu_hw_sspp *ctx = pipe->sspp;
struct dpu_hw_blk_reg_map *c; struct dpu_hw_blk_reg_map *c;
...@@ -247,14 +247,14 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe, ...@@ -247,14 +247,14 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe,
chroma_samp = CHROMA_H2V1; chroma_samp = CHROMA_H2V1;
} }
src_format = (chroma_samp << 23) | (fmt->fetch_planes << 19) | src_format = (chroma_samp << 23) | (fmt->fetch_type << 19) |
(fmt->bits[C3_ALPHA] << 6) | (fmt->bits[C2_R_Cr] << 4) | (fmt->bpc_a << 6) | (fmt->bpc_r_cr << 4) |
(fmt->bits[C1_B_Cb] << 2) | (fmt->bits[C0_G_Y] << 0); (fmt->bpc_b_cb << 2) | (fmt->bpc_g_y << 0);
if (flags & DPU_SSPP_ROT_90) if (flags & DPU_SSPP_ROT_90)
src_format |= BIT(11); /* ROT90 */ src_format |= BIT(11); /* ROT90 */
if (fmt->alpha_enable && fmt->fetch_planes == MDP_PLANE_INTERLEAVED) if (fmt->alpha_enable && fmt->fetch_type == MDP_PLANE_INTERLEAVED)
src_format |= BIT(8); /* SRCC3_EN */ src_format |= BIT(8); /* SRCC3_EN */
if (flags & DPU_SSPP_SOLID_FILL) if (flags & DPU_SSPP_SOLID_FILL)
...@@ -267,10 +267,10 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe, ...@@ -267,10 +267,10 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe,
(fmt->unpack_align_msb << 18) | (fmt->unpack_align_msb << 18) |
((fmt->bpp - 1) << 9); ((fmt->bpp - 1) << 9);
if (!DPU_FORMAT_IS_LINEAR(fmt)) { if (fmt->fetch_mode != MDP_FETCH_LINEAR) {
if (DPU_FORMAT_IS_UBWC(fmt)) if (MSM_FORMAT_IS_UBWC(fmt))
opmode |= MDSS_MDP_OP_BWC_EN; opmode |= MDSS_MDP_OP_BWC_EN;
src_format |= (fmt->base.fetch_mode & 3) << 30; /*FRAME_FORMAT */ src_format |= (fmt->fetch_mode & 3) << 30; /*FRAME_FORMAT */
DPU_REG_WRITE(c, SSPP_FETCH_CONFIG, DPU_REG_WRITE(c, SSPP_FETCH_CONFIG,
DPU_FETCH_CONFIG_RESET_VALUE | DPU_FETCH_CONFIG_RESET_VALUE |
ctx->ubwc->highest_bank_bit << 18); ctx->ubwc->highest_bank_bit << 18);
...@@ -295,7 +295,7 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe, ...@@ -295,7 +295,7 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe,
break; break;
case UBWC_4_0: case UBWC_4_0:
DPU_REG_WRITE(c, SSPP_UBWC_STATIC_CTRL, DPU_REG_WRITE(c, SSPP_UBWC_STATIC_CTRL,
DPU_FORMAT_IS_YUV(fmt) ? 0 : BIT(30)); MSM_FORMAT_IS_YUV(fmt) ? 0 : BIT(30));
break; break;
} }
} }
...@@ -303,20 +303,20 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe, ...@@ -303,20 +303,20 @@ static void dpu_hw_sspp_setup_format(struct dpu_sw_pipe *pipe,
opmode |= MDSS_MDP_OP_PE_OVERRIDE; opmode |= MDSS_MDP_OP_PE_OVERRIDE;
/* if this is YUV pixel format, enable CSC */ /* if this is YUV pixel format, enable CSC */
if (DPU_FORMAT_IS_YUV(fmt)) if (MSM_FORMAT_IS_YUV(fmt))
src_format |= BIT(15); src_format |= BIT(15);
if (DPU_FORMAT_IS_DX(fmt)) if (MSM_FORMAT_IS_DX(fmt))
src_format |= BIT(14); src_format |= BIT(14);
/* update scaler opmode, if appropriate */ /* update scaler opmode, if appropriate */
if (test_bit(DPU_SSPP_CSC, &ctx->cap->features)) if (test_bit(DPU_SSPP_CSC, &ctx->cap->features))
_sspp_setup_opmode(ctx, VIG_OP_CSC_EN | VIG_OP_CSC_SRC_DATAFMT, _sspp_setup_opmode(ctx, VIG_OP_CSC_EN | VIG_OP_CSC_SRC_DATAFMT,
DPU_FORMAT_IS_YUV(fmt)); MSM_FORMAT_IS_YUV(fmt));
else if (test_bit(DPU_SSPP_CSC_10BIT, &ctx->cap->features)) else if (test_bit(DPU_SSPP_CSC_10BIT, &ctx->cap->features))
_sspp_setup_csc10_opmode(ctx, _sspp_setup_csc10_opmode(ctx,
VIG_CSC_10_EN | VIG_CSC_10_SRC_DATAFMT, VIG_CSC_10_EN | VIG_CSC_10_SRC_DATAFMT,
DPU_FORMAT_IS_YUV(fmt)); MSM_FORMAT_IS_YUV(fmt));
DPU_REG_WRITE(c, format_off, src_format); DPU_REG_WRITE(c, format_off, src_format);
DPU_REG_WRITE(c, unpack_pat_off, unpack); DPU_REG_WRITE(c, unpack_pat_off, unpack);
...@@ -385,7 +385,7 @@ static void dpu_hw_sspp_setup_pe_config(struct dpu_hw_sspp *ctx, ...@@ -385,7 +385,7 @@ static void dpu_hw_sspp_setup_pe_config(struct dpu_hw_sspp *ctx,
static void _dpu_hw_sspp_setup_scaler3(struct dpu_hw_sspp *ctx, static void _dpu_hw_sspp_setup_scaler3(struct dpu_hw_sspp *ctx,
struct dpu_hw_scaler3_cfg *scaler3_cfg, struct dpu_hw_scaler3_cfg *scaler3_cfg,
const struct dpu_format *format) const struct msm_format *format)
{ {
if (!ctx || !scaler3_cfg) if (!ctx || !scaler3_cfg)
return; return;
...@@ -556,7 +556,7 @@ static void dpu_hw_sspp_setup_qos_ctrl(struct dpu_hw_sspp *ctx, ...@@ -556,7 +556,7 @@ static void dpu_hw_sspp_setup_qos_ctrl(struct dpu_hw_sspp *ctx,
} }
static void dpu_hw_sspp_setup_cdp(struct dpu_sw_pipe *pipe, static void dpu_hw_sspp_setup_cdp(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, const struct msm_format *fmt,
bool enable) bool enable)
{ {
struct dpu_hw_sspp *ctx = pipe->sspp; struct dpu_hw_sspp *ctx = pipe->sspp;
......
...@@ -183,7 +183,7 @@ struct dpu_hw_sspp_ops { ...@@ -183,7 +183,7 @@ struct dpu_hw_sspp_ops {
* @flags: Extra flags for format config * @flags: Extra flags for format config
*/ */
void (*setup_format)(struct dpu_sw_pipe *pipe, void (*setup_format)(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, u32 flags); const struct msm_format *fmt, u32 flags);
/** /**
* setup_rects - setup pipe ROI rectangles * setup_rects - setup pipe ROI rectangles
...@@ -279,7 +279,7 @@ struct dpu_hw_sspp_ops { ...@@ -279,7 +279,7 @@ struct dpu_hw_sspp_ops {
*/ */
void (*setup_scaler)(struct dpu_hw_sspp *ctx, void (*setup_scaler)(struct dpu_hw_sspp *ctx,
struct dpu_hw_scaler3_cfg *scaler3_cfg, struct dpu_hw_scaler3_cfg *scaler3_cfg,
const struct dpu_format *format); const struct msm_format *format);
/** /**
* setup_cdp - setup client driven prefetch * setup_cdp - setup client driven prefetch
...@@ -288,7 +288,7 @@ struct dpu_hw_sspp_ops { ...@@ -288,7 +288,7 @@ struct dpu_hw_sspp_ops {
* @enable: whether the CDP should be enabled for this pipe * @enable: whether the CDP should be enabled for this pipe
*/ */
void (*setup_cdp)(struct dpu_sw_pipe *pipe, void (*setup_cdp)(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, const struct msm_format *fmt,
bool enable); bool enable);
}; };
......
...@@ -282,7 +282,7 @@ static void _dpu_hw_setup_scaler3_de(struct dpu_hw_blk_reg_map *c, ...@@ -282,7 +282,7 @@ static void _dpu_hw_setup_scaler3_de(struct dpu_hw_blk_reg_map *c,
void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c, void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c,
struct dpu_hw_scaler3_cfg *scaler3_cfg, struct dpu_hw_scaler3_cfg *scaler3_cfg,
u32 scaler_offset, u32 scaler_version, u32 scaler_offset, u32 scaler_version,
const struct dpu_format *format) const struct msm_format *format)
{ {
u32 op_mode = 0; u32 op_mode = 0;
u32 phase_init, preload, src_y_rgb, src_uv, dst; u32 phase_init, preload, src_y_rgb, src_uv, dst;
...@@ -293,7 +293,7 @@ void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c, ...@@ -293,7 +293,7 @@ void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c,
op_mode |= BIT(0); op_mode |= BIT(0);
op_mode |= (scaler3_cfg->y_rgb_filter_cfg & 0x3) << 16; op_mode |= (scaler3_cfg->y_rgb_filter_cfg & 0x3) << 16;
if (format && DPU_FORMAT_IS_YUV(format)) { if (format && MSM_FORMAT_IS_YUV(format)) {
op_mode |= BIT(12); op_mode |= BIT(12);
op_mode |= (scaler3_cfg->uv_filter_cfg & 0x3) << 24; op_mode |= (scaler3_cfg->uv_filter_cfg & 0x3) << 24;
} }
...@@ -367,7 +367,7 @@ void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c, ...@@ -367,7 +367,7 @@ void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c,
DPU_REG_WRITE(c, QSEED3_DST_SIZE + scaler_offset, dst); DPU_REG_WRITE(c, QSEED3_DST_SIZE + scaler_offset, dst);
end: end:
if (format && !DPU_FORMAT_IS_DX(format)) if (format && !MSM_FORMAT_IS_DX(format))
op_mode |= BIT(14); op_mode |= BIT(14);
if (format && format->alpha_enable) { if (format && format->alpha_enable) {
...@@ -522,16 +522,16 @@ int dpu_hw_collect_misr(struct dpu_hw_blk_reg_map *c, ...@@ -522,16 +522,16 @@ int dpu_hw_collect_misr(struct dpu_hw_blk_reg_map *c,
#define CDP_PRELOAD_AHEAD_64 BIT(3) #define CDP_PRELOAD_AHEAD_64 BIT(3)
void dpu_setup_cdp(struct dpu_hw_blk_reg_map *c, u32 offset, void dpu_setup_cdp(struct dpu_hw_blk_reg_map *c, u32 offset,
const struct dpu_format *fmt, bool enable) const struct msm_format *fmt, bool enable)
{ {
u32 cdp_cntl = CDP_PRELOAD_AHEAD_64; u32 cdp_cntl = CDP_PRELOAD_AHEAD_64;
if (enable) if (enable)
cdp_cntl |= CDP_ENABLE; cdp_cntl |= CDP_ENABLE;
if (DPU_FORMAT_IS_UBWC(fmt)) if (MSM_FORMAT_IS_UBWC(fmt))
cdp_cntl |= CDP_UBWC_META_ENABLE; cdp_cntl |= CDP_UBWC_META_ENABLE;
if (DPU_FORMAT_IS_UBWC(fmt) || if (MSM_FORMAT_IS_UBWC(fmt) ||
DPU_FORMAT_IS_TILE(fmt)) MSM_FORMAT_IS_TILE(fmt))
cdp_cntl |= CDP_TILE_AMORTIZE_ENABLE; cdp_cntl |= CDP_TILE_AMORTIZE_ENABLE;
DPU_REG_WRITE(c, offset, cdp_cntl); DPU_REG_WRITE(c, offset, cdp_cntl);
......
...@@ -344,14 +344,14 @@ void *dpu_hw_util_get_dir(void); ...@@ -344,14 +344,14 @@ void *dpu_hw_util_get_dir(void);
void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c, void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c,
struct dpu_hw_scaler3_cfg *scaler3_cfg, struct dpu_hw_scaler3_cfg *scaler3_cfg,
u32 scaler_offset, u32 scaler_version, u32 scaler_offset, u32 scaler_version,
const struct dpu_format *format); const struct msm_format *format);
void dpu_hw_csc_setup(struct dpu_hw_blk_reg_map *c, void dpu_hw_csc_setup(struct dpu_hw_blk_reg_map *c,
u32 csc_reg_off, u32 csc_reg_off,
const struct dpu_csc_cfg *data, bool csc10); const struct dpu_csc_cfg *data, bool csc10);
void dpu_setup_cdp(struct dpu_hw_blk_reg_map *c, u32 offset, void dpu_setup_cdp(struct dpu_hw_blk_reg_map *c, u32 offset,
const struct dpu_format *fmt, bool enable); const struct msm_format *fmt, bool enable);
u64 _dpu_hw_get_qos_lut(const struct dpu_qos_lut_tbl *tbl, u64 _dpu_hw_get_qos_lut(const struct dpu_qos_lut_tbl *tbl,
u32 total_fl); u32 total_fl);
......
...@@ -67,7 +67,7 @@ static void dpu_hw_wb_setup_format(struct dpu_hw_wb *ctx, ...@@ -67,7 +67,7 @@ static void dpu_hw_wb_setup_format(struct dpu_hw_wb *ctx,
struct dpu_hw_wb_cfg *data) struct dpu_hw_wb_cfg *data)
{ {
struct dpu_hw_blk_reg_map *c = &ctx->hw; struct dpu_hw_blk_reg_map *c = &ctx->hw;
const struct dpu_format *fmt = data->dest.format; const struct msm_format *fmt = data->dest.format;
u32 dst_format, pattern, ystride0, ystride1, outsize, chroma_samp; u32 dst_format, pattern, ystride0, ystride1, outsize, chroma_samp;
u32 write_config = 0; u32 write_config = 0;
u32 opmode = 0; u32 opmode = 0;
...@@ -76,20 +76,20 @@ static void dpu_hw_wb_setup_format(struct dpu_hw_wb *ctx, ...@@ -76,20 +76,20 @@ static void dpu_hw_wb_setup_format(struct dpu_hw_wb *ctx,
chroma_samp = fmt->chroma_sample; chroma_samp = fmt->chroma_sample;
dst_format = (chroma_samp << 23) | dst_format = (chroma_samp << 23) |
(fmt->fetch_planes << 19) | (fmt->fetch_type << 19) |
(fmt->bits[C3_ALPHA] << 6) | (fmt->bpc_a << 6) |
(fmt->bits[C2_R_Cr] << 4) | (fmt->bpc_r_cr << 4) |
(fmt->bits[C1_B_Cb] << 2) | (fmt->bpc_b_cb << 2) |
(fmt->bits[C0_G_Y] << 0); (fmt->bpc_g_y << 0);
if (fmt->bits[C3_ALPHA] || fmt->alpha_enable) { if (fmt->bpc_a || fmt->alpha_enable) {
dst_format |= BIT(8); /* DSTC3_EN */ dst_format |= BIT(8); /* DSTC3_EN */
if (!fmt->alpha_enable || if (!fmt->alpha_enable ||
!(ctx->caps->features & BIT(DPU_WB_PIPE_ALPHA))) !(ctx->caps->features & BIT(DPU_WB_PIPE_ALPHA)))
dst_format |= BIT(14); /* DST_ALPHA_X */ dst_format |= BIT(14); /* DST_ALPHA_X */
} }
if (DPU_FORMAT_IS_YUV(fmt)) if (MSM_FORMAT_IS_YUV(fmt))
dst_format |= BIT(15); dst_format |= BIT(15);
pattern = (fmt->element[3] << 24) | pattern = (fmt->element[3] << 24) |
...@@ -149,7 +149,7 @@ static void dpu_hw_wb_setup_qos_lut(struct dpu_hw_wb *ctx, ...@@ -149,7 +149,7 @@ static void dpu_hw_wb_setup_qos_lut(struct dpu_hw_wb *ctx,
} }
static void dpu_hw_wb_setup_cdp(struct dpu_hw_wb *ctx, static void dpu_hw_wb_setup_cdp(struct dpu_hw_wb *ctx,
const struct dpu_format *fmt, const struct msm_format *fmt,
bool enable) bool enable)
{ {
if (!ctx) if (!ctx)
......
...@@ -46,7 +46,7 @@ struct dpu_hw_wb_ops { ...@@ -46,7 +46,7 @@ struct dpu_hw_wb_ops {
struct dpu_hw_qos_cfg *cfg); struct dpu_hw_qos_cfg *cfg);
void (*setup_cdp)(struct dpu_hw_wb *ctx, void (*setup_cdp)(struct dpu_hw_wb *ctx,
const struct dpu_format *fmt, const struct msm_format *fmt,
bool enable); bool enable);
bool (*setup_clk_force_ctrl)(struct dpu_hw_wb *ctx, bool (*setup_clk_force_ctrl)(struct dpu_hw_wb *ctx,
......
...@@ -113,7 +113,7 @@ static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane) ...@@ -113,7 +113,7 @@ static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
* Prefill BW Equation: line src bytes * line_time * Prefill BW Equation: line src bytes * line_time
*/ */
static u64 _dpu_plane_calc_bw(const struct dpu_mdss_cfg *catalog, static u64 _dpu_plane_calc_bw(const struct dpu_mdss_cfg *catalog,
const struct dpu_format *fmt, const struct msm_format *fmt,
const struct drm_display_mode *mode, const struct drm_display_mode *mode,
struct dpu_sw_pipe_cfg *pipe_cfg) struct dpu_sw_pipe_cfg *pipe_cfg)
{ {
...@@ -195,7 +195,7 @@ static u64 _dpu_plane_calc_clk(const struct drm_display_mode *mode, ...@@ -195,7 +195,7 @@ static u64 _dpu_plane_calc_clk(const struct drm_display_mode *mode,
static int _dpu_plane_calc_fill_level(struct drm_plane *plane, static int _dpu_plane_calc_fill_level(struct drm_plane *plane,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
enum dpu_qos_lut_usage lut_usage, enum dpu_qos_lut_usage lut_usage,
const struct dpu_format *fmt, u32 src_width) const struct msm_format *fmt, u32 src_width)
{ {
struct dpu_plane *pdpu; struct dpu_plane *pdpu;
u32 fixed_buff_size; u32 fixed_buff_size;
...@@ -214,7 +214,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane, ...@@ -214,7 +214,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane,
/* FIXME: in multirect case account for the src_width of all the planes */ /* FIXME: in multirect case account for the src_width of all the planes */
if (fmt->fetch_planes == MDP_PLANE_PSEUDO_PLANAR) { if (fmt->fetch_type == MDP_PLANE_PSEUDO_PLANAR) {
if (fmt->chroma_sample == CHROMA_420) { if (fmt->chroma_sample == CHROMA_420) {
/* NV12 */ /* NV12 */
total_fl = (fixed_buff_size / 2) / total_fl = (fixed_buff_size / 2) /
...@@ -236,7 +236,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane, ...@@ -236,7 +236,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane,
DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc w:%u fl:%u\n", DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc w:%u fl:%u\n",
pipe->sspp->idx - SSPP_VIG0, pipe->sspp->idx - SSPP_VIG0,
&fmt->base.pixel_format, &fmt->pixel_format,
src_width, total_fl); src_width, total_fl);
return total_fl; return total_fl;
...@@ -251,7 +251,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane, ...@@ -251,7 +251,7 @@ static int _dpu_plane_calc_fill_level(struct drm_plane *plane,
*/ */
static void _dpu_plane_set_qos_lut(struct drm_plane *plane, static void _dpu_plane_set_qos_lut(struct drm_plane *plane,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, struct dpu_sw_pipe_cfg *pipe_cfg) const struct msm_format *fmt, struct dpu_sw_pipe_cfg *pipe_cfg)
{ {
struct dpu_plane *pdpu = to_dpu_plane(plane); struct dpu_plane *pdpu = to_dpu_plane(plane);
struct dpu_hw_qos_cfg cfg; struct dpu_hw_qos_cfg cfg;
...@@ -260,7 +260,7 @@ static void _dpu_plane_set_qos_lut(struct drm_plane *plane, ...@@ -260,7 +260,7 @@ static void _dpu_plane_set_qos_lut(struct drm_plane *plane,
if (!pdpu->is_rt_pipe) { if (!pdpu->is_rt_pipe) {
lut_usage = DPU_QOS_LUT_USAGE_NRT; lut_usage = DPU_QOS_LUT_USAGE_NRT;
} else { } else {
if (fmt && DPU_FORMAT_IS_LINEAR(fmt)) if (fmt && MSM_FORMAT_IS_LINEAR(fmt))
lut_usage = DPU_QOS_LUT_USAGE_LINEAR; lut_usage = DPU_QOS_LUT_USAGE_LINEAR;
else else
lut_usage = DPU_QOS_LUT_USAGE_MACROTILE; lut_usage = DPU_QOS_LUT_USAGE_MACROTILE;
...@@ -284,24 +284,24 @@ static void _dpu_plane_set_qos_lut(struct drm_plane *plane, ...@@ -284,24 +284,24 @@ static void _dpu_plane_set_qos_lut(struct drm_plane *plane,
pdpu->is_rt_pipe); pdpu->is_rt_pipe);
trace_dpu_perf_set_qos_luts(pipe->sspp->idx - SSPP_VIG0, trace_dpu_perf_set_qos_luts(pipe->sspp->idx - SSPP_VIG0,
(fmt) ? fmt->base.pixel_format : 0, (fmt) ? fmt->pixel_format : 0,
pdpu->is_rt_pipe, total_fl, cfg.creq_lut, lut_usage); pdpu->is_rt_pipe, total_fl, cfg.creq_lut, lut_usage);
DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc rt:%d fl:%u lut:0x%llx\n", DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc rt:%d fl:%u lut:0x%llx\n",
pdpu->pipe - SSPP_VIG0, pdpu->pipe - SSPP_VIG0,
fmt ? &fmt->base.pixel_format : NULL, fmt ? &fmt->pixel_format : NULL,
pdpu->is_rt_pipe, total_fl, cfg.creq_lut); pdpu->is_rt_pipe, total_fl, cfg.creq_lut);
trace_dpu_perf_set_danger_luts(pdpu->pipe - SSPP_VIG0, trace_dpu_perf_set_danger_luts(pdpu->pipe - SSPP_VIG0,
(fmt) ? fmt->base.pixel_format : 0, (fmt) ? fmt->pixel_format : 0,
(fmt) ? fmt->base.fetch_mode : 0, (fmt) ? fmt->fetch_mode : 0,
cfg.danger_lut, cfg.danger_lut,
cfg.safe_lut); cfg.safe_lut);
DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc mode:%d luts[0x%x, 0x%x]\n", DPU_DEBUG_PLANE(pdpu, "pnum:%d fmt: %p4cc mode:%d luts[0x%x, 0x%x]\n",
pdpu->pipe - SSPP_VIG0, pdpu->pipe - SSPP_VIG0,
fmt ? &fmt->base.pixel_format : NULL, fmt ? &fmt->pixel_format : NULL,
fmt ? fmt->base.fetch_mode : -1, fmt ? fmt->fetch_mode : -1,
cfg.danger_lut, cfg.danger_lut,
cfg.safe_lut); cfg.safe_lut);
...@@ -425,7 +425,7 @@ static void _dpu_plane_set_qos_remap(struct drm_plane *plane, ...@@ -425,7 +425,7 @@ static void _dpu_plane_set_qos_remap(struct drm_plane *plane,
static void _dpu_plane_setup_scaler3(struct dpu_hw_sspp *pipe_hw, static void _dpu_plane_setup_scaler3(struct dpu_hw_sspp *pipe_hw,
uint32_t src_w, uint32_t src_h, uint32_t dst_w, uint32_t dst_h, uint32_t src_w, uint32_t src_h, uint32_t dst_w, uint32_t dst_h,
struct dpu_hw_scaler3_cfg *scale_cfg, struct dpu_hw_scaler3_cfg *scale_cfg,
const struct dpu_format *fmt, const struct msm_format *fmt,
uint32_t chroma_subsmpl_h, uint32_t chroma_subsmpl_v, uint32_t chroma_subsmpl_h, uint32_t chroma_subsmpl_v,
unsigned int rotation) unsigned int rotation)
{ {
...@@ -477,7 +477,7 @@ static void _dpu_plane_setup_scaler3(struct dpu_hw_sspp *pipe_hw, ...@@ -477,7 +477,7 @@ static void _dpu_plane_setup_scaler3(struct dpu_hw_sspp *pipe_hw,
scale_cfg->preload_y[i] = DPU_QSEED3_DEFAULT_PRELOAD_V; scale_cfg->preload_y[i] = DPU_QSEED3_DEFAULT_PRELOAD_V;
} }
} }
if (!(DPU_FORMAT_IS_YUV(fmt)) && (src_h == dst_h) if (!(MSM_FORMAT_IS_YUV(fmt)) && (src_h == dst_h)
&& (src_w == dst_w)) && (src_w == dst_w))
return; return;
...@@ -510,11 +510,11 @@ static void _dpu_plane_setup_pixel_ext(struct dpu_hw_scaler3_cfg *scale_cfg, ...@@ -510,11 +510,11 @@ static void _dpu_plane_setup_pixel_ext(struct dpu_hw_scaler3_cfg *scale_cfg,
} }
static const struct dpu_csc_cfg *_dpu_plane_get_csc(struct dpu_sw_pipe *pipe, static const struct dpu_csc_cfg *_dpu_plane_get_csc(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt) const struct msm_format *fmt)
{ {
const struct dpu_csc_cfg *csc_ptr; const struct dpu_csc_cfg *csc_ptr;
if (!DPU_FORMAT_IS_YUV(fmt)) if (!MSM_FORMAT_IS_YUV(fmt))
return NULL; return NULL;
if (BIT(DPU_SSPP_CSC_10BIT) & pipe->sspp->cap->features) if (BIT(DPU_SSPP_CSC_10BIT) & pipe->sspp->cap->features)
...@@ -526,12 +526,12 @@ static const struct dpu_csc_cfg *_dpu_plane_get_csc(struct dpu_sw_pipe *pipe, ...@@ -526,12 +526,12 @@ static const struct dpu_csc_cfg *_dpu_plane_get_csc(struct dpu_sw_pipe *pipe,
} }
static void _dpu_plane_setup_scaler(struct dpu_sw_pipe *pipe, static void _dpu_plane_setup_scaler(struct dpu_sw_pipe *pipe,
const struct dpu_format *fmt, bool color_fill, const struct msm_format *fmt, bool color_fill,
struct dpu_sw_pipe_cfg *pipe_cfg, struct dpu_sw_pipe_cfg *pipe_cfg,
unsigned int rotation) unsigned int rotation)
{ {
struct dpu_hw_sspp *pipe_hw = pipe->sspp; struct dpu_hw_sspp *pipe_hw = pipe->sspp;
const struct drm_format_info *info = drm_format_info(fmt->base.pixel_format); const struct drm_format_info *info = drm_format_info(fmt->pixel_format);
struct dpu_hw_scaler3_cfg scaler3_cfg; struct dpu_hw_scaler3_cfg scaler3_cfg;
struct dpu_hw_pixel_ext pixel_ext; struct dpu_hw_pixel_ext pixel_ext;
u32 src_width = drm_rect_width(&pipe_cfg->src_rect); u32 src_width = drm_rect_width(&pipe_cfg->src_rect);
...@@ -577,7 +577,7 @@ static void _dpu_plane_color_fill_pipe(struct dpu_plane_state *pstate, ...@@ -577,7 +577,7 @@ static void _dpu_plane_color_fill_pipe(struct dpu_plane_state *pstate,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
struct drm_rect *dst_rect, struct drm_rect *dst_rect,
u32 fill_color, u32 fill_color,
const struct dpu_format *fmt) const struct msm_format *fmt)
{ {
struct dpu_sw_pipe_cfg pipe_cfg; struct dpu_sw_pipe_cfg pipe_cfg;
...@@ -615,7 +615,7 @@ static void _dpu_plane_color_fill_pipe(struct dpu_plane_state *pstate, ...@@ -615,7 +615,7 @@ static void _dpu_plane_color_fill_pipe(struct dpu_plane_state *pstate,
static void _dpu_plane_color_fill(struct dpu_plane *pdpu, static void _dpu_plane_color_fill(struct dpu_plane *pdpu,
uint32_t color, uint32_t alpha) uint32_t color, uint32_t alpha)
{ {
const struct dpu_format *fmt; const struct msm_format *fmt;
const struct drm_plane *plane = &pdpu->base; const struct drm_plane *plane = &pdpu->base;
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);
...@@ -704,7 +704,7 @@ static void dpu_plane_cleanup_fb(struct drm_plane *plane, ...@@ -704,7 +704,7 @@ static void dpu_plane_cleanup_fb(struct drm_plane *plane,
static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu, static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu,
const struct dpu_sspp_sub_blks *sblk, const struct dpu_sspp_sub_blks *sblk,
struct drm_rect src, const struct dpu_format *fmt) struct drm_rect src, const struct msm_format *fmt)
{ {
size_t num_formats; size_t num_formats;
const u32 *supported_formats; const u32 *supported_formats;
...@@ -723,8 +723,8 @@ static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu, ...@@ -723,8 +723,8 @@ static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu,
supported_formats = sblk->rotation_cfg->rot_format_list; supported_formats = sblk->rotation_cfg->rot_format_list;
num_formats = sblk->rotation_cfg->rot_num_formats; num_formats = sblk->rotation_cfg->rot_num_formats;
if (!DPU_FORMAT_IS_UBWC(fmt) || if (!MSM_FORMAT_IS_UBWC(fmt) ||
!dpu_find_format(fmt->base.pixel_format, supported_formats, num_formats)) !dpu_find_format(fmt->pixel_format, supported_formats, num_formats))
return -EINVAL; return -EINVAL;
return 0; return 0;
...@@ -733,15 +733,15 @@ static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu, ...@@ -733,15 +733,15 @@ static int dpu_plane_check_inline_rotation(struct dpu_plane *pdpu,
static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu, static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
struct dpu_sw_pipe_cfg *pipe_cfg, struct dpu_sw_pipe_cfg *pipe_cfg,
const struct dpu_format *fmt, const struct msm_format *fmt,
const struct drm_display_mode *mode) const struct drm_display_mode *mode)
{ {
uint32_t min_src_size; uint32_t min_src_size;
struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base); struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base);
min_src_size = DPU_FORMAT_IS_YUV(fmt) ? 2 : 1; min_src_size = MSM_FORMAT_IS_YUV(fmt) ? 2 : 1;
if (DPU_FORMAT_IS_YUV(fmt) && if (MSM_FORMAT_IS_YUV(fmt) &&
(!pipe->sspp->cap->sblk->scaler_blk.len || (!pipe->sspp->cap->sblk->scaler_blk.len ||
!pipe->sspp->cap->sblk->csc_blk.len)) { !pipe->sspp->cap->sblk->csc_blk.len)) {
DPU_DEBUG_PLANE(pdpu, DPU_DEBUG_PLANE(pdpu,
...@@ -758,7 +758,7 @@ static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu, ...@@ -758,7 +758,7 @@ static int dpu_plane_atomic_check_pipe(struct dpu_plane *pdpu,
} }
/* valid yuv image */ /* valid yuv image */
if (DPU_FORMAT_IS_YUV(fmt) && if (MSM_FORMAT_IS_YUV(fmt) &&
(pipe_cfg->src_rect.x1 & 0x1 || (pipe_cfg->src_rect.x1 & 0x1 ||
pipe_cfg->src_rect.y1 & 0x1 || pipe_cfg->src_rect.y1 & 0x1 ||
drm_rect_width(&pipe_cfg->src_rect) & 0x1 || drm_rect_width(&pipe_cfg->src_rect) & 0x1 ||
...@@ -798,7 +798,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, ...@@ -798,7 +798,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
struct dpu_sw_pipe *pipe = &pstate->pipe; struct dpu_sw_pipe *pipe = &pstate->pipe;
struct dpu_sw_pipe *r_pipe = &pstate->r_pipe; struct dpu_sw_pipe *r_pipe = &pstate->r_pipe;
const struct drm_crtc_state *crtc_state = NULL; const struct drm_crtc_state *crtc_state = NULL;
const struct dpu_format *fmt; const struct msm_format *fmt;
struct dpu_sw_pipe_cfg *pipe_cfg = &pstate->pipe_cfg; struct dpu_sw_pipe_cfg *pipe_cfg = &pstate->pipe_cfg;
struct dpu_sw_pipe_cfg *r_pipe_cfg = &pstate->r_pipe_cfg; struct dpu_sw_pipe_cfg *r_pipe_cfg = &pstate->r_pipe_cfg;
struct drm_rect fb_rect = { 0 }; struct drm_rect fb_rect = { 0 };
...@@ -858,7 +858,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, ...@@ -858,7 +858,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
return -E2BIG; return -E2BIG;
} }
fmt = to_dpu_format(msm_framebuffer_format(new_plane_state->fb)); fmt = msm_framebuffer_format(new_plane_state->fb);
max_linewidth = pdpu->catalog->caps->max_linewidth; max_linewidth = pdpu->catalog->caps->max_linewidth;
...@@ -870,7 +870,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, ...@@ -870,7 +870,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
* full width is more than max_linewidth, thus each rect is * full width is more than max_linewidth, thus each rect is
* wider than allowed. * wider than allowed.
*/ */
if (DPU_FORMAT_IS_UBWC(fmt) && if (MSM_FORMAT_IS_UBWC(fmt) &&
drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) { drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) {
DPU_DEBUG_PLANE(pdpu, "invalid src " DRM_RECT_FMT " line:%u, tiled format\n", DPU_DEBUG_PLANE(pdpu, "invalid src " DRM_RECT_FMT " line:%u, tiled format\n",
DRM_RECT_ARG(&pipe_cfg->src_rect), max_linewidth); DRM_RECT_ARG(&pipe_cfg->src_rect), max_linewidth);
...@@ -887,7 +887,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, ...@@ -887,7 +887,7 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
drm_rect_height(&pipe_cfg->src_rect) != drm_rect_height(&pipe_cfg->dst_rect) || drm_rect_height(&pipe_cfg->src_rect) != drm_rect_height(&pipe_cfg->dst_rect) ||
(!test_bit(DPU_SSPP_SMART_DMA_V1, &pipe->sspp->cap->features) && (!test_bit(DPU_SSPP_SMART_DMA_V1, &pipe->sspp->cap->features) &&
!test_bit(DPU_SSPP_SMART_DMA_V2, &pipe->sspp->cap->features)) || !test_bit(DPU_SSPP_SMART_DMA_V2, &pipe->sspp->cap->features)) ||
DPU_FORMAT_IS_YUV(fmt)) { MSM_FORMAT_IS_YUV(fmt)) {
DPU_DEBUG_PLANE(pdpu, "invalid src " DRM_RECT_FMT " line:%u, can't use split source\n", DPU_DEBUG_PLANE(pdpu, "invalid src " DRM_RECT_FMT " line:%u, can't use split source\n",
DRM_RECT_ARG(&pipe_cfg->src_rect), max_linewidth); DRM_RECT_ARG(&pipe_cfg->src_rect), max_linewidth);
return -E2BIG; return -E2BIG;
...@@ -945,8 +945,8 @@ static int dpu_plane_atomic_check(struct drm_plane *plane, ...@@ -945,8 +945,8 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
static void dpu_plane_flush_csc(struct dpu_plane *pdpu, struct dpu_sw_pipe *pipe) static void dpu_plane_flush_csc(struct dpu_plane *pdpu, struct dpu_sw_pipe *pipe)
{ {
const struct dpu_format *format = const struct msm_format *format =
to_dpu_format(msm_framebuffer_format(pdpu->base.state->fb)); msm_framebuffer_format(pdpu->base.state->fb);
const struct dpu_csc_cfg *csc_ptr; const struct dpu_csc_cfg *csc_ptr;
if (!pipe->sspp || !pipe->sspp->ops.setup_csc) if (!pipe->sspp || !pipe->sspp->ops.setup_csc)
...@@ -1017,7 +1017,7 @@ void dpu_plane_set_error(struct drm_plane *plane, bool error) ...@@ -1017,7 +1017,7 @@ void dpu_plane_set_error(struct drm_plane *plane, bool error)
static void dpu_plane_sspp_update_pipe(struct drm_plane *plane, static void dpu_plane_sspp_update_pipe(struct drm_plane *plane,
struct dpu_sw_pipe *pipe, struct dpu_sw_pipe *pipe,
struct dpu_sw_pipe_cfg *pipe_cfg, struct dpu_sw_pipe_cfg *pipe_cfg,
const struct dpu_format *fmt, const struct msm_format *fmt,
int frame_rate, int frame_rate,
struct dpu_hw_fmt_layout *layout) struct dpu_hw_fmt_layout *layout)
{ {
...@@ -1095,8 +1095,8 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane) ...@@ -1095,8 +1095,8 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
struct drm_crtc *crtc = state->crtc; struct drm_crtc *crtc = state->crtc;
struct drm_framebuffer *fb = state->fb; struct drm_framebuffer *fb = state->fb;
bool is_rt_pipe; bool is_rt_pipe;
const struct dpu_format *fmt = const struct msm_format *fmt =
to_dpu_format(msm_framebuffer_format(fb)); msm_framebuffer_format(fb);
struct dpu_sw_pipe_cfg *pipe_cfg = &pstate->pipe_cfg; struct dpu_sw_pipe_cfg *pipe_cfg = &pstate->pipe_cfg;
struct dpu_sw_pipe_cfg *r_pipe_cfg = &pstate->r_pipe_cfg; struct dpu_sw_pipe_cfg *r_pipe_cfg = &pstate->r_pipe_cfg;
struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base); struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base);
...@@ -1120,7 +1120,7 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane) ...@@ -1120,7 +1120,7 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
DPU_DEBUG_PLANE(pdpu, "FB[%u] " DRM_RECT_FP_FMT "->crtc%u " DRM_RECT_FMT DPU_DEBUG_PLANE(pdpu, "FB[%u] " DRM_RECT_FP_FMT "->crtc%u " DRM_RECT_FMT
", %p4cc ubwc %d\n", fb->base.id, DRM_RECT_FP_ARG(&state->src), ", %p4cc ubwc %d\n", fb->base.id, DRM_RECT_FP_ARG(&state->src),
crtc->base.id, DRM_RECT_ARG(&state->dst), crtc->base.id, DRM_RECT_ARG(&state->dst),
&fmt->base.pixel_format, DPU_FORMAT_IS_UBWC(fmt)); &fmt->pixel_format, MSM_FORMAT_IS_UBWC(fmt));
dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt, dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt,
drm_mode_vrefresh(&crtc->mode), drm_mode_vrefresh(&crtc->mode),
......
...@@ -182,8 +182,8 @@ static void blend_setup(struct drm_crtc *crtc) ...@@ -182,8 +182,8 @@ static void blend_setup(struct drm_crtc *crtc)
enum mdp4_pipe pipe_id = mdp4_plane_pipe(plane); enum mdp4_pipe pipe_id = mdp4_plane_pipe(plane);
int idx = idxs[pipe_id]; int idx = idxs[pipe_id];
if (idx > 0) { if (idx > 0) {
const struct mdp_format *format = const struct msm_format *format =
to_mdp_format(msm_framebuffer_format(plane->state->fb)); msm_framebuffer_format(plane->state->fb);
alpha[idx-1] = format->alpha_enable; alpha[idx-1] = format->alpha_enable;
} }
} }
......
...@@ -218,7 +218,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -218,7 +218,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
struct mdp4_plane *mdp4_plane = to_mdp4_plane(plane); struct mdp4_plane *mdp4_plane = to_mdp4_plane(plane);
struct mdp4_kms *mdp4_kms = get_kms(plane); struct mdp4_kms *mdp4_kms = get_kms(plane);
enum mdp4_pipe pipe = mdp4_plane->pipe; enum mdp4_pipe pipe = mdp4_plane->pipe;
const struct mdp_format *format; const struct msm_format *format;
uint32_t op_mode = 0; uint32_t op_mode = 0;
uint32_t phasex_step = MDP4_VG_PHASE_STEP_DEFAULT; uint32_t phasex_step = MDP4_VG_PHASE_STEP_DEFAULT;
uint32_t phasey_step = MDP4_VG_PHASE_STEP_DEFAULT; uint32_t phasey_step = MDP4_VG_PHASE_STEP_DEFAULT;
...@@ -241,7 +241,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -241,7 +241,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
fb->base.id, src_x, src_y, src_w, src_h, fb->base.id, src_x, src_y, src_w, src_h,
crtc->base.id, crtc_x, crtc_y, crtc_w, crtc_h); crtc->base.id, crtc_x, crtc_y, crtc_w, crtc_h);
format = to_mdp_format(msm_framebuffer_format(fb)); format = msm_framebuffer_format(fb);
if (src_w > (crtc_w * DOWN_SCALE_MAX)) { if (src_w > (crtc_w * DOWN_SCALE_MAX)) {
DRM_DEV_ERROR(dev->dev, "Width down scaling exceeds limits!\n"); DRM_DEV_ERROR(dev->dev, "Width down scaling exceeds limits!\n");
...@@ -267,7 +267,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -267,7 +267,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
uint32_t sel_unit = SCALE_FIR; uint32_t sel_unit = SCALE_FIR;
op_mode |= MDP4_PIPE_OP_MODE_SCALEX_EN; op_mode |= MDP4_PIPE_OP_MODE_SCALEX_EN;
if (MDP_FORMAT_IS_YUV(format)) { if (MSM_FORMAT_IS_YUV(format)) {
if (crtc_w > src_w) if (crtc_w > src_w)
sel_unit = SCALE_PIXEL_RPT; sel_unit = SCALE_PIXEL_RPT;
else if (crtc_w <= (src_w / 4)) else if (crtc_w <= (src_w / 4))
...@@ -283,7 +283,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -283,7 +283,7 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
uint32_t sel_unit = SCALE_FIR; uint32_t sel_unit = SCALE_FIR;
op_mode |= MDP4_PIPE_OP_MODE_SCALEY_EN; op_mode |= MDP4_PIPE_OP_MODE_SCALEY_EN;
if (MDP_FORMAT_IS_YUV(format)) { if (MSM_FORMAT_IS_YUV(format)) {
if (crtc_h > src_h) if (crtc_h > src_h)
sel_unit = SCALE_PIXEL_RPT; sel_unit = SCALE_PIXEL_RPT;
...@@ -316,11 +316,11 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -316,11 +316,11 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRC_FORMAT(pipe), mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRC_FORMAT(pipe),
MDP4_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) | MDP4_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) |
MDP4_PIPE_SRC_FORMAT_R_BPC(format->bpc_r) | MDP4_PIPE_SRC_FORMAT_R_BPC(format->bpc_r_cr) |
MDP4_PIPE_SRC_FORMAT_G_BPC(format->bpc_g) | MDP4_PIPE_SRC_FORMAT_G_BPC(format->bpc_g_y) |
MDP4_PIPE_SRC_FORMAT_B_BPC(format->bpc_b) | MDP4_PIPE_SRC_FORMAT_B_BPC(format->bpc_b_cb) |
COND(format->alpha_enable, MDP4_PIPE_SRC_FORMAT_ALPHA_ENABLE) | COND(format->alpha_enable, MDP4_PIPE_SRC_FORMAT_ALPHA_ENABLE) |
MDP4_PIPE_SRC_FORMAT_CPP(format->cpp - 1) | MDP4_PIPE_SRC_FORMAT_CPP(format->bpp - 1) |
MDP4_PIPE_SRC_FORMAT_UNPACK_COUNT(format->unpack_count - 1) | MDP4_PIPE_SRC_FORMAT_UNPACK_COUNT(format->unpack_count - 1) |
MDP4_PIPE_SRC_FORMAT_FETCH_PLANES(format->fetch_type) | MDP4_PIPE_SRC_FORMAT_FETCH_PLANES(format->fetch_type) |
MDP4_PIPE_SRC_FORMAT_CHROMA_SAMP(format->chroma_sample) | MDP4_PIPE_SRC_FORMAT_CHROMA_SAMP(format->chroma_sample) |
...@@ -328,12 +328,12 @@ static int mdp4_plane_mode_set(struct drm_plane *plane, ...@@ -328,12 +328,12 @@ static int mdp4_plane_mode_set(struct drm_plane *plane,
COND(format->unpack_tight, MDP4_PIPE_SRC_FORMAT_UNPACK_TIGHT)); COND(format->unpack_tight, MDP4_PIPE_SRC_FORMAT_UNPACK_TIGHT));
mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRC_UNPACK(pipe), mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRC_UNPACK(pipe),
MDP4_PIPE_SRC_UNPACK_ELEM0(format->unpack[0]) | MDP4_PIPE_SRC_UNPACK_ELEM0(format->element[0]) |
MDP4_PIPE_SRC_UNPACK_ELEM1(format->unpack[1]) | MDP4_PIPE_SRC_UNPACK_ELEM1(format->element[1]) |
MDP4_PIPE_SRC_UNPACK_ELEM2(format->unpack[2]) | MDP4_PIPE_SRC_UNPACK_ELEM2(format->element[2]) |
MDP4_PIPE_SRC_UNPACK_ELEM3(format->unpack[3])); MDP4_PIPE_SRC_UNPACK_ELEM3(format->element[3]));
if (MDP_FORMAT_IS_YUV(format)) { if (MSM_FORMAT_IS_YUV(format)) {
struct csc_cfg *csc = mdp_get_default_csc_cfg(CSC_YUV2RGB); struct csc_cfg *csc = mdp_get_default_csc_cfg(CSC_YUV2RGB);
op_mode |= MDP4_PIPE_OP_MODE_SRC_YCBCR; op_mode |= MDP4_PIPE_OP_MODE_SRC_YCBCR;
......
...@@ -216,7 +216,7 @@ static void blend_setup(struct drm_crtc *crtc) ...@@ -216,7 +216,7 @@ static void blend_setup(struct drm_crtc *crtc)
struct mdp5_kms *mdp5_kms = get_kms(crtc); struct mdp5_kms *mdp5_kms = get_kms(crtc);
struct drm_plane *plane; struct drm_plane *plane;
struct mdp5_plane_state *pstate, *pstates[STAGE_MAX + 1] = {NULL}; struct mdp5_plane_state *pstate, *pstates[STAGE_MAX + 1] = {NULL};
const struct mdp_format *format; const struct msm_format *format;
struct mdp5_hw_mixer *mixer = pipeline->mixer; struct mdp5_hw_mixer *mixer = pipeline->mixer;
uint32_t lm = mixer->lm; uint32_t lm = mixer->lm;
struct mdp5_hw_mixer *r_mixer = pipeline->r_mixer; struct mdp5_hw_mixer *r_mixer = pipeline->r_mixer;
...@@ -274,7 +274,7 @@ static void blend_setup(struct drm_crtc *crtc) ...@@ -274,7 +274,7 @@ static void blend_setup(struct drm_crtc *crtc)
ctl_blend_flags |= MDP5_CTL_BLEND_OP_FLAG_BORDER_OUT; ctl_blend_flags |= MDP5_CTL_BLEND_OP_FLAG_BORDER_OUT;
DBG("Border Color is enabled"); DBG("Border Color is enabled");
} else if (plane_cnt) { } else if (plane_cnt) {
format = to_mdp_format(msm_framebuffer_format(pstates[STAGE_BASE]->base.fb)); format = msm_framebuffer_format(pstates[STAGE_BASE]->base.fb);
if (format->alpha_enable) if (format->alpha_enable)
bg_alpha_enabled = true; bg_alpha_enabled = true;
...@@ -285,8 +285,7 @@ static void blend_setup(struct drm_crtc *crtc) ...@@ -285,8 +285,7 @@ static void blend_setup(struct drm_crtc *crtc)
if (!pstates[i]) if (!pstates[i])
continue; continue;
format = to_mdp_format( format = msm_framebuffer_format(pstates[i]->base.fb);
msm_framebuffer_format(pstates[i]->base.fb));
plane = pstates[i]->base.plane; plane = pstates[i]->base.plane;
blend_op = MDP5_LM_BLEND_OP_MODE_FG_ALPHA(FG_CONST) | blend_op = MDP5_LM_BLEND_OP_MODE_FG_ALPHA(FG_CONST) |
MDP5_LM_BLEND_OP_MODE_BG_ALPHA(BG_CONST); MDP5_LM_BLEND_OP_MODE_BG_ALPHA(BG_CONST);
......
...@@ -228,12 +228,12 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state, ...@@ -228,12 +228,12 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
if (plane_enabled(state)) { if (plane_enabled(state)) {
unsigned int rotation; unsigned int rotation;
const struct mdp_format *format; const struct msm_format *format;
struct mdp5_kms *mdp5_kms = get_kms(plane); struct mdp5_kms *mdp5_kms = get_kms(plane);
uint32_t blkcfg = 0; uint32_t blkcfg = 0;
format = to_mdp_format(msm_framebuffer_format(state->fb)); format = msm_framebuffer_format(state->fb);
if (MDP_FORMAT_IS_YUV(format)) if (MSM_FORMAT_IS_YUV(format))
caps |= MDP_PIPE_CAP_SCALE | MDP_PIPE_CAP_CSC; caps |= MDP_PIPE_CAP_SCALE | MDP_PIPE_CAP_CSC;
if (((state->src_w >> 16) != state->crtc_w) || if (((state->src_w >> 16) != state->crtc_w) ||
...@@ -268,8 +268,8 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state, ...@@ -268,8 +268,8 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
new_hwpipe = true; new_hwpipe = true;
if (mdp5_kms->smp) { if (mdp5_kms->smp) {
const struct mdp_format *format = const struct msm_format *format =
to_mdp_format(msm_framebuffer_format(state->fb)); msm_framebuffer_format(state->fb);
blkcfg = mdp5_smp_calculate(mdp5_kms->smp, format, blkcfg = mdp5_smp_calculate(mdp5_kms->smp, format,
state->src_w >> 16, false); state->src_w >> 16, false);
...@@ -630,11 +630,11 @@ static int calc_scaley_steps(struct drm_plane *plane, ...@@ -630,11 +630,11 @@ static int calc_scaley_steps(struct drm_plane *plane,
return 0; return 0;
} }
static uint32_t get_scale_config(const struct mdp_format *format, static uint32_t get_scale_config(const struct msm_format *format,
uint32_t src, uint32_t dst, bool horz) uint32_t src, uint32_t dst, bool horz)
{ {
const struct drm_format_info *info = drm_format_info(format->base.pixel_format); const struct drm_format_info *info = drm_format_info(format->pixel_format);
bool yuv = MDP_FORMAT_IS_YUV(format); bool yuv = MSM_FORMAT_IS_YUV(format);
bool scaling = yuv ? true : (src != dst); bool scaling = yuv ? true : (src != dst);
uint32_t sub; uint32_t sub;
uint32_t ya_filter, uv_filter; uint32_t ya_filter, uv_filter;
...@@ -661,12 +661,12 @@ static uint32_t get_scale_config(const struct mdp_format *format, ...@@ -661,12 +661,12 @@ static uint32_t get_scale_config(const struct mdp_format *format,
COND(yuv, MDP5_PIPE_SCALE_CONFIG_SCALEY_FILTER_COMP_1_2(uv_filter)); COND(yuv, MDP5_PIPE_SCALE_CONFIG_SCALEY_FILTER_COMP_1_2(uv_filter));
} }
static void calc_pixel_ext(const struct mdp_format *format, static void calc_pixel_ext(const struct msm_format *format,
uint32_t src, uint32_t dst, uint32_t phase_step[2], uint32_t src, uint32_t dst, uint32_t phase_step[2],
int pix_ext_edge1[COMP_MAX], int pix_ext_edge2[COMP_MAX], int pix_ext_edge1[COMP_MAX], int pix_ext_edge2[COMP_MAX],
bool horz) bool horz)
{ {
bool scaling = MDP_FORMAT_IS_YUV(format) ? true : (src != dst); bool scaling = MSM_FORMAT_IS_YUV(format) ? true : (src != dst);
int i; int i;
/* /*
...@@ -684,11 +684,11 @@ static void calc_pixel_ext(const struct mdp_format *format, ...@@ -684,11 +684,11 @@ static void calc_pixel_ext(const struct mdp_format *format,
} }
static void mdp5_write_pixel_ext(struct mdp5_kms *mdp5_kms, enum mdp5_pipe pipe, static void mdp5_write_pixel_ext(struct mdp5_kms *mdp5_kms, enum mdp5_pipe pipe,
const struct mdp_format *format, const struct msm_format *format,
uint32_t src_w, int pe_left[COMP_MAX], int pe_right[COMP_MAX], uint32_t src_w, int pe_left[COMP_MAX], int pe_right[COMP_MAX],
uint32_t src_h, int pe_top[COMP_MAX], int pe_bottom[COMP_MAX]) uint32_t src_h, int pe_top[COMP_MAX], int pe_bottom[COMP_MAX])
{ {
const struct drm_format_info *info = drm_format_info(format->base.pixel_format); const struct drm_format_info *info = drm_format_info(format->pixel_format);
uint32_t lr, tb, req; uint32_t lr, tb, req;
int i; int i;
...@@ -696,7 +696,7 @@ static void mdp5_write_pixel_ext(struct mdp5_kms *mdp5_kms, enum mdp5_pipe pipe, ...@@ -696,7 +696,7 @@ static void mdp5_write_pixel_ext(struct mdp5_kms *mdp5_kms, enum mdp5_pipe pipe,
uint32_t roi_w = src_w; uint32_t roi_w = src_w;
uint32_t roi_h = src_h; uint32_t roi_h = src_h;
if (MDP_FORMAT_IS_YUV(format) && i == COMP_1_2) { if (MSM_FORMAT_IS_YUV(format) && i == COMP_1_2) {
roi_w /= info->hsub; roi_w /= info->hsub;
roi_h /= info->vsub; roi_h /= info->vsub;
} }
...@@ -770,8 +770,8 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms, ...@@ -770,8 +770,8 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms,
{ {
enum mdp5_pipe pipe = hwpipe->pipe; enum mdp5_pipe pipe = hwpipe->pipe;
bool has_pe = hwpipe->caps & MDP_PIPE_CAP_SW_PIX_EXT; bool has_pe = hwpipe->caps & MDP_PIPE_CAP_SW_PIX_EXT;
const struct mdp_format *format = const struct msm_format *format =
to_mdp_format(msm_framebuffer_format(fb)); msm_framebuffer_format(fb);
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_IMG_SIZE(pipe), mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_IMG_SIZE(pipe),
MDP5_PIPE_SRC_IMG_SIZE_WIDTH(src_img_w) | MDP5_PIPE_SRC_IMG_SIZE_WIDTH(src_img_w) |
...@@ -795,21 +795,21 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms, ...@@ -795,21 +795,21 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms,
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_FORMAT(pipe), mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_FORMAT(pipe),
MDP5_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) | MDP5_PIPE_SRC_FORMAT_A_BPC(format->bpc_a) |
MDP5_PIPE_SRC_FORMAT_R_BPC(format->bpc_r) | MDP5_PIPE_SRC_FORMAT_R_BPC(format->bpc_r_cr) |
MDP5_PIPE_SRC_FORMAT_G_BPC(format->bpc_g) | MDP5_PIPE_SRC_FORMAT_G_BPC(format->bpc_g_y) |
MDP5_PIPE_SRC_FORMAT_B_BPC(format->bpc_b) | MDP5_PIPE_SRC_FORMAT_B_BPC(format->bpc_b_cb) |
COND(format->alpha_enable, MDP5_PIPE_SRC_FORMAT_ALPHA_ENABLE) | COND(format->alpha_enable, MDP5_PIPE_SRC_FORMAT_ALPHA_ENABLE) |
MDP5_PIPE_SRC_FORMAT_CPP(format->cpp - 1) | MDP5_PIPE_SRC_FORMAT_CPP(format->bpp - 1) |
MDP5_PIPE_SRC_FORMAT_UNPACK_COUNT(format->unpack_count - 1) | MDP5_PIPE_SRC_FORMAT_UNPACK_COUNT(format->unpack_count - 1) |
COND(format->unpack_tight, MDP5_PIPE_SRC_FORMAT_UNPACK_TIGHT) | COND(format->unpack_tight, MDP5_PIPE_SRC_FORMAT_UNPACK_TIGHT) |
MDP5_PIPE_SRC_FORMAT_FETCH_TYPE(format->fetch_type) | MDP5_PIPE_SRC_FORMAT_FETCH_TYPE(format->fetch_type) |
MDP5_PIPE_SRC_FORMAT_CHROMA_SAMP(format->chroma_sample)); MDP5_PIPE_SRC_FORMAT_CHROMA_SAMP(format->chroma_sample));
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_UNPACK(pipe), mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_UNPACK(pipe),
MDP5_PIPE_SRC_UNPACK_ELEM0(format->unpack[0]) | MDP5_PIPE_SRC_UNPACK_ELEM0(format->element[0]) |
MDP5_PIPE_SRC_UNPACK_ELEM1(format->unpack[1]) | MDP5_PIPE_SRC_UNPACK_ELEM1(format->element[1]) |
MDP5_PIPE_SRC_UNPACK_ELEM2(format->unpack[2]) | MDP5_PIPE_SRC_UNPACK_ELEM2(format->element[2]) |
MDP5_PIPE_SRC_UNPACK_ELEM3(format->unpack[3])); MDP5_PIPE_SRC_UNPACK_ELEM3(format->element[3]));
mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_OP_MODE(pipe), mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC_OP_MODE(pipe),
(hflip ? MDP5_PIPE_SRC_OP_MODE_FLIP_LR : 0) | (hflip ? MDP5_PIPE_SRC_OP_MODE_FLIP_LR : 0) |
...@@ -842,7 +842,7 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms, ...@@ -842,7 +842,7 @@ static void mdp5_hwpipe_mode_set(struct mdp5_kms *mdp5_kms,
} }
if (hwpipe->caps & MDP_PIPE_CAP_CSC) { if (hwpipe->caps & MDP_PIPE_CAP_CSC) {
if (MDP_FORMAT_IS_YUV(format)) if (MSM_FORMAT_IS_YUV(format))
csc_enable(mdp5_kms, pipe, csc_enable(mdp5_kms, pipe,
mdp_get_default_csc_cfg(CSC_YUV2RGB)); mdp_get_default_csc_cfg(CSC_YUV2RGB));
else else
...@@ -861,7 +861,7 @@ static int mdp5_plane_mode_set(struct drm_plane *plane, ...@@ -861,7 +861,7 @@ static int mdp5_plane_mode_set(struct drm_plane *plane,
struct mdp5_kms *mdp5_kms = get_kms(plane); struct mdp5_kms *mdp5_kms = get_kms(plane);
enum mdp5_pipe pipe = hwpipe->pipe; enum mdp5_pipe pipe = hwpipe->pipe;
struct mdp5_hw_pipe *right_hwpipe; struct mdp5_hw_pipe *right_hwpipe;
const struct mdp_format *format; const struct msm_format *format;
uint32_t nplanes, config = 0; uint32_t nplanes, config = 0;
struct phase_step step = { { 0 } }; struct phase_step step = { { 0 } };
struct pixel_ext pe = { { 0 } }; struct pixel_ext pe = { { 0 } };
...@@ -882,8 +882,8 @@ static int mdp5_plane_mode_set(struct drm_plane *plane, ...@@ -882,8 +882,8 @@ static int mdp5_plane_mode_set(struct drm_plane *plane,
if (WARN_ON(nplanes > pipe2nclients(pipe))) if (WARN_ON(nplanes > pipe2nclients(pipe)))
return -EINVAL; return -EINVAL;
format = to_mdp_format(msm_framebuffer_format(fb)); format = msm_framebuffer_format(fb);
pix_format = format->base.pixel_format; pix_format = format->pixel_format;
src_x = src->x1; src_x = src->x1;
src_y = src->y1; src_y = src->y1;
......
...@@ -114,10 +114,10 @@ static void set_fifo_thresholds(struct mdp5_smp *smp, ...@@ -114,10 +114,10 @@ static void set_fifo_thresholds(struct mdp5_smp *smp,
* presumably happens during the dma from scanout buffer). * presumably happens during the dma from scanout buffer).
*/ */
uint32_t mdp5_smp_calculate(struct mdp5_smp *smp, uint32_t mdp5_smp_calculate(struct mdp5_smp *smp,
const struct mdp_format *format, const struct msm_format *format,
u32 width, bool hdecim) u32 width, bool hdecim)
{ {
const struct drm_format_info *info = drm_format_info(format->base.pixel_format); const struct drm_format_info *info = drm_format_info(format->pixel_format);
struct mdp5_kms *mdp5_kms = get_kms(smp); struct mdp5_kms *mdp5_kms = get_kms(smp);
int rev = mdp5_cfg_get_hw_rev(mdp5_kms->cfg); int rev = mdp5_cfg_get_hw_rev(mdp5_kms->cfg);
int i, hsub, nplanes, nlines; int i, hsub, nplanes, nlines;
......
...@@ -74,7 +74,7 @@ void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p, ...@@ -74,7 +74,7 @@ void mdp5_smp_dump(struct mdp5_smp *smp, struct drm_printer *p,
struct mdp5_global_state *global_state); struct mdp5_global_state *global_state);
uint32_t mdp5_smp_calculate(struct mdp5_smp *smp, uint32_t mdp5_smp_calculate(struct mdp5_smp *smp,
const struct mdp_format *format, const struct msm_format *format,
u32 width, bool hdecim); u32 width, bool hdecim);
int mdp5_smp_assign(struct mdp5_smp *smp, struct mdp5_smp_state *state, int mdp5_smp_assign(struct mdp5_smp *smp, struct mdp5_smp_state *state,
......
...@@ -63,26 +63,24 @@ static struct csc_cfg csc_convert[CSC_MAX] = { ...@@ -63,26 +63,24 @@ static struct csc_cfg csc_convert[CSC_MAX] = {
}; };
#define FMT(name, a, r, g, b, e0, e1, e2, e3, alpha, tight, c, cnt, fp, cs, yuv) { \ #define FMT(name, a, r, g, b, e0, e1, e2, e3, alpha, tight, c, cnt, fp, cs, yuv) { \
.base = { \ .pixel_format = DRM_FORMAT_ ## name, \
.pixel_format = DRM_FORMAT_ ## name, \
.flags = yuv ? MSM_FORMAT_FLAG_YUV : 0, \
}, \
.bpc_a = BPC ## a ## A, \ .bpc_a = BPC ## a ## A, \
.bpc_r = BPC ## r, \ .bpc_r_cr = BPC ## r, \
.bpc_g = BPC ## g, \ .bpc_g_y = BPC ## g, \
.bpc_b = BPC ## b, \ .bpc_b_cb = BPC ## b, \
.unpack = { e0, e1, e2, e3 }, \ .element = { e0, e1, e2, e3 }, \
.fetch_type = fp, \
.chroma_sample = cs, \
.alpha_enable = alpha, \ .alpha_enable = alpha, \
.unpack_tight = tight, \ .unpack_tight = tight, \
.cpp = c, \
.unpack_count = cnt, \ .unpack_count = cnt, \
.fetch_type = fp, \ .bpp = c, \
.chroma_sample = cs, \ .flags = yuv ? MSM_FORMAT_FLAG_YUV : 0, \
} }
#define BPC0A 0 #define BPC0A 0
static const struct mdp_format formats[] = { static const struct msm_format formats[] = {
/* name a r g b e0 e1 e2 e3 alpha tight cpp cnt ... */ /* name a r g b e0 e1 e2 e3 alpha tight cpp cnt ... */
FMT(ARGB8888, 8, 8, 8, 8, 1, 0, 2, 3, true, true, 4, 4, FMT(ARGB8888, 8, 8, 8, 8, 1, 0, 2, 3, true, true, 4, 4,
MDP_PLANE_INTERLEAVED, CHROMA_FULL, false), MDP_PLANE_INTERLEAVED, CHROMA_FULL, false),
...@@ -141,9 +139,9 @@ const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, ...@@ -141,9 +139,9 @@ const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format,
{ {
int i; int i;
for (i = 0; i < ARRAY_SIZE(formats); i++) { for (i = 0; i < ARRAY_SIZE(formats); i++) {
const struct mdp_format *f = &formats[i]; const struct msm_format *f = &formats[i];
if (f->base.pixel_format == format) if (f->pixel_format == format)
return &f->base; return f;
} }
return NULL; return NULL;
} }
......
...@@ -20,10 +20,38 @@ enum msm_format_flags { ...@@ -20,10 +20,38 @@ enum msm_format_flags {
#define MSM_FORMAT_FLAG_DX BIT(MSM_FORMAT_FLAG_DX_BIT) #define MSM_FORMAT_FLAG_DX BIT(MSM_FORMAT_FLAG_DX_BIT)
#define MSM_FORMAT_FLAG_COMPRESSED BIT(MSM_FORMAT_FLAG_COMPRESSED_BIT) #define MSM_FORMAT_FLAG_COMPRESSED BIT(MSM_FORMAT_FLAG_COMPRESSED_BIT)
/**
* struct msm_format: defines the format configuration
* @pixel_format: format fourcc
* @element: element color ordering
* @fetch_type: how the color components are packed in pixel format
* @chroma_sample: chroma sub-samplng type
* @alpha_enable: whether the format has an alpha channel
* @unpack_tight: whether to use tight or loose unpack
* @unpack_align_msb: unpack aligned to LSB or MSB
* @unpack_count: number of the components to unpack
* @bpp: bytes per pixel
* @flags: usage bit flags
* @num_planes: number of planes (including meta data planes)
* @fetch_mode: linear, tiled, or ubwc hw fetch behavior
* @tile_height: format tile height
*/
struct msm_format { struct msm_format {
uint32_t pixel_format; uint32_t pixel_format;
enum mdp_bpc bpc_g_y, bpc_b_cb, bpc_r_cr;
enum mdp_bpc_alpha bpc_a;
u8 element[4];
enum mdp_fetch_type fetch_type;
enum mdp_chroma_samp_type chroma_sample;
bool alpha_enable;
u8 unpack_tight;
u8 unpack_align_msb;
u8 unpack_count;
u8 bpp;
unsigned long flags; unsigned long flags;
u8 num_planes;
enum mdp_fetch_mode fetch_mode; enum mdp_fetch_mode fetch_mode;
u16 tile_height;
}; };
#define MSM_FORMAT_IS_YUV(X) ((X)->flags & MSM_FORMAT_FLAG_YUV) #define MSM_FORMAT_IS_YUV(X) ((X)->flags & MSM_FORMAT_FLAG_YUV)
......
...@@ -78,19 +78,6 @@ void mdp_irq_update(struct mdp_kms *mdp_kms); ...@@ -78,19 +78,6 @@ void mdp_irq_update(struct mdp_kms *mdp_kms);
* pixel format helpers: * pixel format helpers:
*/ */
struct mdp_format {
struct msm_format base;
enum mdp_bpc bpc_r, bpc_g, bpc_b;
enum mdp_bpc_alpha bpc_a;
uint8_t unpack[4];
bool alpha_enable, unpack_tight;
uint8_t cpp, unpack_count;
enum mdp_fetch_type fetch_type;
enum mdp_chroma_samp_type chroma_sample;
};
#define to_mdp_format(x) container_of(x, struct mdp_format, base)
#define MDP_FORMAT_IS_YUV(mdp_format) (MSM_FORMAT_IS_YUV(&(mdp_format)->base))
const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, uint64_t modifier); const struct msm_format *mdp_get_format(struct msm_kms *kms, uint32_t format, uint64_t modifier);
/* MDP capabilities */ /* MDP capabilities */
......
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