Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f35c7bc authored by Philipp Zabel's avatar Philipp Zabel Committed by Mauro Carvalho Chehab
Browse files

[media] media: coda: add horizontal / vertical flipping support



The hardware can also rotate in 90° steps, but there is no
corresponding V4L2_CID defined yet.

Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Tested-by: default avatarJavier Martin <javier.martin@vista-silicon.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 451d43ad
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ struct coda_dev {
};

struct coda_params {
	u8			rot_mode;
	u8			h264_intra_qp;
	u8			h264_inter_qp;
	u8			mpeg4_intra_qp;
@@ -700,7 +701,7 @@ static void coda_device_run(void *m2m_priv)
	}

	/* submit */
	coda_write(dev, 0, CODA_CMD_ENC_PIC_ROT_MODE);
	coda_write(dev, CODA_ROT_MIR_ENABLE | ctx->params.rot_mode, CODA_CMD_ENC_PIC_ROT_MODE);
	coda_write(dev, quant_param, CODA_CMD_ENC_PIC_QS);


@@ -1276,6 +1277,18 @@ static int coda_s_ctrl(struct v4l2_ctrl *ctrl)
		 "s_ctrl: id = %d, val = %d\n", ctrl->id, ctrl->val);

	switch (ctrl->id) {
	case V4L2_CID_HFLIP:
		if (ctrl->val)
			ctx->params.rot_mode |= CODA_MIR_HOR;
		else
			ctx->params.rot_mode &= ~CODA_MIR_HOR;
		break;
	case V4L2_CID_VFLIP:
		if (ctrl->val)
			ctx->params.rot_mode |= CODA_MIR_VER;
		else
			ctx->params.rot_mode &= ~CODA_MIR_VER;
		break;
	case V4L2_CID_MPEG_VIDEO_BITRATE:
		ctx->params.bitrate = ctrl->val / 1000;
		break;
@@ -1320,6 +1333,10 @@ static int coda_ctrls_setup(struct coda_ctx *ctx)
{
	v4l2_ctrl_handler_init(&ctx->ctrls, 9);

	v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
		V4L2_CID_HFLIP, 0, 1, 1, 0);
	v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
		V4L2_CID_VFLIP, 0, 1, 1, 0);
	v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
		V4L2_CID_MPEG_VIDEO_BITRATE, 0, 32767000, 1, 0);
	v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
+9 −0
Original line number Diff line number Diff line
@@ -188,6 +188,15 @@
#define CODA_CMD_ENC_PIC_SRC_ADDR_CR	0x188
#define CODA_CMD_ENC_PIC_QS		0x18c
#define CODA_CMD_ENC_PIC_ROT_MODE	0x190
#define		CODA_ROT_MIR_ENABLE				(1 << 4)
#define		CODA_ROT_0					(0x0 << 0)
#define		CODA_ROT_90					(0x1 << 0)
#define		CODA_ROT_180					(0x2 << 0)
#define		CODA_ROT_270					(0x3 << 0)
#define		CODA_MIR_NONE					(0x0 << 2)
#define		CODA_MIR_VER					(0x1 << 2)
#define		CODA_MIR_HOR					(0x2 << 2)
#define		CODA_MIR_VER_HOR				(0x3 << 2)
#define CODA_CMD_ENC_PIC_OPTION	0x194
#define CODA_CMD_ENC_PIC_BB_START	0x198
#define CODA_CMD_ENC_PIC_BB_SIZE	0x19c