Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1106272imm; Thu, 6 Sep 2018 15:42:25 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZxFrbyO0E/W6J+RQQa7e3Vijfe0wyiUCIPHzC1bJPrKEgmbNkBhufoStsaVpFriZaL9IHJ X-Received: by 2002:a63:d857:: with SMTP id k23-v6mr5219355pgj.106.1536273745727; Thu, 06 Sep 2018 15:42:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536273745; cv=none; d=google.com; s=arc-20160816; b=iZbfKcMcCxBsljua+pMePNX13oBAlbK8ca53e+Dvz1UJG7er2zy6c+ZYcHMxH1dwZB 3FpWwPUl+9NubJM+nc5Ba+4fRFfo8v2bTw8NeZ1xtftri9WVIeqAt+cGGnv2JgtX2krm 2q6eyXKMZbeBCeJz77TrDuuxDgztQUSxLYij7VxBZaJitZ9TCQvbWablcTAYIAce6/w4 LeeWS43jGXZqBv+GanMK0RTl+jgypP6vDFbwkHobmatjx7wM3+YrMtY4IbGgZdy24e1C hxdVQQtIMJpR/yIfXM9s7pcmEvbSmdhNmEuUpy3PlDgk2VuwP3cjkzYP5NPTHxtjD6I0 uWnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=nAzUbdE+apx3HzmcixBDf5gnp6ZVUgXharohgJhvpQY=; b=vnqJNiXZoVOLg8BFrNSVFgqs6txnjurcVq1JQ+SUFIXGgXJVQc69k+wkDo2Aq08s0H yhDb8Lr0tDJ+8zqZLHhJTcGVS5dEJWgh8CUNzNiqBbbYHAbcMjj/mO90XSSs9jr2p9OR fIDes73I5thxKl0pR7dFAuB/coHf7rs6Se+NpiW1/yJNs+dnz+ODzKpvwvWUgh0PvuxC 636ytX6tNRtHfNO7bE88a7w1XRYyUr8KiTm2stJmmCDAOZSoy7hwl+VKjRJkWjQ/GZ/L hDoDWgChQ6fQ4Fhl2D9o9tA8Ef1OvwkCSs1kyvrvNDlC7Sj2sqZFJgKcJWw/zsRTskTV jPWg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r3-v6si5873060plb.221.2018.09.06.15.42.10; Thu, 06 Sep 2018 15:42:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728795AbeIGDHT (ORCPT + 99 others); Thu, 6 Sep 2018 23:07:19 -0400 Received: from leonov.paulk.fr ([185.233.101.22]:56624 "EHLO leonov.paulk.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727770AbeIGDHS (ORCPT ); Thu, 6 Sep 2018 23:07:18 -0400 Received: from gagarine.paulk.fr (gagarine [192.168.1.127]) by leonov.paulk.fr (Postfix) with ESMTPS id 2CACCC025E; Fri, 7 Sep 2018 00:29:39 +0200 (CEST) Received: by gagarine.paulk.fr (Postfix, from userid 114) id CABA6C0F74; Fri, 7 Sep 2018 00:29:37 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on gagarine.paulk.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.1 Received: from localhost.localdomain (collins [192.168.1.129]) by gagarine.paulk.fr (Postfix) with ESMTP id 96487C0F5A; Fri, 7 Sep 2018 00:25:06 +0200 (CEST) From: Paul Kocialkowski To: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org Cc: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai , Greg Kroah-Hartman , Paul Kocialkowski , Thomas Petazzoni , linux-sunxi@googlegroups.com, Randy Li , Hans Verkuil , Ezequiel Garcia , Tomasz Figa , Alexandre Courbot , Philipp Zabel , Laurent Pinchart , Sakari Ailus Subject: [PATCH v9 3/9] media: v4l: Add definition for the Sunxi tiled NV12 format Date: Fri, 7 Sep 2018 00:24:36 +0200 Message-Id: <20180906222442.14825-4-contact@paulk.fr> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180906222442.14825-1-contact@paulk.fr> References: <20180906222442.14825-1-contact@paulk.fr> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Paul Kocialkowski This introduces support for the Sunxi tiled NV12 format, where each component of the YUV frame is divided into macroblocks. Hence, the size of each plane requires specific alignment. The pixels inside each macroblock are coded in linear order (line after line from top to bottom). This tiled NV12 format is used by the video engine on Allwinner platforms: it is the default format for decoded frames (and the only one available in the oldest supported platforms). Signed-off-by: Paul Kocialkowski --- Documentation/media/uapi/v4l/pixfmt-reserved.rst | 15 ++++++++++++++- drivers/media/v4l2-core/v4l2-ioctl.c | 1 + include/uapi/linux/videodev2.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/Documentation/media/uapi/v4l/pixfmt-reserved.rst b/Documentation/media/uapi/v4l/pixfmt-reserved.rst index 38af1472a4b4..0c399858bda2 100644 --- a/Documentation/media/uapi/v4l/pixfmt-reserved.rst +++ b/Documentation/media/uapi/v4l/pixfmt-reserved.rst @@ -243,7 +243,20 @@ please make a proposal on the linux-media mailing list. It is an opaque intermediate format and the MDP hardware must be used to convert ``V4L2_PIX_FMT_MT21C`` to ``V4L2_PIX_FMT_NV12M``, ``V4L2_PIX_FMT_YUV420M`` or ``V4L2_PIX_FMT_YVU420``. - + * .. _V4L2-PIX-FMT-SUNXI-TILED-NV12: + + - ``V4L2_PIX_FMT_SUNXI_TILED_NV12`` + - 'ST12' + - Two-planar NV12-based format used by the video engine found on Allwinner + (codenamed sunxi) platforms, with 32x32 tiles for the luminance plane + and 32x64 tiles for the chrominance plane. The data in each tile is + stored in linear order, within the tile bounds. Each tile follows the + previous one linearly in memory (from left to right, top to bottom). + + The associated buffer dimensions are aligned to match an integer number + of tiles, resulting in 32-aligned resolutions for the luminance plane + and 16-aligned resolutions for the chrominance plane (with 2x2 + subsampling). .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index 1a8feaf6c3f7..c148c44caffb 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -1337,6 +1337,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) case V4L2_PIX_FMT_SE401: descr = "GSPCA SE401"; break; case V4L2_PIX_FMT_S5C_UYVY_JPG: descr = "S5C73MX interleaved UYVY/JPEG"; break; case V4L2_PIX_FMT_MT21C: descr = "Mediatek Compressed Format"; break; + case V4L2_PIX_FMT_SUNXI_TILED_NV12: descr = "Sunxi Tiled NV12 Format"; break; default: WARN(1, "Unknown pixelformat 0x%08x\n", fmt->pixelformat); if (fmt->description[0]) diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 314ec7a5f046..7412a255d9ce 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -677,6 +677,7 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */ #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */ #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */ +#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */ /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */ #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */ -- 2.18.0