From patchwork Thu May 3 02:42:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Satish Kumar Nagireddy X-Patchwork-Id: 49173 X-Patchwork-Delegate: laurent.pinchart@ideasonboard.com Received: from vger.kernel.org ([209.132.180.67]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fE4DR-0000EL-DH; Thu, 03 May 2018 02:43:30 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751988AbeECCn1 (ORCPT + 1 other); Wed, 2 May 2018 22:43:27 -0400 Received: from mail-bl2nam02on0083.outbound.protection.outlook.com ([104.47.38.83]:27232 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751993AbeECCnO (ORCPT ); Wed, 2 May 2018 22:43:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oGQ8/QrNcnmn1pgD5IHFOmahQ84TWGwE/+aydN76Twk=; b=lB8zZG/t6s+2W4HMKpG8shvGd45eBIRlQsP0De9tl1SI7oJm2Gba0fiWSyR2ih2fiH9xGN7fe0oiVFSzM17UKrWN+ovjWbIgsqZqRDPVJsGQbJNSmDBv9ufJ4G8OQMXS01GPtVZymUOcu9GQJyYrlaMeL757HCSGBZAZjfK4v7M= Received: from BLUPR0201CA0018.namprd02.prod.outlook.com (2a01:111:e400:52e7::28) by CY1PR0201MB0681.namprd02.prod.outlook.com (2a01:111:e400:4c26::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.735.16; Thu, 3 May 2018 02:43:10 +0000 Received: from CY1NAM02FT006.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::200) by BLUPR0201CA0018.outlook.office365.com (2a01:111:e400:52e7::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.715.24 via Frontend Transport; Thu, 3 May 2018 02:43:09 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; ideasonboard.com; dkim=none (message not signed) header.d=none;ideasonboard.com; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT006.mail.protection.outlook.com (10.152.74.104) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.715.13 via Frontend Transport; Thu, 3 May 2018 02:43:09 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:39324 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1fE4D6-0006Rb-Sf; Wed, 02 May 2018 19:43:08 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1fE4D1-00058K-P3; Wed, 02 May 2018 19:43:03 -0700 Received: from xsj-pvapsmtp01 (smtp2.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w432gtRg009737; Wed, 2 May 2018 19:42:55 -0700 Received: from [172.19.2.23] (helo=xsjsatishna50.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1fE4Ct-00057Q-4N; Wed, 02 May 2018 19:42:55 -0700 From: Satish Kumar Nagireddy To: , , , CC: Satish Kumar Nagireddy Subject: [PATCH v5 8/8] v4l: xilinx: dma: Add support for 10 bit formats Date: Wed, 2 May 2018 19:42:53 -0700 Message-ID: <9aa9a3605e78b5a962c1b526a846ee5f3179d70a.1525312401.git.satish.nagireddy.nagireddy@xilinx.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(376002)(39380400002)(396003)(39860400002)(346002)(2980300002)(438002)(199004)(189003)(50466002)(426003)(4326008)(63266004)(336012)(2201001)(81166006)(81156014)(6636002)(2906002)(47776003)(106466001)(305945005)(446003)(72206003)(48376002)(77096007)(356003)(36756003)(478600001)(118296001)(476003)(126002)(50226002)(486006)(36386004)(9786002)(26005)(11346002)(8936002)(186003)(5660300001)(8676002)(316002)(106002)(51416003)(7696005)(110136005)(107886003)(16586007)(76176011)(2616005)(107986001)(5001870100001)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0201MB0681; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; LANG:en; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT006; 1:7g9X79NHEuaLm4dPK2XRJMdedubYHC+5l64KXZspIdcZzEmi2pebNcUHBACaStBI3GNVVWdGP5J9aYcbRqz1GdHHFfuJZfbIEzMj1cgYQhdSqcWm20Gwuy06Gg5FOsYF MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4608076)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060); SRVR:CY1PR0201MB0681; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0681; 3:Ip5sgB0ErHgX4wmIq7hPYX97W13xzYI2WerWVZeWrzyv9tr+p+6RHtPqVbT5QcZjDAzimkH/Ag/RzLtyJaDl+ZLlf/VYH9PDwsm68SRb0B9EhYa0EMm06meopzF6EIuah4zg+IS6ZsnKBF/vnt/dKhPo3hQPKL1N01DcVeTHbAW/kJSwSLSNWhzKOcPPhKEJ9m3262JTdNzgN+TekgbDA0LrKihD+aPqdPsvDpFDY+gNAnADKhT9L0TH9cv1dJD3ClFZo/ppLQskTfRkSO0x1rCnIM4tCft+Iin/6PPIPGv8VsMUYogTKCtbePqO9r5m4A02+1DjziaX4niFF1YKsYfx0R3UJMsJPAnUqrkZZiA=; 25:nqMFeSsY96JoXfuXaC8JDPgS2IxIyh4m0+zNtetWUzh91NoNQdIGrhXUhVJKXGnROVgymkrAUU5BjOvjEFmsTj4pOhNTBhnPQSmH20/+dj3eJPg48j0qSI1m3FAjx+/znLW4tdUdzbaB9EUB87IwT6mS7rG8HejftITcn7UyJxq3AtVSO/7XsLRv+1dwI7q30iQrENWb6lm5Xm0uqJSaPu0nivDXkRt28+Gi8k4hTWSWOGW2baleeAaeiiyRCodWkcRDDxWzZciRTmYVzar7z5zVQiJ9EhVzhNYz+8OGGZHoIDvXoK6y8t3RErBa9CyVrkIANRtfw3G8wIKf8L6o8g== X-MS-TrafficTypeDiagnostic: CY1PR0201MB0681: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0681; 31:ECVIxW0nWuLdFz9slgfOwn4n30UurP5QxmUg35Zh0PbqJtCsMW2QGYBkYa6R726tzKU2KHuK2hJtiDbQrNQnRuen58vQJr3y+TtsqH2jWNKyQ8cAEyCS2+1vWzRMkPdjJAVqQGxHFiCg17NbbLWa6Etz3Qi/IGz8uEI0L3+tcfl7I6IZp4u3L6zyIh3U/cNf1tx9R9y60147+7Q2J5EUsNtbTLtYp2jXw/UK5c3euFg=; 20:GcSBTWeDSUHQlrvlDx7VZc6p8xCwd4NeZareNYgqbT1agdywIwB4M+VO3TPMKycFB18BQiAlHaWI/ThGQHGL9VwLIOD70dnzZVOSEDk+q9wq3OhWDcesCbj9rjt5s2ltzqp8NIq4EkjYqjcznSFAMQ0JkhsgMMWKuIqWkN6f52RII8SjGsBEhErcCHgUvIHeabARxAJ6wbM25sKIv61KqibuVjHXDPGh/S8NI175Fc1wXdAC2caD0De36YIj4o7QaDsGrpDHQ+qH5ce6JFUYuTILWeSdol1KIylAKSXCwjISi/j6DaC/CYEOdoRDsdiaBmHdyfFH96ZO15sp3Ibd6+Q1/uQ/O8bm1c0BoO6LzCRk/KvE64FJ0THplTujr/aH1NFQKy0n0NMcvDh1VcsKE7nvyTlqly8GbvQpMiFBGNrt5glXqTQYJmbNMzayG8DHLSjU3MiD0VmcZrHQSBIA15R/LTNHJZ9VIFOVKC1sdnoLrcf4Yo7UgDysoV7bGDWi X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231254)(944501410)(52105095)(93006095)(93004095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:CY1PR0201MB0681; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0201MB0681; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0681; 4:39U2wWNmsgnlntZ2AtYpNN1BJ1W3J4RHJLa/3imwBVO+htz5J+XdstQQsadT5IqSVkyLSOJkobqA/XsDeIzOlIpYNAfGIpBoM3ie+RXzPzBeap7/9C05T/qs8+9MrezPU+h9MO7ibOw4eB0DJAukhHhKcbEKCkWfYdQyegP4XUysnkZ2Xi0y/h9Nogoo/GAJrxUstNA9z20TJMQhNszNTPaDxf2oWU6N4ILGsp7Oh9PJvfa6l+9F7BUp4TMheHP1V9RzMPXIhZC1BEru5BTStVRduOxiIenol0GQVtjedCY8F5e6hGHF+Ngn7apqvEG5 X-Forefront-PRVS: 066153096A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0201MB0681; 23:BOAXMp/Ej/WVXcParq5ZYaYOjzdGLi/PFNbdXLd?= =?us-ascii?Q?JqMCj4+Bqes/G5tqf4rxfyRz47b/judIM+xWifhqEDrEevtVGxA8r+Abo2Se?= =?us-ascii?Q?9zuxBDIuQ6yzHfJJ1+eoPi/04XYET0yom/ZN1fpItlWpnR4Sxs8tpEA6kneH?= =?us-ascii?Q?+tDukp9VTVxTFFXT2H22HXzUl3I2xCecGt4jvBKC5x+oFWwEc4k8KAdpqmVl?= =?us-ascii?Q?l/6rNi1T4+Qc1SC2Z1LtuT6rCJx5Z9foLHR4teIJRckGsG4SV1j2fTY03+YO?= =?us-ascii?Q?9dIRQ1VjIHMWu98G1YmC0G6d02pu2dvDLbYRXGdf8H1owjTo+zswmaBW6jbj?= =?us-ascii?Q?vrPvDlRGdq4+D4bbJtrgQo9G5vcdu27ziHixaLNWTyI3H/ldKBmzg68jTF/a?= =?us-ascii?Q?5IUWLPpWNAyxJzQsqkaKfWgJGt3TOglY+0Cf/JE5UOc1U74BHPFIPyCTGMyr?= =?us-ascii?Q?6n7UGw+6eKNuzaHE/gXYSiR9WQyQl0bg97AlHuPUeoBBX0pFalIOVoe8qskr?= =?us-ascii?Q?81ikDRqjdeg+gazRlMd5SpIRcoOrnu3cZURbnEdAiStK+U7E1tP+QvLESYQs?= =?us-ascii?Q?/jjHOCV5w/OBL7pu0oY4l/onAs9sKb/B/MTYegfkZnAvmH/N1XczTwe+HacC?= =?us-ascii?Q?eBx9y2TmAaN6X1z37kyDOXffuljM5H+GSvq4/Ai7WsFx2Ajuiij89sY7HJxH?= =?us-ascii?Q?U+D0fCsUVw8czBUtdJx4jJft80owa3ocU/OJFqPsdzZh0pllhXTcjQC4TmXU?= =?us-ascii?Q?tfQWurFHmJwHOtaLUSr2gHiUZrcv0HmxmZAF8gE+/CVIDvqtkznSfv52CrNa?= =?us-ascii?Q?4ShJvSm1bGWWKS7xd5eXt2npK2J9tG4QqkzEQUm//lgA7iTodS3RuauhFF9l?= =?us-ascii?Q?T3UEIoMPCap/1F04MLMpZ78xlvL1sGhPH9LWqZTqHDu45/Fwv+0z27KAhBeh?= =?us-ascii?Q?ZzyDd2oOYHesCB8P/kIh+fNzElsnU5AqOM5SKJyT8NT8bWo9ap+g9GFdEfZ9?= =?us-ascii?Q?lw6rvQpcTZM2cRRPKT0SEWZ2dXb8E+lNZQW8tda4poEtlWV8QKfPSbTy8U+w?= =?us-ascii?Q?rT4qvrq7kuhN7c9IF6yYXsE6MxR9dKqHW/Jt8cwNbgm2Fbu8ba4ooZbawgek?= =?us-ascii?Q?1AEiwuWvWw9CLdKghKRayXd33GkP5CNRh2aAe5T83XitR1JbA99U98JiS3ur?= =?us-ascii?Q?+thGG8ICTWYipqoq9K0LCKKehyKmqicVIBGVz?= X-Microsoft-Antispam-Message-Info: nra6v/nY3ofwMlOXxTGDUN1CbUMYqNzwkGW2jKpQWOVQtqy20r322BT0Y7MzXXp1xh/32sT1kodvtFt5fx/aXizr373rJrrCVSGzJ326VIQG+bI3DGWSLpIgAeYyRCXbIqyKCM1lsgBN8QSR6+mw0++aoRKjLj8BxH6AdxAE47x4TpCFn2mgZJEAa8n0DZk/ X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0681; 6:hFfyQSzkd+OvyyFB6IxTzyrWa6DxUVAMGSwOLUP16bR24R82aN2wQIgRRjOgtLm5rP2aolaoMot88JgIBdHIBJEqIZYQfbt+ygdkn3e/VPMUKAEs3y2/IkIF6Ri8v/cHk1sOFe0IjtJAEC9WdF7+NjOzFCmgFKvoT0SwJ+HxlbQIiI5ZyYxHWjQJtIWCAca8Z127Gp3UK2/lzKgMQ/BqZIMmjMvgBCXd7PzQgpYQWG5XoqI8GWi5CKClwjVLanPTGdWgnjyqqzjnmNUEtHa53GK7IKNBXHRhEb+KKcS0V3OkfwVqt7nCmX2O3tI07ga030T1Za//OZZcRpcqGoHCfLxKbKYnlZKBcmbx5uVfyD2FfsjLMHlCs2yCkd5+mrpwV0YdZzBWEf0uIt1wYIoMWPvwka6+KEXfOskcZ+91ISA8mu3798ksI20h9sArNwb9NACDcKYlItam3qd1YWiEgA==; 5:hFvAnXyxogYwi8XyIk1i9gMrY+LYZ9BhlE1201E3ecNLAfwKFR1gheY6/0pCs2I0HpuluMnjul3TmWglwANUxhdiqWCKBXp3gRDyAUn24ACnuCoS1SBjszDHDQMrVzXUp/5vwa+1HkZrHhBYt2AJqadbj/X8NynHmcNTKXYR0pE=; 24:txQdHTIp6jgOx4mQDdBPALQ17NVVMLauDxHidT+rUyLDj0sbTl/epnMuWue0oWjZ+Voeq/ykQTy1q5AC/rciohBcvZgRuEfy6R7rm2B9xO8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB0681; 7:+Y6f/7DBvd4uPu+qFu6g0u3hS/7REKrB0i4G3pnQsLApNmIqqivfH9FtjP4pY4nNnVIqu/zrMcjYoqZtO+0UR+ykx6aLH3tbqYNRIY8AsZkd8bOVrY8Meg1VPUAln3vQnRXSv41ZD1Wyz1XO+OPtaPPVd9WYrj2MpymcARMapMGrsTTvN5tlPnwacyok8nzSWv7iHlynymb8zc5dXqVbB/81AvUVM+14uKQ2K6D6Jm/ALnhH3wrds5MQ9QwLLe2d X-MS-Office365-Filtering-Correlation-Id: 835d2823-895e-4b4c-baf9-08d5b09f9b50 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2018 02:43:09.2497 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 835d2823-895e-4b4c-baf9-08d5b09f9b50 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0201MB0681 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patch adds xvip_format_plane_width_bytes function to calculate number of bytes for a macropixel formats and also adds new 10 bit pixel formats to video descriptor table. Signed-off-by: Satish Kumar Nagireddy --- Changes in v4: - Introduced macropixel concept to calculate bytes for a given width for 10 bit formats drivers/media/platform/xilinx/xilinx-dma.c | 5 ++-- drivers/media/platform/xilinx/xilinx-vip.c | 37 ++++++++++++++++++++++-------- drivers/media/platform/xilinx/xilinx-vip.h | 5 ++++ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/drivers/media/platform/xilinx/xilinx-dma.c b/drivers/media/platform/xilinx/xilinx-dma.c index 2ffc276..89afa24 100644 --- a/drivers/media/platform/xilinx/xilinx-dma.c +++ b/drivers/media/platform/xilinx/xilinx-dma.c @@ -370,7 +370,8 @@ static void xvip_dma_buffer_queue(struct vb2_buffer *vb) } dma->xt.frame_size = dma->fmtinfo->num_planes; - dma->sgl[0].size = pix_mp->width * dma->fmtinfo->bpp[0]; + dma->sgl[0].size = xvip_fmt_plane_width_bytes(dma->fmtinfo, + pix_mp->width); dma->sgl[0].icg = pix_mp->plane_fmt[0].bytesperline - dma->sgl[0].size; dma->xt.numf = pix_mp->height; dma->sgl[0].dst_icg = 0; @@ -591,7 +592,7 @@ __xvip_dma_try_format(struct xvip_dma *dma, * with the minimum in that case. */ max_bpl = rounddown(XVIP_DMA_MAX_WIDTH, align); - min_bpl = pix_mp->width * info->bpp[0]; + min_bpl = xvip_fmt_plane_width_bytes(info, pix_mp->width); min_bpl = roundup(min_bpl, align); bpl = roundup(plane_fmt[0].bytesperline, align); plane_fmt[0].bytesperline = clamp(bpl, min_bpl, max_bpl); diff --git a/drivers/media/platform/xilinx/xilinx-vip.c b/drivers/media/platform/xilinx/xilinx-vip.c index fb1a08f..7569f05 100644 --- a/drivers/media/platform/xilinx/xilinx-vip.c +++ b/drivers/media/platform/xilinx/xilinx-vip.c @@ -28,23 +28,25 @@ static const struct xvip_video_format xvip_video_formats[] = { { XVIP_VF_YUV_420, 8, NULL, MEDIA_BUS_FMT_VYYUYY8_1X24, - {1, 2, 0}, V4L2_PIX_FMT_NV12, 2, 2, 2, "4:2:0, semi-planar, YUV" }, + {1, 2, 0}, V4L2_PIX_FMT_NV12, 2, 2, 2, 1, 1, "4:2:0, semi-planar, YUV" }, { XVIP_VF_YUV_422, 8, NULL, MEDIA_BUS_FMT_UYVY8_1X16, - {2, 0, 0}, V4L2_PIX_FMT_YUYV, 1, 2, 1, "4:2:2, packed, YUYV" }, + {2, 0, 0}, V4L2_PIX_FMT_YUYV, 1, 2, 1, 1, 1, "4:2:2, packed, YUYV" }, { XVIP_VF_YUV_444, 8, NULL, MEDIA_BUS_FMT_VUY8_1X24, - {3, 0, 0}, V4L2_PIX_FMT_YUV444, 1, 1, 1, "4:4:4, packed, YUYV" }, + {3, 0, 0}, V4L2_PIX_FMT_YUV444, 1, 1, 1, 1, 1, "4:4:4, packed, YUYV" }, + { XVIP_VF_YUV_420, 10, NULL, MEDIA_BUS_FMT_VYYUYY8_1X24, + {1, 2, 0}, V4L2_PIX_FMT_XV15, 2, 2, 2, 4, 3, "4:2:0, 10-bit 2-plane cont" }, { XVIP_VF_RBG, 8, NULL, MEDIA_BUS_FMT_RBG888_1X24, - {3, 0, 0}, V4L2_PIX_FMT_RGB24, 1, 1, 1, "24-bit RGB" }, + {3, 0, 0}, V4L2_PIX_FMT_RGB24, 1, 1, 1, 1, 1, "24-bit RGB" }, { XVIP_VF_MONO_SENSOR, 8, "mono", MEDIA_BUS_FMT_Y8_1X8, - {1, 0, 0}, V4L2_PIX_FMT_GREY, 1, 1, 1, "Greyscale 8-bit" }, + {1, 0, 0}, V4L2_PIX_FMT_GREY, 1, 1, 1, 1, 1, "Greyscale 8-bit" }, { XVIP_VF_MONO_SENSOR, 8, "rggb", MEDIA_BUS_FMT_SRGGB8_1X8, - {1, 0, 0}, V4L2_PIX_FMT_SGRBG8, 1, 1, 1, "Bayer 8-bit RGGB" }, + {1, 0, 0}, V4L2_PIX_FMT_SGRBG8, 1, 1, 1, 1, 1, "Bayer 8-bit RGGB" }, { XVIP_VF_MONO_SENSOR, 8, "grbg", MEDIA_BUS_FMT_SGRBG8_1X8, - {1, 0, 0}, V4L2_PIX_FMT_SGRBG8, 1, 1, 1, "Bayer 8-bit GRBG" }, + {1, 0, 0}, V4L2_PIX_FMT_SGRBG8, 1, 1, 1, 1, 1, "Bayer 8-bit GRBG" }, { XVIP_VF_MONO_SENSOR, 8, "gbrg", MEDIA_BUS_FMT_SGBRG8_1X8, - {1, 0, 0}, V4L2_PIX_FMT_SGBRG8, 1, 1, 1, "Bayer 8-bit GBRG" }, + {1, 0, 0}, V4L2_PIX_FMT_SGBRG8, 1, 1, 1, 1, 1, "Bayer 8-bit GBRG" }, { XVIP_VF_MONO_SENSOR, 8, "bggr", MEDIA_BUS_FMT_SBGGR8_1X8, - {1, 0, 0}, V4L2_PIX_FMT_SBGGR8, 1, 1, 1, "Bayer 8-bit BGGR" }, + {1, 0, 0}, V4L2_PIX_FMT_SBGGR8, 1, 1, 1, 1, 1, "Bayer 8-bit BGGR" }, }; /** @@ -94,6 +96,23 @@ const struct xvip_video_format *xvip_get_format_by_fourcc(u32 fourcc) EXPORT_SYMBOL_GPL(xvip_get_format_by_fourcc); /** + * xvip_fmt_plane_width_bytes - bytes of the given width of the plane + * @info: VIP format description + * @width: width + * + * Return: Returns the number of bytes for given @width + */ +int xvip_fmt_plane_width_bytes(const struct xvip_video_format *info, u32 width) +{ + if (!info) + return 0; + + return DIV_ROUND_UP(width * info->bytes_per_macropixel * info->bpp[0], + info->pixels_per_macropixel); +} +EXPORT_SYMBOL_GPL(xvip_fmt_plane_width_bytes); + +/** * xvip_of_get_format - Parse a device tree node and return format information * @node: the device tree node * diff --git a/drivers/media/platform/xilinx/xilinx-vip.h b/drivers/media/platform/xilinx/xilinx-vip.h index 256efa2..f216e18 100644 --- a/drivers/media/platform/xilinx/xilinx-vip.h +++ b/drivers/media/platform/xilinx/xilinx-vip.h @@ -114,6 +114,8 @@ struct xvip_device { * @num_planes: number of planes w.r.t. color format * @hsub: Horizontal sampling factor of Chroma * @vsub: Vertical sampling factor of Chroma + * @bytes_per_macropixel: Number of bytes per macro-pixel + * @pixels_per_macropixel: Number of pixels per macro-pixel * @description: format description, suitable for userspace */ struct xvip_video_format { @@ -126,12 +128,15 @@ struct xvip_video_format { u8 num_planes; u8 hsub; u8 vsub; + u32 bytes_per_macropixel; + u32 pixels_per_macropixel; const char *description; }; const struct xvip_video_format *xvip_get_format_by_code(unsigned int code); const struct xvip_video_format *xvip_get_format_by_fourcc(u32 fourcc); const struct xvip_video_format *xvip_of_get_format(struct device_node *node); +int xvip_fmt_plane_width_bytes(const struct xvip_video_format *info, u32 width); void xvip_set_format_size(struct v4l2_mbus_framefmt *format, const struct v4l2_subdev_format *fmt); int xvip_enum_mbus_code(struct v4l2_subdev *subdev,