From 8ffc08d336326d576b84d59135402f08cf2cf41c Mon Sep 17 00:00:00 2001 From: Chen-Yu Tsai Date: Mon, 22 Jul 2019 22:13:30 +0800 Subject: [PATCH] staging: bcm2835-codec: implement V4L2_CID_MIN_BUFFERS_FOR_CAPTURE The stateful decoder specification shows an optional step for retrieving the miminum number of capture buffers required for the decoder to proceed. While not a required parameter, having it makes some applications happy. bcm2835-codec is a little different from other decoder implementations in that there is an intermediate format conversion between the hardware and V4L2 buffers. The number of capture buffers required is therefore independent of the stream and DPB etc. There are plans to remove the conversion, but it requires a fair amount of rework within the firmware. Until that is done, simply return a value of 1. Signed-off-by: Chen-Yu Tsai --- .../vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) --- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c +++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c @@ -2357,6 +2357,18 @@ static int bcm2835_codec_open(struct fil } ctx->fh.ctrl_handler = hdl; v4l2_ctrl_handler_setup(hdl); + } else if (dev->role == DECODE) { + v4l2_ctrl_handler_init(hdl, 1); + + v4l2_ctrl_new_std(hdl, &bcm2835_codec_ctrl_ops, + V4L2_CID_MIN_BUFFERS_FOR_CAPTURE, + 1, 1, 1, 1); + if (hdl->error) { + rc = hdl->error; + goto free_ctrl_handler; + } + ctx->fh.ctrl_handler = hdl; + v4l2_ctrl_handler_setup(hdl); } ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, ctx, &queue_init);