From patchwork Fri Apr 26 01:22:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Almeida?= X-Patchwork-Id: 10917927 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B23F2933 for ; Fri, 26 Apr 2019 01:24:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9D769289B5 for ; Fri, 26 Apr 2019 01:24:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 91FF728A3C; Fri, 26 Apr 2019 01:24:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3A06E289B5 for ; Fri, 26 Apr 2019 01:24:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730555AbfDZBY4 (ORCPT ); Thu, 25 Apr 2019 21:24:56 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:36690 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726358AbfDZBY4 (ORCPT ); Thu, 25 Apr 2019 21:24:56 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: tonyk) with ESMTPSA id 15E2B267743 From: =?utf-8?q?Andr=C3=A9_Almeida?= To: linux-media@vger.kernel.org Cc: mchehab@kernel.org, hverkuil@xs4all.nl, helen.koike@collabora.com, kernel@collabora.com, lucmaga@gmail.com, lkcamp@lists.libreplanetbr.org, =?utf-8?q?Andr=C3=A9_Almeida?= Subject: [PATCH v4 14/14] media: vimc: Create multiplanar parameter Date: Thu, 25 Apr 2019 22:22:23 -0300 Message-Id: <20190426012223.17826-15-andrealmeid@collabora.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190426012223.17826-1-andrealmeid@collabora.com> References: <20190426012223.17826-1-andrealmeid@collabora.com> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Create multiplanar kernel module parameter to define if the driver is running in single planar or in multiplanar mode. Define the device capabilities according to the multiplanar kernel parameter. A device can't support both CAP_VIDEO_CAPTURE and CAP_VIDEO_CAPTURE_MPLANAR at the same time. Signed-off-by: André Almeida Acked-by: Helen Koike --- Change in v4: - Split commit with "Add handler for multiplanar fmt ioctls" Change in v3: - Squash commit with "Add handler for multiplanar fmt ioctls" - Remove functions that only did the `IS_MULTIPLANAR(vcap)` check - Assign ioctls according to device capabilities Changes in v2: - Squash commits to create multiplanar module parameter and to define the device capabilities - Move the creation of the multiplanar parameter to the end of history, so it's only added when all required changes are applied drivers/media/platform/vimc/vimc-capture.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/vimc/vimc-capture.c b/drivers/media/platform/vimc/vimc-capture.c index 932d622d56ca..c5959b8e21f7 100644 --- a/drivers/media/platform/vimc/vimc-capture.c +++ b/drivers/media/platform/vimc/vimc-capture.c @@ -28,6 +28,10 @@ #define VIMC_CAP_DRV_NAME "vimc-capture" +static unsigned int multiplanar; +module_param(multiplanar, uint, 0000); +MODULE_PARM_DESC(multiplanar, "0 (default) creates a single planar device, 1 creates a multiplanar device."); + /* Checks if the device supports multiplanar capture */ #define IS_MULTIPLANAR(vcap) \ (vcap->vdev.device_caps & V4L2_CAP_VIDEO_CAPTURE_MPLANE) @@ -597,7 +601,9 @@ static int vimc_cap_comp_bind(struct device *comp, struct device *master, /* Initialize the vb2 queue */ q = &vcap->queue; - q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + q->type = multiplanar ? + V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE : + V4L2_BUF_TYPE_VIDEO_CAPTURE; q->io_modes = VB2_MMAP | VB2_DMABUF | VB2_USERPTR; q->drv_priv = vcap; q->buf_struct_size = sizeof(struct vimc_cap_buffer); @@ -627,7 +633,9 @@ static int vimc_cap_comp_bind(struct device *comp, struct device *master, /* Initialize the video_device struct */ vdev = &vcap->vdev; - vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; + vdev->device_caps = (multiplanar ? + V4L2_CAP_VIDEO_CAPTURE_MPLANE : + V4L2_CAP_VIDEO_CAPTURE) | V4L2_CAP_STREAMING; vdev->entity.ops = &vimc_cap_mops; vdev->release = vimc_cap_release; vdev->fops = &vimc_cap_fops;