mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
media: ti-vpe: cal: Fix pixel processing parameters
The pixel processing unit was hard coded to only handle 8 bits per pixel from input to output. We now add handling for 10, 12 and 16 bits per pixel at the source and setting the in-memory size (i.e. container size) to 16 bits for these 3 cases. Signed-off-by: Benoit Parrot <bparrot@ti.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
5f9f2fb7c4
commit
cd0dacc256
@ -800,13 +800,48 @@ static void csi2_ctx_config(struct cal_ctx *ctx)
|
|||||||
|
|
||||||
static void pix_proc_config(struct cal_ctx *ctx)
|
static void pix_proc_config(struct cal_ctx *ctx)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val, extract, pack;
|
||||||
|
|
||||||
|
switch (ctx->fmt->bpp) {
|
||||||
|
case 8:
|
||||||
|
extract = CAL_PIX_PROC_EXTRACT_B8;
|
||||||
|
pack = CAL_PIX_PROC_PACK_B8;
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
extract = CAL_PIX_PROC_EXTRACT_B10_MIPI;
|
||||||
|
pack = CAL_PIX_PROC_PACK_B16;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
extract = CAL_PIX_PROC_EXTRACT_B12_MIPI;
|
||||||
|
pack = CAL_PIX_PROC_PACK_B16;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
extract = CAL_PIX_PROC_EXTRACT_B16_LE;
|
||||||
|
pack = CAL_PIX_PROC_PACK_B16;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/*
|
||||||
|
* If you see this warning then it means that you added
|
||||||
|
* some new entry in the cal_formats[] array with a different
|
||||||
|
* bit per pixel values then the one supported below.
|
||||||
|
* Either add support for the new bpp value below or adjust
|
||||||
|
* the new entry to use one of the value below.
|
||||||
|
*
|
||||||
|
* Instead of failing here just use 8 bpp as a default.
|
||||||
|
*/
|
||||||
|
dev_warn_once(&ctx->dev->pdev->dev,
|
||||||
|
"%s:%d:%s: bpp:%d unsupported! Overwritten with 8.\n",
|
||||||
|
__FILE__, __LINE__, __func__, ctx->fmt->bpp);
|
||||||
|
extract = CAL_PIX_PROC_EXTRACT_B8;
|
||||||
|
pack = CAL_PIX_PROC_PACK_B8;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
val = reg_read(ctx->dev, CAL_PIX_PROC(ctx->csi2_port));
|
val = reg_read(ctx->dev, CAL_PIX_PROC(ctx->csi2_port));
|
||||||
set_field(&val, CAL_PIX_PROC_EXTRACT_B8, CAL_PIX_PROC_EXTRACT_MASK);
|
set_field(&val, extract, CAL_PIX_PROC_EXTRACT_MASK);
|
||||||
set_field(&val, CAL_PIX_PROC_DPCMD_BYPASS, CAL_PIX_PROC_DPCMD_MASK);
|
set_field(&val, CAL_PIX_PROC_DPCMD_BYPASS, CAL_PIX_PROC_DPCMD_MASK);
|
||||||
set_field(&val, CAL_PIX_PROC_DPCME_BYPASS, CAL_PIX_PROC_DPCME_MASK);
|
set_field(&val, CAL_PIX_PROC_DPCME_BYPASS, CAL_PIX_PROC_DPCME_MASK);
|
||||||
set_field(&val, CAL_PIX_PROC_PACK_B8, CAL_PIX_PROC_PACK_MASK);
|
set_field(&val, pack, CAL_PIX_PROC_PACK_MASK);
|
||||||
set_field(&val, ctx->csi2_port, CAL_PIX_PROC_CPORT_MASK);
|
set_field(&val, ctx->csi2_port, CAL_PIX_PROC_CPORT_MASK);
|
||||||
set_field(&val, CAL_GEN_ENABLE, CAL_PIX_PROC_EN_MASK);
|
set_field(&val, CAL_GEN_ENABLE, CAL_PIX_PROC_EN_MASK);
|
||||||
reg_write(ctx->dev, CAL_PIX_PROC(ctx->csi2_port), val);
|
reg_write(ctx->dev, CAL_PIX_PROC(ctx->csi2_port), val);
|
||||||
|
Loading…
Reference in New Issue
Block a user