|
@@ -48,133 +48,6 @@
|
|
|
* Helper functions
|
|
|
*/
|
|
|
|
|
|
-static const struct vsp1_format_info vsp1_video_formats[] = {
|
|
|
- { V4L2_PIX_FMT_RGB332, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_RGB_332, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 8, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_ARGB444, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_4444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 1, 1, true },
|
|
|
- { V4L2_PIX_FMT_XRGB444, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_XRGB_4444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 1, 1, true },
|
|
|
- { V4L2_PIX_FMT_ARGB555, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_1555, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 1, 1, true },
|
|
|
- { V4L2_PIX_FMT_XRGB555, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_XRGB_1555, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_RGB565, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_RGB_565, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_BGR24, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_BGR_888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 24, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_RGB24, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_RGB_888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 24, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_ABGR32, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS,
|
|
|
- 1, { 32, 0, 0 }, false, false, 1, 1, true },
|
|
|
- { V4L2_PIX_FMT_XBGR32, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS,
|
|
|
- 1, { 32, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_ARGB32, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 32, 0, 0 }, false, false, 1, 1, true },
|
|
|
- { V4L2_PIX_FMT_XRGB32, MEDIA_BUS_FMT_ARGB8888_1X32,
|
|
|
- VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 32, 0, 0 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_UYVY, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 16, 0, 0 }, false, false, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_VYUY, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 16, 0, 0 }, false, true, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_YUYV, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 16, 0, 0 }, true, false, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_YVYU, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 1, { 16, 0, 0 }, true, true, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_NV12M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_UV_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 2, { 8, 16, 0 }, false, false, 2, 2, false },
|
|
|
- { V4L2_PIX_FMT_NV21M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_UV_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 2, { 8, 16, 0 }, false, true, 2, 2, false },
|
|
|
- { V4L2_PIX_FMT_NV16M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_UV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 2, { 8, 16, 0 }, false, false, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_NV61M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_UV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 2, { 8, 16, 0 }, false, true, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_YUV420M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, false, 2, 2, false },
|
|
|
- { V4L2_PIX_FMT_YVU420M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, true, 2, 2, false },
|
|
|
- { V4L2_PIX_FMT_YUV422M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, false, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_YVU422M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, true, 2, 1, false },
|
|
|
- { V4L2_PIX_FMT_YUV444M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, false, 1, 1, false },
|
|
|
- { V4L2_PIX_FMT_YVU444M, MEDIA_BUS_FMT_AYUV8_1X32,
|
|
|
- VI6_FMT_Y_U_V_444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
|
|
|
- VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
|
|
|
- 3, { 8, 8, 8 }, false, true, 1, 1, false },
|
|
|
-};
|
|
|
-
|
|
|
-/*
|
|
|
- * vsp1_get_format_info - Retrieve format information for a 4CC
|
|
|
- * @fourcc: the format 4CC
|
|
|
- *
|
|
|
- * Return a pointer to the format information structure corresponding to the
|
|
|
- * given V4L2 format 4CC, or NULL if no corresponding format can be found.
|
|
|
- */
|
|
|
-static const struct vsp1_format_info *vsp1_get_format_info(u32 fourcc)
|
|
|
-{
|
|
|
- unsigned int i;
|
|
|
-
|
|
|
- for (i = 0; i < ARRAY_SIZE(vsp1_video_formats); ++i) {
|
|
|
- const struct vsp1_format_info *info = &vsp1_video_formats[i];
|
|
|
-
|
|
|
- if (info->fourcc == fourcc)
|
|
|
- return info;
|
|
|
- }
|
|
|
-
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
static struct v4l2_subdev *
|
|
|
vsp1_video_remote_subdev(struct media_pad *local, u32 *pad)
|
|
|
{
|