diff --git a/include/uapi/display/media/msm_sde_rotator.h b/include/uapi/display/media/msm_sde_rotator.h index 8c04e0ce..e8a2083f 100644 --- a/include/uapi/display/media/msm_sde_rotator.h +++ b/include/uapi/display/media/msm_sde_rotator.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ /* - * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. */ #ifndef __UAPI_MSM_SDE_ROTATOR_H__ @@ -11,66 +11,124 @@ #include /* SDE Rotator pixel format definitions */ -#define SDE_PIX_FMT_XRGB_8888 V4L2_PIX_FMT_XBGR32 -#define SDE_PIX_FMT_ARGB_8888 V4L2_PIX_FMT_ABGR32 -#define SDE_PIX_FMT_ABGR_8888 V4L2_PIX_FMT_SDE_ABGR_8888 -#define SDE_PIX_FMT_RGBA_8888 V4L2_PIX_FMT_SDE_RGBA_8888 -#define SDE_PIX_FMT_BGRA_8888 V4L2_PIX_FMT_ARGB32 -#define SDE_PIX_FMT_RGBX_8888 V4L2_PIX_FMT_SDE_RGBX_8888 -#define SDE_PIX_FMT_BGRX_8888 V4L2_PIX_FMT_XRGB32 -#define SDE_PIX_FMT_XBGR_8888 V4L2_PIX_FMT_SDE_XBGR_8888 -#define SDE_PIX_FMT_RGBA_5551 V4L2_PIX_FMT_SDE_RGBA_5551 -#define SDE_PIX_FMT_ARGB_1555 V4L2_PIX_FMT_ARGB555 -#define SDE_PIX_FMT_ABGR_1555 V4L2_PIX_FMT_SDE_ABGR_1555 -#define SDE_PIX_FMT_BGRA_5551 V4L2_PIX_FMT_SDE_BGRA_5551 -#define SDE_PIX_FMT_BGRX_5551 V4L2_PIX_FMT_SDE_BGRX_5551 -#define SDE_PIX_FMT_RGBX_5551 V4L2_PIX_FMT_SDE_RGBX_5551 -#define SDE_PIX_FMT_XBGR_1555 V4L2_PIX_FMT_SDE_XBGR_1555 -#define SDE_PIX_FMT_XRGB_1555 V4L2_PIX_FMT_XRGB555 -#define SDE_PIX_FMT_ARGB_4444 V4L2_PIX_FMT_ARGB444 -#define SDE_PIX_FMT_RGBA_4444 V4L2_PIX_FMT_SDE_RGBA_4444 -#define SDE_PIX_FMT_BGRA_4444 V4L2_PIX_FMT_SDE_BGRA_4444 -#define SDE_PIX_FMT_ABGR_4444 V4L2_PIX_FMT_SDE_ABGR_4444 -#define SDE_PIX_FMT_RGBX_4444 V4L2_PIX_FMT_SDE_RGBX_4444 -#define SDE_PIX_FMT_XRGB_4444 V4L2_PIX_FMT_XRGB444 -#define SDE_PIX_FMT_BGRX_4444 V4L2_PIX_FMT_SDE_BGRX_4444 -#define SDE_PIX_FMT_XBGR_4444 V4L2_PIX_FMT_SDE_XBGR_4444 -#define SDE_PIX_FMT_RGB_888 V4L2_PIX_FMT_RGB24 -#define SDE_PIX_FMT_BGR_888 V4L2_PIX_FMT_BGR24 -#define SDE_PIX_FMT_RGB_565 V4L2_PIX_FMT_RGB565 -#define SDE_PIX_FMT_BGR_565 V4L2_PIX_FMT_SDE_BGR_565 -#define SDE_PIX_FMT_Y_CB_CR_H2V2 V4L2_PIX_FMT_YUV420 -#define SDE_PIX_FMT_Y_CR_CB_H2V2 V4L2_PIX_FMT_YVU420 -#define SDE_PIX_FMT_Y_CR_CB_GH2V2 V4L2_PIX_FMT_SDE_Y_CR_CB_GH2V2 -#define SDE_PIX_FMT_Y_CBCR_H2V2 V4L2_PIX_FMT_NV12 -#define SDE_PIX_FMT_Y_CRCB_H2V2 V4L2_PIX_FMT_NV21 -#define SDE_PIX_FMT_Y_CBCR_H1V2 V4L2_PIX_FMT_SDE_Y_CBCR_H1V2 -#define SDE_PIX_FMT_Y_CRCB_H1V2 V4L2_PIX_FMT_SDE_Y_CRCB_H1V2 -#define SDE_PIX_FMT_Y_CBCR_H2V1 V4L2_PIX_FMT_NV16 -#define SDE_PIX_FMT_Y_CRCB_H2V1 V4L2_PIX_FMT_NV61 -#define SDE_PIX_FMT_YCBYCR_H2V1 V4L2_PIX_FMT_YUYV -#define SDE_PIX_FMT_Y_CBCR_H2V2_VENUS V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_VENUS -#define SDE_PIX_FMT_Y_CRCB_H2V2_VENUS V4L2_PIX_FMT_SDE_Y_CRCB_H2V2_VENUS -#define SDE_PIX_FMT_RGBA_8888_UBWC V4L2_PIX_FMT_RGBA8888_UBWC -#define SDE_PIX_FMT_RGBX_8888_UBWC V4L2_PIX_FMT_SDE_RGBX_8888_UBWC -#define SDE_PIX_FMT_RGB_565_UBWC V4L2_PIX_FMT_SDE_RGB_565_UBWC -#define SDE_PIX_FMT_Y_CBCR_H2V2_UBWC V4L2_PIX_FMT_NV12_UBWC -#define SDE_PIX_FMT_RGBA_1010102 V4L2_PIX_FMT_SDE_RGBA_1010102 -#define SDE_PIX_FMT_RGBX_1010102 V4L2_PIX_FMT_SDE_RGBX_1010102 -#define SDE_PIX_FMT_ARGB_2101010 V4L2_PIX_FMT_SDE_ARGB_2101010 -#define SDE_PIX_FMT_XRGB_2101010 V4L2_PIX_FMT_SDE_XRGB_2101010 -#define SDE_PIX_FMT_BGRA_1010102 V4L2_PIX_FMT_SDE_BGRA_1010102 -#define SDE_PIX_FMT_BGRX_1010102 V4L2_PIX_FMT_SDE_BGRX_1010102 -#define SDE_PIX_FMT_ABGR_2101010 V4L2_PIX_FMT_SDE_ABGR_2101010 -#define SDE_PIX_FMT_XBGR_2101010 V4L2_PIX_FMT_SDE_XBGR_2101010 -#define SDE_PIX_FMT_RGBA_1010102_UBWC V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC -#define SDE_PIX_FMT_RGBX_1010102_UBWC V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC -#define SDE_PIX_FMT_Y_CBCR_H2V2_P010 V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010 +#define SDE_PIX_FMT_XRGB_8888 \ + v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */ +#define SDE_PIX_FMT_ARGB_8888 \ + v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */ +#define SDE_PIX_FMT_ABGR_8888 \ + v4l2_fourcc('R', 'A', '2', '4') /* 32-bit ABGR 8:8:8:8 */ +#define SDE_PIX_FMT_RGBA_8888 \ + v4l2_fourcc('A', 'B', '2', '4') /* 32-bit RGBA 8:8:8:8 */ +#define SDE_PIX_FMT_BGRA_8888 \ + v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */ +#define SDE_PIX_FMT_RGBX_8888 \ + v4l2_fourcc('X', 'B', '2', '4') /* 32-bit RGBX 8:8:8:8 */ +#define SDE_PIX_FMT_BGRX_8888 \ + v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */ +#define SDE_PIX_FMT_XBGR_8888 \ + v4l2_fourcc('R', 'X', '2', '4') /* 32-bit XBGR 8:8:8:8 */ +#define SDE_PIX_FMT_RGBA_5551 \ + v4l2_fourcc('R', 'A', '1', '5') /* 16-bit RGBA 5:5:5:1 */ +#define SDE_PIX_FMT_ARGB_1555 \ + v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */ +#define SDE_PIX_FMT_ABGR_1555 \ + v4l2_fourcc('A', 'B', '1', '5') /* 16-bit ABGR 1:5:5:5 */ +#define SDE_PIX_FMT_BGRA_5551 \ + v4l2_fourcc('B', 'A', '1', '5') /* 16-bit BGRA 5:5:5:1 */ +#define SDE_PIX_FMT_BGRX_5551 \ + v4l2_fourcc('B', 'X', '1', '5') /* 16-bit BGRX 5:5:5:1 */ +#define SDE_PIX_FMT_RGBX_5551 \ + v4l2_fourcc('R', 'X', '1', '5') /* 16-bit RGBX 5:5:5:1 */ +#define SDE_PIX_FMT_XBGR_1555 \ + v4l2_fourcc('X', 'B', '1', '5') /* 16-bit XBGR 1:5:5:5 */ +#define SDE_PIX_FMT_XRGB_1555 \ + v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */ +#define SDE_PIX_FMT_ARGB_4444 \ + v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */ +#define SDE_PIX_FMT_RGBA_4444 \ + v4l2_fourcc('R', 'A', '1', '2') /* 16-bit RGBA 4:4:4:4 */ +#define SDE_PIX_FMT_BGRA_4444 \ + v4l2_fourcc('b', 'A', '1', '2') /* 16-bit BGRA 4:4:4:4 */ +#define SDE_PIX_FMT_ABGR_4444 \ + v4l2_fourcc('A', 'B', '1', '2') /* 16-bit ABGR 4:4:4:4 */ +#define SDE_PIX_FMT_RGBX_4444 \ + v4l2_fourcc('R', 'X', '1', '2') /* 16-bit RGBX 4:4:4:4 */ +#define SDE_PIX_FMT_XRGB_4444 \ + v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */ +#define SDE_PIX_FMT_BGRX_4444 \ + v4l2_fourcc('B', 'X', '1', '2') /* 16-bit BGRX 4:4:4:4 */ +#define SDE_PIX_FMT_XBGR_4444 \ + v4l2_fourcc('X', 'B', '1', '2') /* 16-bit XBGR 4:4:4:4 */ +#define SDE_PIX_FMT_RGB_888 \ + v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ +#define SDE_PIX_FMT_BGR_888 \ + v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */ +#define SDE_PIX_FMT_RGB_565 \ + v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */ +#define SDE_PIX_FMT_BGR_565 \ + v4l2_fourcc('B', 'G', '1', '6') /* 16-bit BGR 5:6:5 */ +#define SDE_PIX_FMT_Y_CB_CR_H2V2 \ + v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ +#define SDE_PIX_FMT_Y_CR_CB_H2V2 \ + v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ +#define SDE_PIX_FMT_Y_CR_CB_GH2V2 \ + v4l2_fourcc('Y', 'U', '4', '2') /* Planar YVU 4:2:0 A16 */ +#define SDE_PIX_FMT_Y_CBCR_H2V2 \ + v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ +#define SDE_PIX_FMT_Y_CRCB_H2V2 \ + v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */ +#define SDE_PIX_FMT_Y_CBCR_H1V2 \ + v4l2_fourcc('N', 'H', '1', '6') /* Y/CbCr 4:2:2 */ +#define SDE_PIX_FMT_Y_CRCB_H1V2 \ + v4l2_fourcc('N', 'H', '6', '1') /* Y/CrCb 4:2:2 */ +#define SDE_PIX_FMT_Y_CBCR_H2V1 \ + v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ +#define SDE_PIX_FMT_Y_CRCB_H2V1 \ + v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ +#define SDE_PIX_FMT_YCBYCR_H2V1 \ + v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ +#define SDE_PIX_FMT_Y_CBCR_H2V2_VENUS \ + v4l2_fourcc('Q', 'N', 'V', '2') /* Y/CbCr 4:2:0 Venus */ +#define SDE_PIX_FMT_Y_CRCB_H2V2_VENUS \ + v4l2_fourcc('Q', 'N', 'V', '1') /* Y/CrCb 4:2:0 Venus */ +#define SDE_PIX_FMT_RGBA_8888_UBWC \ + v4l2_fourcc('Q', 'R', 'G', 'B') /* RGBA 8:8:8:8 UBWC */ +#define SDE_PIX_FMT_RGBX_8888_UBWC \ + v4l2_fourcc('Q', 'X', 'B', '4') /* RGBX 8:8:8:8 UBWC */ +#define SDE_PIX_FMT_RGB_565_UBWC \ + v4l2_fourcc('Q', 'R', 'G', '6') /* RGB 5:6:5 UBWC */ +#define SDE_PIX_FMT_Y_CBCR_H2V2_UBWC \ + v4l2_fourcc('Q', '1', '2', '8') /* UBWC 8-bit Y/CbCr 4:2:0 */ +#define SDE_PIX_FMT_RGBA_1010102 \ + v4l2_fourcc('A', 'B', '3', '0') /* RGBA 10:10:10:2 */ +#define SDE_PIX_FMT_RGBX_1010102 \ + v4l2_fourcc('X', 'B', '3', '0') /* RGBX 10:10:10:2 */ +#define SDE_PIX_FMT_ARGB_2101010 \ + v4l2_fourcc('A', 'R', '3', '0') /* ARGB 2:10:10:10 */ +#define SDE_PIX_FMT_XRGB_2101010 \ + v4l2_fourcc('X', 'R', '3', '0') /* XRGB 2:10:10:10 */ +#define SDE_PIX_FMT_BGRA_1010102 \ + v4l2_fourcc('B', 'A', '3', '0') /* BGRA 10:10:10:2 */ +#define SDE_PIX_FMT_BGRX_1010102 \ + v4l2_fourcc('B', 'X', '3', '0') /* BGRX 10:10:10:2 */ +#define SDE_PIX_FMT_ABGR_2101010 \ + v4l2_fourcc('R', 'A', '3', '0') /* ABGR 2:10:10:10 */ +#define SDE_PIX_FMT_XBGR_2101010 \ + v4l2_fourcc('R', 'X', '3', '0') /* XBGR 2:10:10:10 */ +#define SDE_PIX_FMT_RGBA_1010102_UBWC \ + v4l2_fourcc('Q', 'R', 'B', 'A') /* RGBA 10:10:10:2 UBWC */ +#define SDE_PIX_FMT_RGBX_1010102_UBWC \ + v4l2_fourcc('Q', 'X', 'B', 'A') /* RGBX 10:10:10:2 UBWC */ +#define SDE_PIX_FMT_Y_CBCR_H2V2_P010 \ + v4l2_fourcc('P', '0', '1', '0') /* Y/CbCr 4:2:0 P10 */ #define SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS \ - V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010_VENUS -#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10 V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10 -#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC V4L2_PIX_FMT_NV12_TP10_UBWC -#define SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC V4L2_PIX_FMT_NV12_P010_UBWC + v4l2_fourcc('Q', 'P', '1', '0') /* Y/CbCr 4:2:0 P10 Venus*/ +#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10 \ + v4l2_fourcc('T', 'P', '1', '0') /* Y/CbCr 4:2:0 TP10 */ +#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC \ + v4l2_fourcc('Q', '1', '2', 'A') /* UBWC Y/CbCr 4:2:0 TP10 */ +#define SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC \ + v4l2_fourcc('Q', '1', '2', 'B') /* UBWC Y/CbCr 4:2:0 P10 */ /* * struct msm_sde_rotator_fence - v4l2 buffer fence info diff --git a/rotator/sde_rotator_dev.c b/rotator/sde_rotator_dev.c index aab5aff5..1c9dbe2f 100644 --- a/rotator/sde_rotator_dev.c +++ b/rotator/sde_rotator_dev.c @@ -3476,6 +3476,9 @@ static int sde_rotator_probe(struct platform_device *pdev) vdev->v4l2_dev = &rot_dev->v4l2_dev; vdev->vfl_dir = VFL_DIR_M2M; vdev->vfl_type = VFL_TYPE_GRABBER; + vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M | + V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_CAPTURE; + strlcpy(vdev->name, SDE_ROTATOR_DRV_NAME, sizeof(vdev->name)); ret = video_register_device(vdev, VFL_TYPE_GRABBER,