diff options
| author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-10-11 14:07:19 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-10-11 14:07:19 -0400 |
| commit | bf3b202b41999f88f091632f13842b7234bd58b7 (patch) | |
| tree | e2861fcca522cc299e6106fa6c78d85a4a6eedeb /include | |
| parent | 782cd9ee985b1523f1ddad57657a24d7855d9e4d (diff) | |
| parent | 1fdead8ad31d3aa833bc37739273fcde89ace93c (diff) | |
Merge branch 'staging/for_v3.7' into v4l_for_linus
Applied on the top of changeset 782cd9e, as some of those patches
depend on some fixes that went via -arm tree.
* staging/for_v3.7: (109 commits)
[media] m5mols: Add missing #include <linux/sizes.h>
[media] stk1160: Add support for S-Video input
Revert "[media] omap3isp: Replace cpu_is_omap3630() with ISP revision check"
[media] dvb: LNA implementation changes
[media] v4l2-ioctl: fix W=1 warnings
[media] v4l2-ioctl: add blocks check for VIDIOC_SUBDEV_G/S_EDID
[media] omap3isp: Fix compilation error in ispreg.h
[media] rc-msi-digivox-ii: Add full scan keycodes
[media] cx25821: testing the wrong variable
[media] tda18271-common: hold the I2C adapter during write transfers
[media] ds3000: add module parameter to force firmware upload
[media] drivers/media: Remove unnecessary semicolon
[media] winbond: remove space from driver name
[media] iguanair: cannot send data from the stack
[media] omap3isp: Replace cpu_is_omap3630() with ISP revision check
[media] dvb-usb: print small buffers via %*ph
[media] uvc: Add return code check at vb2_queue_init()
[media] em28xx: Replace memcpy with struct assignment
[media] bt8xx: Add video4linux control V4L2_CID_COLOR_KILLER
[media] mem2mem_testdev: Use devm_kzalloc() in probe
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/dvb/version.h | 2 | ||||
| -rw-r--r-- | include/linux/platform_data/mipi-csis.h | 30 | ||||
| -rw-r--r-- | include/linux/v4l2-controls.h | 42 | ||||
| -rw-r--r-- | include/linux/v4l2-mediabus.h | 5 | ||||
| -rw-r--r-- | include/linux/videodev2.h | 5 | ||||
| -rw-r--r-- | include/media/davinci/vpbe.h | 14 | ||||
| -rw-r--r-- | include/media/davinci/vpbe_types.h | 8 | ||||
| -rw-r--r-- | include/media/davinci/vpbe_venc.h | 2 | ||||
| -rw-r--r-- | include/media/davinci/vpif_types.h | 26 | ||||
| -rw-r--r-- | include/media/s5p_fimc.h | 2 | ||||
| -rw-r--r-- | include/media/s5p_hdmi.h | 2 | ||||
| -rw-r--r-- | include/media/v4l2-ctrls.h | 23 | ||||
| -rw-r--r-- | include/media/v4l2-subdev.h | 48 |
13 files changed, 166 insertions, 43 deletions
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h index 20e5eac2ffd3..827cce7e33e3 100644 --- a/include/linux/dvb/version.h +++ b/include/linux/dvb/version.h | |||
| @@ -24,6 +24,6 @@ | |||
| 24 | #define _DVBVERSION_H_ | 24 | #define _DVBVERSION_H_ |
| 25 | 25 | ||
| 26 | #define DVB_API_VERSION 5 | 26 | #define DVB_API_VERSION 5 |
| 27 | #define DVB_API_VERSION_MINOR 8 | 27 | #define DVB_API_VERSION_MINOR 9 |
| 28 | 28 | ||
| 29 | #endif /*_DVBVERSION_H_*/ | 29 | #endif /*_DVBVERSION_H_*/ |
diff --git a/include/linux/platform_data/mipi-csis.h b/include/linux/platform_data/mipi-csis.h index c45b1e8d4c2e..bf34e17cee7f 100644 --- a/include/linux/platform_data/mipi-csis.h +++ b/include/linux/platform_data/mipi-csis.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (C) 2010-2011 Samsung Electronics Co., Ltd. | 2 | * Copyright (C) 2010 - 2012 Samsung Electronics Co., Ltd. |
| 3 | * | 3 | * |
| 4 | * S5P series MIPI CSI slave device support | 4 | * Samsung S5P/Exynos SoC series MIPI CSIS device support |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
| @@ -11,33 +11,27 @@ | |||
| 11 | #ifndef __PLAT_SAMSUNG_MIPI_CSIS_H_ | 11 | #ifndef __PLAT_SAMSUNG_MIPI_CSIS_H_ |
| 12 | #define __PLAT_SAMSUNG_MIPI_CSIS_H_ __FILE__ | 12 | #define __PLAT_SAMSUNG_MIPI_CSIS_H_ __FILE__ |
| 13 | 13 | ||
| 14 | struct platform_device; | ||
| 15 | |||
| 16 | /** | 14 | /** |
| 17 | * struct s5p_platform_mipi_csis - platform data for S5P MIPI-CSIS driver | 15 | * struct s5p_platform_mipi_csis - platform data for S5P MIPI-CSIS driver |
| 18 | * @clk_rate: bus clock frequency | 16 | * @clk_rate: bus clock frequency |
| 19 | * @lanes: number of data lanes used | 17 | * @wclk_source: CSI wrapper clock selection: 0 - bus clock, 1 - ext. SCLK_CAM |
| 20 | * @alignment: data alignment in bits | 18 | * @lanes: number of data lanes used |
| 21 | * @hs_settle: HS-RX settle time | 19 | * @hs_settle: HS-RX settle time |
| 22 | * @fixed_phy_vdd: false to enable external D-PHY regulator management in the | ||
| 23 | * driver or true in case this regulator has no enable function | ||
| 24 | * @phy_enable: pointer to a callback controlling D-PHY enable/reset | ||
| 25 | */ | 20 | */ |
| 26 | struct s5p_platform_mipi_csis { | 21 | struct s5p_platform_mipi_csis { |
| 27 | unsigned long clk_rate; | 22 | unsigned long clk_rate; |
| 23 | u8 wclk_source; | ||
| 28 | u8 lanes; | 24 | u8 lanes; |
| 29 | u8 alignment; | ||
| 30 | u8 hs_settle; | 25 | u8 hs_settle; |
| 31 | bool fixed_phy_vdd; | ||
| 32 | int (*phy_enable)(struct platform_device *pdev, bool on); | ||
| 33 | }; | 26 | }; |
| 34 | 27 | ||
| 35 | /** | 28 | /** |
| 36 | * s5p_csis_phy_enable - global MIPI-CSI receiver D-PHY control | 29 | * s5p_csis_phy_enable - global MIPI-CSI receiver D-PHY control |
| 37 | * @pdev: MIPI-CSIS platform device | 30 | * @id: MIPI-CSIS harware instance index (0...1) |
| 38 | * @on: true to enable D-PHY and deassert its reset | 31 | * @on: true to enable D-PHY and deassert its reset |
| 39 | * false to disable D-PHY | 32 | * false to disable D-PHY |
| 33 | * @return: 0 on success, or negative error code on failure | ||
| 40 | */ | 34 | */ |
| 41 | int s5p_csis_phy_enable(struct platform_device *pdev, bool on); | 35 | int s5p_csis_phy_enable(int id, bool on); |
| 42 | 36 | ||
| 43 | #endif /* __PLAT_SAMSUNG_MIPI_CSIS_H_ */ | 37 | #endif /* __PLAT_SAMSUNG_MIPI_CSIS_H_ */ |
diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h index 421d24c7f686..f56c945cecd4 100644 --- a/include/linux/v4l2-controls.h +++ b/include/linux/v4l2-controls.h | |||
| @@ -349,6 +349,7 @@ enum v4l2_mpeg_video_multi_slice_mode { | |||
| 349 | #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222) | 349 | #define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222) |
| 350 | #define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223) | 350 | #define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223) |
| 351 | #define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224) | 351 | #define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224) |
| 352 | #define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225) | ||
| 352 | 353 | ||
| 353 | #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) | 354 | #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300) |
| 354 | #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) | 355 | #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301) |
| @@ -439,6 +440,46 @@ enum v4l2_mpeg_video_h264_vui_sar_idc { | |||
| 439 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16, | 440 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16, |
| 440 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17, | 441 | V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17, |
| 441 | }; | 442 | }; |
| 443 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE+368) | ||
| 444 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE+369) | ||
| 445 | #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE+370) | ||
| 446 | enum v4l2_mpeg_video_h264_sei_fp_arrangement_type { | ||
| 447 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0, | ||
| 448 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1, | ||
| 449 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW = 2, | ||
| 450 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE = 3, | ||
| 451 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4, | ||
| 452 | V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5, | ||
| 453 | }; | ||
| 454 | #define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE+371) | ||
| 455 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE+372) | ||
| 456 | enum v4l2_mpeg_video_h264_fmo_map_type { | ||
| 457 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0, | ||
| 458 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1, | ||
| 459 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER = 2, | ||
| 460 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT = 3, | ||
| 461 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN = 4, | ||
| 462 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5, | ||
| 463 | V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6, | ||
| 464 | }; | ||
| 465 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE+373) | ||
| 466 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE+374) | ||
| 467 | enum v4l2_mpeg_video_h264_fmo_change_dir { | ||
| 468 | V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0, | ||
| 469 | V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1, | ||
| 470 | }; | ||
| 471 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE+375) | ||
| 472 | #define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE+376) | ||
| 473 | #define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE+377) | ||
| 474 | #define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE+378) | ||
| 475 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE+379) | ||
| 476 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE+380) | ||
| 477 | enum v4l2_mpeg_video_h264_hierarchical_coding_type { | ||
| 478 | V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0, | ||
| 479 | V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1, | ||
| 480 | }; | ||
| 481 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381) | ||
| 482 | #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382) | ||
| 442 | #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400) | 483 | #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400) |
| 443 | #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401) | 484 | #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401) |
| 444 | #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402) | 485 | #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402) |
| @@ -757,5 +798,6 @@ enum v4l2_jpeg_chroma_subsampling { | |||
| 757 | 798 | ||
| 758 | #define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1) | 799 | #define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1) |
| 759 | #define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2) | 800 | #define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2) |
| 801 | #define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3) | ||
| 760 | 802 | ||
| 761 | #endif | 803 | #endif |
diff --git a/include/linux/v4l2-mediabus.h b/include/linux/v4l2-mediabus.h index 5ea7f753a348..7d64e0e1a18b 100644 --- a/include/linux/v4l2-mediabus.h +++ b/include/linux/v4l2-mediabus.h | |||
| @@ -92,6 +92,11 @@ enum v4l2_mbus_pixelcode { | |||
| 92 | 92 | ||
| 93 | /* JPEG compressed formats - next is 0x4002 */ | 93 | /* JPEG compressed formats - next is 0x4002 */ |
| 94 | V4L2_MBUS_FMT_JPEG_1X8 = 0x4001, | 94 | V4L2_MBUS_FMT_JPEG_1X8 = 0x4001, |
| 95 | |||
| 96 | /* Vendor specific formats - next is 0x5002 */ | ||
| 97 | |||
| 98 | /* S5C73M3 sensor specific interleaved UYVY and JPEG */ | ||
| 99 | V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001, | ||
| 95 | }; | 100 | }; |
| 96 | 101 | ||
| 97 | /** | 102 | /** |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 61395ef85a00..873adbe82988 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -366,7 +366,9 @@ struct v4l2_pix_format { | |||
| 366 | 366 | ||
| 367 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ | 367 | /* two non contiguous planes - one Y, one Cr + Cb interleaved */ |
| 368 | #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 368 | #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
| 369 | #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ | ||
| 369 | #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ | 370 | #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ |
| 371 | #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */ | ||
| 370 | 372 | ||
| 371 | /* three non contiguous planes - Y, Cb, Cr */ | 373 | /* three non contiguous planes - Y, Cb, Cr */ |
| 372 | #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ | 374 | #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ |
| @@ -403,6 +405,7 @@ struct v4l2_pix_format { | |||
| 403 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ | 405 | #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */ |
| 404 | #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ | 406 | #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */ |
| 405 | #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ | 407 | #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */ |
| 408 | #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */ | ||
| 406 | #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ | 409 | #define V4L2_PIX_FMT_H263 v4l2_fourcc('H', '2', '6', '3') /* H263 */ |
| 407 | #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ | 410 | #define V4L2_PIX_FMT_MPEG1 v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES */ |
| 408 | #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ | 411 | #define V4L2_PIX_FMT_MPEG2 v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES */ |
| @@ -410,6 +413,7 @@ struct v4l2_pix_format { | |||
| 410 | #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ | 413 | #define V4L2_PIX_FMT_XVID v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid */ |
| 411 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ | 414 | #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */ |
| 412 | #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ | 415 | #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */ |
| 416 | #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */ | ||
| 413 | 417 | ||
| 414 | /* Vendor-specific formats */ | 418 | /* Vendor-specific formats */ |
| 415 | #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ | 419 | #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */ |
| @@ -437,6 +441,7 @@ struct v4l2_pix_format { | |||
| 437 | #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ | 441 | #define V4L2_PIX_FMT_KONICA420 v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */ |
| 438 | #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ | 442 | #define V4L2_PIX_FMT_JPGL v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */ |
| 439 | #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ | 443 | #define V4L2_PIX_FMT_SE401 v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */ |
| 444 | #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ | ||
| 440 | 445 | ||
| 441 | /* | 446 | /* |
| 442 | * F O R M A T E N U M E R A T I O N | 447 | * F O R M A T E N U M E R A T I O N |
diff --git a/include/media/davinci/vpbe.h b/include/media/davinci/vpbe.h index 8bc1b3c0e679..a7ca4884c46c 100644 --- a/include/media/davinci/vpbe.h +++ b/include/media/davinci/vpbe.h | |||
| @@ -35,7 +35,7 @@ struct osd_config_info { | |||
| 35 | struct vpbe_output { | 35 | struct vpbe_output { |
| 36 | struct v4l2_output output; | 36 | struct v4l2_output output; |
| 37 | /* | 37 | /* |
| 38 | * If output capabilities include dv_preset, list supported presets | 38 | * If output capabilities include dv_timings, list supported timings |
| 39 | * below | 39 | * below |
| 40 | */ | 40 | */ |
| 41 | char *subdev_name; | 41 | char *subdev_name; |
| @@ -120,16 +120,16 @@ struct vpbe_device_ops { | |||
| 120 | unsigned int (*get_output)(struct vpbe_device *vpbe_dev); | 120 | unsigned int (*get_output)(struct vpbe_device *vpbe_dev); |
| 121 | 121 | ||
| 122 | /* Set DV preset at current output */ | 122 | /* Set DV preset at current output */ |
| 123 | int (*s_dv_preset)(struct vpbe_device *vpbe_dev, | 123 | int (*s_dv_timings)(struct vpbe_device *vpbe_dev, |
| 124 | struct v4l2_dv_preset *dv_preset); | 124 | struct v4l2_dv_timings *dv_timings); |
| 125 | 125 | ||
| 126 | /* Get DV presets supported at the output */ | 126 | /* Get DV presets supported at the output */ |
| 127 | int (*g_dv_preset)(struct vpbe_device *vpbe_dev, | 127 | int (*g_dv_timings)(struct vpbe_device *vpbe_dev, |
| 128 | struct v4l2_dv_preset *dv_preset); | 128 | struct v4l2_dv_timings *dv_timings); |
| 129 | 129 | ||
| 130 | /* Enumerate the DV Presets supported at the output */ | 130 | /* Enumerate the DV Presets supported at the output */ |
| 131 | int (*enum_dv_presets)(struct vpbe_device *vpbe_dev, | 131 | int (*enum_dv_timings)(struct vpbe_device *vpbe_dev, |
| 132 | struct v4l2_dv_enum_preset *preset_info); | 132 | struct v4l2_enum_dv_timings *timings_info); |
| 133 | 133 | ||
| 134 | /* Set std at the output */ | 134 | /* Set std at the output */ |
| 135 | int (*s_std)(struct vpbe_device *vpbe_dev, v4l2_std_id *std_id); | 135 | int (*s_std)(struct vpbe_device *vpbe_dev, v4l2_std_id *std_id); |
diff --git a/include/media/davinci/vpbe_types.h b/include/media/davinci/vpbe_types.h index 727f55170e41..9b85396514be 100644 --- a/include/media/davinci/vpbe_types.h +++ b/include/media/davinci/vpbe_types.h | |||
| @@ -32,11 +32,6 @@ enum vpbe_enc_timings_type { | |||
| 32 | VPBE_ENC_TIMINGS_INVALID = 0x8, | 32 | VPBE_ENC_TIMINGS_INVALID = 0x8, |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | union vpbe_timings { | ||
| 36 | v4l2_std_id std_id; | ||
| 37 | unsigned int dv_preset; | ||
| 38 | }; | ||
| 39 | |||
| 40 | /* | 35 | /* |
| 41 | * struct vpbe_enc_mode_info | 36 | * struct vpbe_enc_mode_info |
| 42 | * @name: ptr to name string of the standard, "NTSC", "PAL" etc | 37 | * @name: ptr to name string of the standard, "NTSC", "PAL" etc |
| @@ -73,7 +68,8 @@ union vpbe_timings { | |||
| 73 | struct vpbe_enc_mode_info { | 68 | struct vpbe_enc_mode_info { |
| 74 | unsigned char *name; | 69 | unsigned char *name; |
| 75 | enum vpbe_enc_timings_type timings_type; | 70 | enum vpbe_enc_timings_type timings_type; |
| 76 | union vpbe_timings timings; | 71 | v4l2_std_id std_id; |
| 72 | struct v4l2_dv_timings dv_timings; | ||
| 77 | unsigned int interlaced; | 73 | unsigned int interlaced; |
| 78 | unsigned int xres; | 74 | unsigned int xres; |
| 79 | unsigned int yres; | 75 | unsigned int yres; |
diff --git a/include/media/davinci/vpbe_venc.h b/include/media/davinci/vpbe_venc.h index 6b57334f4029..cc78c2eb16da 100644 --- a/include/media/davinci/vpbe_venc.h +++ b/include/media/davinci/vpbe_venc.h | |||
| @@ -32,7 +32,7 @@ struct venc_platform_data { | |||
| 32 | int (*setup_pinmux)(enum v4l2_mbus_pixelcode if_type, | 32 | int (*setup_pinmux)(enum v4l2_mbus_pixelcode if_type, |
| 33 | int field); | 33 | int field); |
| 34 | int (*setup_clock)(enum vpbe_enc_timings_type type, | 34 | int (*setup_clock)(enum vpbe_enc_timings_type type, |
| 35 | unsigned int mode); | 35 | unsigned int pixclock); |
| 36 | int (*setup_if_config)(enum v4l2_mbus_pixelcode pixcode); | 36 | int (*setup_if_config)(enum v4l2_mbus_pixelcode pixcode); |
| 37 | /* Number of LCD outputs supported */ | 37 | /* Number of LCD outputs supported */ |
| 38 | int num_lcd_outputs; | 38 | int num_lcd_outputs; |
diff --git a/include/media/davinci/vpif_types.h b/include/media/davinci/vpif_types.h index d8f6ab1943e4..3882e0675ccf 100644 --- a/include/media/davinci/vpif_types.h +++ b/include/media/davinci/vpif_types.h | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/i2c.h> | 20 | #include <linux/i2c.h> |
| 21 | 21 | ||
| 22 | #define VPIF_CAPTURE_MAX_CHANNELS 2 | 22 | #define VPIF_CAPTURE_MAX_CHANNELS 2 |
| 23 | #define VPIF_DISPLAY_MAX_CHANNELS 2 | ||
| 23 | 24 | ||
| 24 | enum vpif_if_type { | 25 | enum vpif_if_type { |
| 25 | VPIF_IF_BT656, | 26 | VPIF_IF_BT656, |
| @@ -37,29 +38,38 @@ struct vpif_interface { | |||
| 37 | struct vpif_subdev_info { | 38 | struct vpif_subdev_info { |
| 38 | const char *name; | 39 | const char *name; |
| 39 | struct i2c_board_info board_info; | 40 | struct i2c_board_info board_info; |
| 40 | u32 input; | 41 | }; |
| 41 | u32 output; | 42 | |
| 42 | unsigned can_route:1; | 43 | struct vpif_output { |
| 43 | struct vpif_interface vpif_if; | 44 | struct v4l2_output output; |
| 45 | const char *subdev_name; | ||
| 46 | u32 input_route; | ||
| 47 | u32 output_route; | ||
| 48 | }; | ||
| 49 | |||
| 50 | struct vpif_display_chan_config { | ||
| 51 | const struct vpif_output *outputs; | ||
| 52 | int output_count; | ||
| 53 | bool clip_en; | ||
| 44 | }; | 54 | }; |
| 45 | 55 | ||
| 46 | struct vpif_display_config { | 56 | struct vpif_display_config { |
| 47 | int (*set_clock)(int, int); | 57 | int (*set_clock)(int, int); |
| 48 | struct vpif_subdev_info *subdevinfo; | 58 | struct vpif_subdev_info *subdevinfo; |
| 49 | int subdev_count; | 59 | int subdev_count; |
| 50 | const char **output; | 60 | struct vpif_display_chan_config chan_config[VPIF_DISPLAY_MAX_CHANNELS]; |
| 51 | int output_count; | ||
| 52 | const char *card_name; | 61 | const char *card_name; |
| 53 | bool ch2_clip_en; | ||
| 54 | bool ch3_clip_en; | ||
| 55 | }; | 62 | }; |
| 56 | 63 | ||
| 57 | struct vpif_input { | 64 | struct vpif_input { |
| 58 | struct v4l2_input input; | 65 | struct v4l2_input input; |
| 59 | const char *subdev_name; | 66 | const char *subdev_name; |
| 67 | u32 input_route; | ||
| 68 | u32 output_route; | ||
| 60 | }; | 69 | }; |
| 61 | 70 | ||
| 62 | struct vpif_capture_chan_config { | 71 | struct vpif_capture_chan_config { |
| 72 | struct vpif_interface vpif_if; | ||
| 63 | const struct vpif_input *inputs; | 73 | const struct vpif_input *inputs; |
| 64 | int input_count; | 74 | int input_count; |
| 65 | }; | 75 | }; |
diff --git a/include/media/s5p_fimc.h b/include/media/s5p_fimc.h index 09421a611d73..eaea62a382f8 100644 --- a/include/media/s5p_fimc.h +++ b/include/media/s5p_fimc.h | |||
| @@ -30,7 +30,6 @@ struct i2c_board_info; | |||
| 30 | * @board_info: pointer to I2C subdevice's board info | 30 | * @board_info: pointer to I2C subdevice's board info |
| 31 | * @clk_frequency: frequency of the clock the host interface provides to sensor | 31 | * @clk_frequency: frequency of the clock the host interface provides to sensor |
| 32 | * @bus_type: determines bus type, MIPI, ITU-R BT.601 etc. | 32 | * @bus_type: determines bus type, MIPI, ITU-R BT.601 etc. |
| 33 | * @csi_data_align: MIPI-CSI interface data alignment in bits | ||
| 34 | * @i2c_bus_num: i2c control bus id the sensor is attached to | 33 | * @i2c_bus_num: i2c control bus id the sensor is attached to |
| 35 | * @mux_id: FIMC camera interface multiplexer index (separate for MIPI and ITU) | 34 | * @mux_id: FIMC camera interface multiplexer index (separate for MIPI and ITU) |
| 36 | * @clk_id: index of the SoC peripheral clock for sensors | 35 | * @clk_id: index of the SoC peripheral clock for sensors |
| @@ -40,7 +39,6 @@ struct s5p_fimc_isp_info { | |||
| 40 | struct i2c_board_info *board_info; | 39 | struct i2c_board_info *board_info; |
| 41 | unsigned long clk_frequency; | 40 | unsigned long clk_frequency; |
| 42 | enum cam_bus_type bus_type; | 41 | enum cam_bus_type bus_type; |
| 43 | u16 csi_data_align; | ||
| 44 | u16 i2c_bus_num; | 42 | u16 i2c_bus_num; |
| 45 | u16 mux_id; | 43 | u16 mux_id; |
| 46 | u16 flags; | 44 | u16 flags; |
diff --git a/include/media/s5p_hdmi.h b/include/media/s5p_hdmi.h index 361a751f73af..181642b8d0a5 100644 --- a/include/media/s5p_hdmi.h +++ b/include/media/s5p_hdmi.h | |||
| @@ -20,6 +20,7 @@ struct i2c_board_info; | |||
| 20 | * @hdmiphy_info: template for HDMIPHY I2C device | 20 | * @hdmiphy_info: template for HDMIPHY I2C device |
| 21 | * @mhl_bus: controller id for MHL control bus | 21 | * @mhl_bus: controller id for MHL control bus |
| 22 | * @mhl_info: template for MHL I2C device | 22 | * @mhl_info: template for MHL I2C device |
| 23 | * @hpd_gpio: GPIO for Hot-Plug-Detect pin | ||
| 23 | * | 24 | * |
| 24 | * NULL pointer for *_info fields indicates that | 25 | * NULL pointer for *_info fields indicates that |
| 25 | * the corresponding chip is not present | 26 | * the corresponding chip is not present |
| @@ -29,6 +30,7 @@ struct s5p_hdmi_platform_data { | |||
| 29 | struct i2c_board_info *hdmiphy_info; | 30 | struct i2c_board_info *hdmiphy_info; |
| 30 | int mhl_bus; | 31 | int mhl_bus; |
| 31 | struct i2c_board_info *mhl_info; | 32 | struct i2c_board_info *mhl_info; |
| 33 | int hpd_gpio; | ||
| 32 | }; | 34 | }; |
| 33 | 35 | ||
| 34 | #endif /* S5P_HDMI_H */ | 36 | #endif /* S5P_HDMI_H */ |
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index 801adb466bd2..96509119f28f 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h | |||
| @@ -351,6 +351,29 @@ struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, | |||
| 351 | const struct v4l2_ctrl_ops *ops, | 351 | const struct v4l2_ctrl_ops *ops, |
| 352 | u32 id, s32 max, s32 mask, s32 def); | 352 | u32 id, s32 max, s32 mask, s32 def); |
| 353 | 353 | ||
| 354 | /** v4l2_ctrl_new_std_menu_items() - Create a new standard V4L2 menu control | ||
| 355 | * with driver specific menu. | ||
| 356 | * @hdl: The control handler. | ||
| 357 | * @ops: The control ops. | ||
| 358 | * @id: The control ID. | ||
| 359 | * @max: The control's maximum value. | ||
| 360 | * @mask: The control's skip mask for menu controls. This makes it | ||
| 361 | * easy to skip menu items that are not valid. If bit X is set, | ||
| 362 | * then menu item X is skipped. Of course, this only works for | ||
| 363 | * menus with <= 32 menu items. There are no menus that come | ||
| 364 | * close to that number, so this is OK. Should we ever need more, | ||
| 365 | * then this will have to be extended to a u64 or a bit array. | ||
| 366 | * @def: The control's default value. | ||
| 367 | * @qmenu: The new menu. | ||
| 368 | * | ||
| 369 | * Same as v4l2_ctrl_new_std_menu(), but @qmenu will be the driver specific | ||
| 370 | * menu of this control. | ||
| 371 | * | ||
| 372 | */ | ||
| 373 | struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items(struct v4l2_ctrl_handler *hdl, | ||
| 374 | const struct v4l2_ctrl_ops *ops, u32 id, s32 max, | ||
| 375 | s32 mask, s32 def, const char * const *qmenu); | ||
| 376 | |||
| 354 | /** v4l2_ctrl_new_int_menu() - Create a new standard V4L2 integer menu control. | 377 | /** v4l2_ctrl_new_int_menu() - Create a new standard V4L2 integer menu control. |
| 355 | * @hdl: The control handler. | 378 | * @hdl: The control handler. |
| 356 | * @ops: The control ops. | 379 | * @ops: The control ops. |
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 2ecd7377153b..b137a5e1151a 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #ifndef _V4L2_SUBDEV_H | 21 | #ifndef _V4L2_SUBDEV_H |
| 22 | #define _V4L2_SUBDEV_H | 22 | #define _V4L2_SUBDEV_H |
| 23 | 23 | ||
| 24 | #include <linux/types.h> | ||
| 24 | #include <linux/v4l2-subdev.h> | 25 | #include <linux/v4l2-subdev.h> |
| 25 | #include <media/media-entity.h> | 26 | #include <media/media-entity.h> |
| 26 | #include <media/v4l2-common.h> | 27 | #include <media/v4l2-common.h> |
| @@ -45,6 +46,7 @@ struct v4l2_fh; | |||
| 45 | struct v4l2_subdev; | 46 | struct v4l2_subdev; |
| 46 | struct v4l2_subdev_fh; | 47 | struct v4l2_subdev_fh; |
| 47 | struct tuner_setup; | 48 | struct tuner_setup; |
| 49 | struct v4l2_mbus_frame_desc; | ||
| 48 | 50 | ||
| 49 | /* decode_vbi_line */ | 51 | /* decode_vbi_line */ |
| 50 | struct v4l2_decode_vbi_line { | 52 | struct v4l2_decode_vbi_line { |
| @@ -226,6 +228,36 @@ struct v4l2_subdev_audio_ops { | |||
| 226 | int (*s_stream)(struct v4l2_subdev *sd, int enable); | 228 | int (*s_stream)(struct v4l2_subdev *sd, int enable); |
| 227 | }; | 229 | }; |
| 228 | 230 | ||
| 231 | /* Indicates the @length field specifies maximum data length. */ | ||
| 232 | #define V4L2_MBUS_FRAME_DESC_FL_LEN_MAX (1U << 0) | ||
| 233 | /* Indicates user defined data format, i.e. non standard frame format. */ | ||
| 234 | #define V4L2_MBUS_FRAME_DESC_FL_BLOB (1U << 1) | ||
| 235 | |||
| 236 | /** | ||
| 237 | * struct v4l2_mbus_frame_desc_entry - media bus frame description structure | ||
| 238 | * @flags: V4L2_MBUS_FRAME_DESC_FL_* flags | ||
| 239 | * @pixelcode: media bus pixel code, valid if FRAME_DESC_FL_BLOB is not set | ||
| 240 | * @length: number of octets per frame, valid for compressed or unspecified | ||
| 241 | * formats | ||
| 242 | */ | ||
| 243 | struct v4l2_mbus_frame_desc_entry { | ||
| 244 | u16 flags; | ||
| 245 | u32 pixelcode; | ||
| 246 | u32 length; | ||
| 247 | }; | ||
| 248 | |||
| 249 | #define V4L2_FRAME_DESC_ENTRY_MAX 4 | ||
| 250 | |||
| 251 | /** | ||
| 252 | * struct v4l2_mbus_frame_desc - media bus data frame description | ||
| 253 | * @entry: frame descriptors array | ||
| 254 | * @num_entries: number of entries in @entry array | ||
| 255 | */ | ||
| 256 | struct v4l2_mbus_frame_desc { | ||
| 257 | struct v4l2_mbus_frame_desc_entry entry[V4L2_FRAME_DESC_ENTRY_MAX]; | ||
| 258 | unsigned short num_entries; | ||
| 259 | }; | ||
| 260 | |||
| 229 | /* | 261 | /* |
| 230 | s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by | 262 | s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by |
| 231 | video input devices. | 263 | video input devices. |
| @@ -274,6 +306,10 @@ struct v4l2_subdev_audio_ops { | |||
| 274 | s_mbus_config: set a certain mediabus configuration. This operation is added | 306 | s_mbus_config: set a certain mediabus configuration. This operation is added |
| 275 | for compatibility with soc-camera drivers and should not be used by new | 307 | for compatibility with soc-camera drivers and should not be used by new |
| 276 | software. | 308 | software. |
| 309 | |||
| 310 | s_rx_buffer: set a host allocated memory buffer for the subdev. The subdev | ||
| 311 | can adjust @size to a lower value and must not write more data to the | ||
| 312 | buffer starting at @data than the original value of @size. | ||
| 277 | */ | 313 | */ |
| 278 | struct v4l2_subdev_video_ops { | 314 | struct v4l2_subdev_video_ops { |
| 279 | int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); | 315 | int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); |
| @@ -327,6 +363,8 @@ struct v4l2_subdev_video_ops { | |||
| 327 | struct v4l2_mbus_config *cfg); | 363 | struct v4l2_mbus_config *cfg); |
| 328 | int (*s_mbus_config)(struct v4l2_subdev *sd, | 364 | int (*s_mbus_config)(struct v4l2_subdev *sd, |
| 329 | const struct v4l2_mbus_config *cfg); | 365 | const struct v4l2_mbus_config *cfg); |
| 366 | int (*s_rx_buffer)(struct v4l2_subdev *sd, void *buf, | ||
| 367 | unsigned int *size); | ||
| 330 | }; | 368 | }; |
| 331 | 369 | ||
| 332 | /* | 370 | /* |
| @@ -455,6 +493,12 @@ struct v4l2_subdev_ir_ops { | |||
| 455 | struct v4l2_subdev_ir_parameters *params); | 493 | struct v4l2_subdev_ir_parameters *params); |
| 456 | }; | 494 | }; |
| 457 | 495 | ||
| 496 | /** | ||
| 497 | * struct v4l2_subdev_pad_ops - v4l2-subdev pad level operations | ||
| 498 | * @get_frame_desc: get the current low level media bus frame parameters. | ||
| 499 | * @get_frame_desc: set the low level media bus frame parameters, @fd array | ||
| 500 | * may be adjusted by the subdev driver to device capabilities. | ||
| 501 | */ | ||
| 458 | struct v4l2_subdev_pad_ops { | 502 | struct v4l2_subdev_pad_ops { |
| 459 | int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, | 503 | int (*enum_mbus_code)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, |
| 460 | struct v4l2_subdev_mbus_code_enum *code); | 504 | struct v4l2_subdev_mbus_code_enum *code); |
| @@ -483,6 +527,10 @@ struct v4l2_subdev_pad_ops { | |||
| 483 | struct v4l2_subdev_format *source_fmt, | 527 | struct v4l2_subdev_format *source_fmt, |
| 484 | struct v4l2_subdev_format *sink_fmt); | 528 | struct v4l2_subdev_format *sink_fmt); |
| 485 | #endif /* CONFIG_MEDIA_CONTROLLER */ | 529 | #endif /* CONFIG_MEDIA_CONTROLLER */ |
| 530 | int (*get_frame_desc)(struct v4l2_subdev *sd, unsigned int pad, | ||
| 531 | struct v4l2_mbus_frame_desc *fd); | ||
| 532 | int (*set_frame_desc)(struct v4l2_subdev *sd, unsigned int pad, | ||
| 533 | struct v4l2_mbus_frame_desc *fd); | ||
| 486 | }; | 534 | }; |
| 487 | 535 | ||
| 488 | struct v4l2_subdev_ops { | 536 | struct v4l2_subdev_ops { |
