MLK-21521 VPU Decoder: add new v4l2_s_contrl for contrl decode frame disable reorder
authorShijie Qin <shijie.qin@nxp.com>
Tue, 23 Apr 2019 07:21:14 +0000 (15:21 +0800)
committerShijie Qin <shijie.qin@nxp.com>
Wed, 24 Apr 2019 01:18:40 +0000 (09:18 +0800)
    #define V4L2_CID_USER_FRAME_DIS_REORDER (V4L2_CID_USER_BASE + 0x1300)

    cfg.ops = &vpu_custom_ctrl_ops;
    cfg.id = V4L2_CID_USER_FRAME_DIS_REORDER;
    cfg.name = "frame disable reoder ctrl";
    cfg.min = 0;
    cfg.max = 1;
    cfg.step = 1;
    cfg.def = 0;
    cfg.type = V4L2_CTRL_TYPE_BOOLEAN;

Signed-off-by: Shijie Qin <shijie.qin@nxp.com>
drivers/mxc/vpu_malone/vpu_b0.c
drivers/mxc/vpu_malone/vpu_b0.h

index ca8d29d..d8ff18c 100644 (file)
@@ -1596,6 +1596,9 @@ static int v4l2_custom_s_ctrl(struct v4l2_ctrl *ctrl)
        case V4L2_CID_USER_FRAME_DEPTH:
                vpu_frm_depth = ctrl->val;
                break;
+       case V4L2_CID_USER_FRAME_DIS_REORDER:
+               ctx->b_dis_reorder = ctrl->val;
+               break;
        default:
                vpu_dbg(LVL_ERR, "%s() Invalid costomer control(%d)\n",
                                __func__, ctrl->id);
@@ -1696,6 +1699,23 @@ static int add_custom_ctrl(struct vpu_ctx *This)
                return -EINVAL;
        }
 
+       memset(&cfg, 0, sizeof(struct v4l2_ctrl_config));
+       cfg.ops = &vpu_custom_ctrl_ops;
+       cfg.id = V4L2_CID_USER_FRAME_DIS_REORDER;
+       cfg.name = "frame disable reoder ctrl";
+       cfg.min = 0;
+       cfg.max = 1;
+       cfg.step = 1;
+       cfg.def = 0;
+       cfg.type = V4L2_CTRL_TYPE_BOOLEAN;
+
+       ctrl = v4l2_ctrl_new_custom(&This->ctrl_handler,
+                       &cfg, NULL);
+       if (!ctrl) {
+               vpu_dbg(LVL_ERR, "Add custom ctrl fail\n");
+               return -EINVAL;
+       }
+
        return 0;
 }
 
@@ -1705,7 +1725,7 @@ static int ctrls_setup_decoder(struct vpu_ctx *This)
                return -EINVAL;
 
        v4l2_ctrl_handler_init(&This->ctrl_handler,
-                       NUM_CTRLS_DEC + 1
+                       NUM_CTRLS_DEC + 3
                        );
        if (This->ctrl_handler.error) {
                vpu_dbg(LVL_ERR, "%s() v4l2_ctrl_handler_init failed(%d)\n",
index 8a31250..ade2207 100644 (file)
@@ -131,6 +131,7 @@ typedef enum{
 
 #define V4L2_CID_USER_RAW_BASE  (V4L2_CID_USER_BASE + 0x1100)
 #define V4L2_CID_USER_FRAME_DEPTH (V4L2_CID_USER_BASE + 0x1200)
+#define V4L2_CID_USER_FRAME_DIS_REORDER (V4L2_CID_USER_BASE + 0x1300)
 
 enum vpu_pixel_format {
        VPU_HAS_COLOCATED = 0x00000001,