media: platform: mtk-mdp3: chip config split about resolution limitations
Due to differences in hardware design, the supported max and min resolutions and scaling capabilities will vary, and should be integrated into specific config file. Signed-off-by: Moudy Ho <moudy.ho@mediatek.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
6b8910e3cb
commit
b35bf333ff
@ -381,6 +381,25 @@ static const struct mdp_format mt8183_formats[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static const struct mdp_limit mt8183_mdp_def_limit = {
|
||||
.out_limit = {
|
||||
.wmin = 16,
|
||||
.hmin = 16,
|
||||
.wmax = 8176,
|
||||
.hmax = 8176,
|
||||
},
|
||||
.cap_limit = {
|
||||
.wmin = 2,
|
||||
.hmin = 2,
|
||||
.wmax = 8176,
|
||||
.hmax = 8176,
|
||||
},
|
||||
.h_scale_up_max = 32,
|
||||
.v_scale_up_max = 32,
|
||||
.h_scale_down_max = 20,
|
||||
.v_scale_down_max = 128,
|
||||
};
|
||||
|
||||
const struct mtk_mdp_driver_data mt8183_mdp_driver_data = {
|
||||
.mdp_probe_infra = mt8183_mdp_probe_infra,
|
||||
.mdp_cfg = &mt8183_plat_cfg,
|
||||
@ -390,6 +409,7 @@ const struct mtk_mdp_driver_data mt8183_mdp_driver_data = {
|
||||
.mdp_sub_comp_dt_ids = mt8183_sub_comp_dt_ids,
|
||||
.format = mt8183_formats,
|
||||
.format_len = ARRAY_SIZE(mt8183_formats),
|
||||
.def_limit = &mt8183_mdp_def_limit,
|
||||
};
|
||||
|
||||
s32 mdp_cfg_get_id_inner(struct mdp_dev *mdp_dev, enum mtk_mdp_comp_id id)
|
||||
|
@ -59,6 +59,7 @@ struct mtk_mdp_driver_data {
|
||||
const struct of_device_id *mdp_sub_comp_dt_ids;
|
||||
const struct mdp_format *format;
|
||||
unsigned int format_len;
|
||||
const struct mdp_limit *def_limit;
|
||||
};
|
||||
|
||||
struct mdp_dev {
|
||||
|
@ -558,6 +558,7 @@ static int mdp_m2m_open(struct file *file)
|
||||
struct device *dev = &mdp->pdev->dev;
|
||||
int ret;
|
||||
struct v4l2_format default_format = {};
|
||||
const struct mdp_limit *limit = mdp->mdp_data->def_limit;
|
||||
|
||||
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
|
||||
if (!ctx)
|
||||
@ -605,8 +606,8 @@ static int mdp_m2m_open(struct file *file)
|
||||
|
||||
/* Default format */
|
||||
default_format.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
|
||||
default_format.fmt.pix_mp.width = 32;
|
||||
default_format.fmt.pix_mp.height = 32;
|
||||
default_format.fmt.pix_mp.width = limit->out_limit.wmin;
|
||||
default_format.fmt.pix_mp.height = limit->out_limit.hmin;
|
||||
default_format.fmt.pix_mp.pixelformat = V4L2_PIX_FMT_YUV420M;
|
||||
mdp_m2m_s_fmt_mplane(file, &ctx->fh, &default_format);
|
||||
default_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||
|
@ -12,25 +12,6 @@
|
||||
#include "mtk-mdp3-regs.h"
|
||||
#include "mtk-mdp3-m2m.h"
|
||||
|
||||
static const struct mdp_limit mdp_def_limit = {
|
||||
.out_limit = {
|
||||
.wmin = 16,
|
||||
.hmin = 16,
|
||||
.wmax = 8176,
|
||||
.hmax = 8176,
|
||||
},
|
||||
.cap_limit = {
|
||||
.wmin = 2,
|
||||
.hmin = 2,
|
||||
.wmax = 8176,
|
||||
.hmax = 8176,
|
||||
},
|
||||
.h_scale_up_max = 32,
|
||||
.v_scale_up_max = 32,
|
||||
.h_scale_down_max = 20,
|
||||
.v_scale_down_max = 128,
|
||||
};
|
||||
|
||||
static const struct mdp_format *mdp_find_fmt(const struct mtk_mdp_driver_data *mdp_data,
|
||||
u32 pixelformat, u32 type)
|
||||
{
|
||||
@ -487,7 +468,7 @@ int mdp_frameparam_init(struct mdp_dev *mdp, struct mdp_frameparam *param)
|
||||
return -EINVAL;
|
||||
|
||||
INIT_LIST_HEAD(¶m->list);
|
||||
param->limit = &mdp_def_limit;
|
||||
param->limit = mdp->mdp_data->def_limit;
|
||||
param->type = MDP_STREAM_TYPE_BITBLT;
|
||||
|
||||
frame = ¶m->output;
|
||||
|
Loading…
x
Reference in New Issue
Block a user