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]);
......
This diff is collapsed.
...@@ -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,
......
This diff is collapsed.
...@@ -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