media: Rename V4L2_PIX_FMT_SUNXI_TILED_NV12 to V4L2_PIX_FMT_NV12_32L32
authorEzequiel Garcia <ezequiel@collabora.com>
Thu, 5 Aug 2021 02:47:49 +0000 (04:47 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 30 Sep 2021 08:07:39 +0000 (10:07 +0200)
The V4L2_PIX_FMT_SUNXI_TILED_NV12 format is actually a fairly
common NV12 tiled format, with 32x32 linear tiles. Rename the format
and move its documentation together with the other tiled NV12 formats.

Keep V4L2_PIX_FMT_SUNXI_TILED_NV12 for application compatibility.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Documentation/userspace-api/media/v4l/pixfmt-reserved.rst
Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
Documentation/userspace-api/media/videodev2.h.rst.exceptions
drivers/media/v4l2-core/v4l2-ioctl.c
drivers/staging/media/sunxi/cedrus/cedrus.c
drivers/staging/media/sunxi/cedrus/cedrus_hw.c
drivers/staging/media/sunxi/cedrus/cedrus_video.c
include/uapi/linux/videodev2.h

index 0b879c0da71332d1c48ae1e63d43304a51e82de3..e762f911737a5e8b8c2c084db9778dc470e57774 100644 (file)
@@ -246,20 +246,6 @@ 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).
 
 .. raw:: latex
 
index 090c091affd23bd99653b642593d2c691d9c412c..edeaf7628b284f905b70f78c83467d1a3eafc71c 100644 (file)
@@ -254,14 +254,16 @@ of the luma plane.
 
 .. _V4L2-PIX-FMT-NV12MT:
 .. _V4L2-PIX-FMT-NV12MT-16X16:
+.. _V4L2-PIX-FMT-NV12-32L32:
 
-NV12MT and MV12MT_16X16
------------------------
+Tiled NV12
+----------
 
 Semi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is
 subsampled by 2 in each direction. Chroma lines contain half the number of
 pixels and the same number of bytes as luma lines, and the chroma plane
-contains half the number of lines of the luma plane.
+contains half the number of lines of the luma plane. Each tile follows the
+previous one linearly in memory (from left to right, top to bottom).
 
 ``V4L2_PIX_FMT_NV12MT_16X16`` stores pixel in 2D 16x16 macroblocks, and stores
 macroblocks linearly in memory. The line stride and image height must be
@@ -276,6 +278,11 @@ If the vertical resolution is an odd number of macroblocks, the last row of
 macroblocks is stored in linear order. The layouts of the luma and chroma
 planes are identical.
 
+``V4L2_PIX_FMT_NV12_32L32`` stores pixel in 32x32 tiles, and stores
+tiles linearly in memory. The line stride and image height must be
+aligned to a multiple of 32. The layouts of the luma and chroma planes are
+identical.
+
 .. _nv12mt:
 
 .. kernel-figure:: nv12mt.svg
index 2217b56c26867d26f8a6a63ca906119fded19590..982675a2342e2aabade7f2c4515a5f48543f89b7 100644 (file)
@@ -187,6 +187,7 @@ replace define V4L2_CAP_IO_MC device-capabilities
 # V4L2 pix flags
 replace define V4L2_PIX_FMT_PRIV_MAGIC :c:type:`v4l2_pix_format`
 replace define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA format-flags
+replace define V4L2_PIX_FMT_SUNXI_TILED_NV12 :c:type:`v4l2_pix_format`
 
 # V4L2 format flags
 replace define V4L2_FMT_FLAG_COMPRESSED fmtdesc-flags
index 05d5db3d85e58758199f6fe89f8473dc1ce858fb..ed194e9da7b0a13b3568c6b50d8f70f7734e6a5e 100644 (file)
@@ -1282,6 +1282,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
        case V4L2_PIX_FMT_NV61:         descr = "Y/CrCb 4:2:2"; break;
        case V4L2_PIX_FMT_NV24:         descr = "Y/CbCr 4:4:4"; break;
        case V4L2_PIX_FMT_NV42:         descr = "Y/CrCb 4:4:4"; break;
+       case V4L2_PIX_FMT_NV12_32L32:   descr = "Y/CbCr 4:2:0 (32x32 Linear)"; break;
        case V4L2_PIX_FMT_NV12M:        descr = "Y/CbCr 4:2:0 (N-C)"; break;
        case V4L2_PIX_FMT_NV21M:        descr = "Y/CrCb 4:2:0 (N-C)"; break;
        case V4L2_PIX_FMT_NV16M:        descr = "Y/CbCr 4:2:2 (N-C)"; break;
@@ -1415,7 +1416,6 @@ 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:
                        if (fmt->description[0])
                                return;
index 8114e216701321cd0193ed83cc4a2293963e0f9a..1442869207497ecf4d69f2419cca2f1c2ef83fe7 100644 (file)
@@ -288,7 +288,7 @@ static int cedrus_open(struct file *file)
                ret = PTR_ERR(ctx->fh.m2m_ctx);
                goto err_ctrls;
        }
-       ctx->dst_fmt.pixelformat = V4L2_PIX_FMT_SUNXI_TILED_NV12;
+       ctx->dst_fmt.pixelformat = V4L2_PIX_FMT_NV12_32L32;
        cedrus_prepare_format(&ctx->dst_fmt);
        ctx->src_fmt.pixelformat = V4L2_PIX_FMT_MPEG2_SLICE;
        /*
index e2f2ff609c7e6326f6812851f44f924b60a73ca0..2d7663726467faf84ab714cd8571b97041127987 100644 (file)
@@ -99,7 +99,7 @@ void cedrus_dst_format_set(struct cedrus_dev *dev,
                cedrus_write(dev, VE_PRIMARY_FB_LINE_STRIDE, reg);
 
                break;
-       case V4L2_PIX_FMT_SUNXI_TILED_NV12:
+       case V4L2_PIX_FMT_NV12_32L32:
        default:
                reg = VE_PRIMARY_OUT_FMT_TILED_32_NV12;
                cedrus_write(dev, VE_PRIMARY_OUT_FMT, reg);
index f3cd452575d41ce3fd06c90864e4825137fba41c..ee73530866414f008d74c34119e9f92b7d3db96d 100644 (file)
@@ -56,7 +56,7 @@ static struct cedrus_format cedrus_formats[] = {
                .capabilities   = CEDRUS_CAPABILITY_VP8_DEC,
        },
        {
-               .pixelformat    = V4L2_PIX_FMT_SUNXI_TILED_NV12,
+               .pixelformat    = V4L2_PIX_FMT_NV12_32L32,
                .directions     = CEDRUS_DECODE_DST,
        },
        {
@@ -124,7 +124,7 @@ void cedrus_prepare_format(struct v4l2_pix_format *pix_fmt)
                sizeimage = max_t(u32, SZ_1K, sizeimage);
                break;
 
-       case V4L2_PIX_FMT_SUNXI_TILED_NV12:
+       case V4L2_PIX_FMT_NV12_32L32:
                /* 32-aligned stride. */
                bytesperline = ALIGN(width, 32);
 
index 9260791b8438f716b8ab5a1a7747ffcef3cdae83..0188cd39468f355d9d0782e2ad291e83d1b785e6 100644 (file)
@@ -627,6 +627,9 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24  YUV444 planar */
 #define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24  YVU444 planar */
 
+/* Tiled YUV formats */
+#define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12  Y/CbCr 4:2:0 32x32 tiles */
+
 /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
 #define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */
 #define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
@@ -734,7 +737,6 @@ 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 */
 #define V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
 #define V4L2_PIX_FMT_HI240    v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
 
@@ -2615,4 +2617,9 @@ struct v4l2_create_buffers {
 
 #define BASE_VIDIOC_PRIVATE    192             /* 192-255 are private */
 
+/* Deprecated definitions kept for backwards compatibility */
+#ifndef __KERNEL__
+#define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#endif
+
 #endif /* _UAPI__LINUX_VIDEODEV2_H */