| /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ |
| /* |
| * Copyright (c) 2019 Amlogic, Inc. All rights reserved. |
| */ |
| |
| #ifndef _VIDEODEV2_EXT_H |
| #define _VIDEODEV2_EXT_H |
| |
| #include <linux/amlogic/media/linuxtv-ext-ver.h> |
| |
| /* FIXME: gstreamer-good uses uapi/linux/videodev2.h, |
| * so add to check _UAPI_XX to prevent redefinition error |
| */ |
| #ifndef _UAPI__LINUX_VIDEODEV2_H |
| #include <linux/videodev2.h> |
| #endif |
| |
| /* Common */ |
| #define V4L2_EXT_DEV_NO_ATV 2 |
| #define V4L2_EXT_DEV_NO_AV 10 |
| #define V4L2_EXT_DEV_NO_ADC 11 |
| #define V4L2_EXT_DEV_NO_HDMI 12 |
| #define V4L2_EXT_DEV_NO_EARC 13 |
| #define V4L2_EXT_DEV_NO_VDEC 20 |
| #define V4L2_EXT_DEV_NO_VDOGAV 27 |
| |
| #define V4L2_EXT_DEV_NO_VDO0 28 |
| |
| #define V4L2_EXT_DEV_NO_VDO1 29 |
| #define V4L2_EXT_DEV_NO_SCALER0 30 |
| #define V4L2_EXT_DEV_NO_SCALER1 31 |
| #define V4L2_EXT_DEV_NO_SCALER2 32 |
| #define V4L2_EXT_DEV_NO_SCALER3 33 |
| #define V4L2_EXT_DEV_NO_BACKEND 40 |
| #define V4L2_EXT_DEV_NO_PQ 50 |
| #define V4L2_EXT_DEV_NO_CAPTURE 60 |
| #define V4L2_EXT_DEV_NO_GPSCALER 70 |
| |
| /* VBI */ |
| #define V4L2_EXT_DEV_NO_VBI 1 |
| |
| #define V4L2_EXT_DEV_PATH_ATV "/dev/video2" |
| #define V4L2_EXT_DEV_PATH_AV "/dev/video10" |
| #define V4L2_EXT_DEV_PATH_ADC "/dev/video11" |
| #define V4L2_EXT_DEV_PATH_HDMI "/dev/video12" |
| #define V4L2_EXT_DEV_PATH_VDEC "/dev/video20" |
| #define V4L2_EXT_DEV_PATH_VDOGAV "/dev/video27" |
| |
| #define V4L2_EXT_DEV_PATH_VDO0 "/dev/video28" |
| |
| #define V4L2_EXT_DEV_PATH_VDO1 "/dev/video29" |
| #define V4L2_EXT_DEV_PATH_SCALER0 "/dev/video30" |
| #define V4L2_EXT_DEV_PATH_SCALER1 "/dev/video31" |
| #define V4L2_EXT_DEV_PATH_SCALER2 "/dev/video32" |
| #define V4L2_EXT_DEV_PATH_SCALER3 "/dev/video33" |
| #define V4L2_EXT_DEV_PATH_BACKEND "/dev/video40" |
| #define V4L2_EXT_DEV_PATH_PQ "/dev/video50" |
| #define V4L2_EXT_DEV_PATH_CAPTURE "/dev/video60" |
| #define V4L2_EXT_DEV_PATH_GPSCALER "/dev/video70" |
| #define V4L2_EXT_DEV_PATH_VBI "/dev/vbi1" |
| #define V4L2_EXT_DEV_PATH_EARC "/dev/earc0" |
| |
| #define V4L2_EXT_LED_SPI_LDIM_EN 0x01 // bit0 enable local dimming |
| #define V4L2_EXT_LED_SPI_BPL_BIT1 0x02 // bit1 bpl strength |
| #define V4L2_EXT_LED_SPI_STOREMODE_EN 0x04 // bit2 enable led store mode |
| #define V4L2_EXT_LED_SPI_HALO_BIT1 0x08 // bit3 halo reduction strength |
| #define V4L2_EXT_LED_SPI_MOTIONPRO_EN 0x10 // bit4 enable motion pro |
| #define V4L2_EXT_LED_SPI_HALO_BIT2 0x20 // bit5 halo reduction strength |
| #define V4L2_EXT_LED_SPI_BPL_BIT2 0x40 // bit6 bpl strength |
| #define V4L2_EXT_LED_SPI_REVERSE 0x80 // bit7 screen reverse |
| |
| #define V4L2_EXT_VPQ_BYPASS_MASK_NONE 0x00000000 |
| #define V4L2_EXT_VPQ_BYPASS_MASK_SHARP_ENHANCE \ |
| 0x00000001 // BIT0: //SharpnessEnhancer |
| #define V4L2_EXT_VPQ_BYPASS_MASK_OBJECT_CONTRAST \ |
| 0x00000002 // BIT1: //ObjectContrast |
| #define V4L2_EXT_VPQ_BYPASS_MASK_CONTRAST_COLOR_ENHANCE \ |
| 0x00000004 // BIT2: //Contrast, Local Contrast, Color Enhancer |
| #define V4L2_EXT_VPQ_BYPASS_MASK_GAMMA_LOCALDIMMING \ |
| 0x00000008 // BIT3: //Localdimming, Gamma UI |
| #define V4L2_EXT_VPQ_BYPASS_MASK_NEAR_BE \ |
| 0x00000010 // BIT4: //WB,DGA-4CH,POD,PCID,ODC |
| #define V4L2_EXT_VPQ_BYPASS_MASK_HDR_ALL 0x00000020 // BIT5: HDR |
| #define V4L2_EXT_VPQ_BYPASS_MASK_HDR_EXCEPT_PCC \ |
| 0x00000040 // BIT6: //HDR bypass,HDR-PCC enable |
| |
| /* Scaler */ |
| struct v4l2_ext_video_rect { |
| unsigned short x; |
| unsigned short y; |
| unsigned short w; |
| unsigned short h; |
| }; |
| |
| enum v4l2_ext_vsc_input_src { |
| V4L2_EXT_VSC_INPUT_SRC_NONE = 0, |
| V4L2_EXT_VSC_INPUT_SRC_AVD, |
| V4L2_EXT_VSC_INPUT_SRC_ADC, |
| V4L2_EXT_VSC_INPUT_SRC_HDMI, |
| V4L2_EXT_VSC_INPUT_SRC_VDEC, |
| V4L2_EXT_VSC_INPUT_SRC_JPEG, |
| V4L2_EXT_VSC_INPUT_SRC_FB |
| }; |
| |
| enum v4l2_ext_vsc_dest { |
| V4L2_EXT_VSC_DEST_NONE = 0, |
| V4L2_EXT_VSC_DEST_DISPLAY, |
| V4L2_EXT_VSC_DEST_VENC, |
| V4L2_EXT_VSC_DEST_MEMORY, |
| V4L2_EXT_VSC_DEST_AVE |
| }; |
| |
| struct v4l2_ext_vsc_input_src_info { |
| enum v4l2_ext_vsc_input_src src; |
| unsigned char index; |
| unsigned char attr; |
| }; |
| |
| struct v4l2_ext_vsc_connect_info { |
| struct v4l2_ext_vsc_input_src_info in; |
| enum v4l2_ext_vsc_dest out; |
| }; |
| |
| enum v4l2_ext_vsc_vdo_port { |
| V4L2_EXT_VSC_VDO_PORT_NONE = 0, |
| V4L2_EXT_VSC_VDO_PORT_0, |
| V4L2_EXT_VSC_VDO_PORT_1 |
| }; |
| |
| struct v4l2_ext_vsc_vdo_mode { |
| enum v4l2_ext_vsc_vdo_port vdo_port; |
| unsigned short vdec_port; |
| }; |
| |
| enum v4l2_ext_vsc_win_color { |
| V4L2_EXT_VSC_WIN_COLOR_NORMAL = 0, |
| V4L2_EXT_VSC_WIN_COLOR_BLACK, |
| V4L2_EXT_VSC_WIN_COLOR_BLUE, |
| V4L2_EXT_VSC_WIN_COLOR_GRAY |
| }; |
| |
| enum v4l2_ext_vsc_rotation { |
| V4L2_EXT_VSC_ROTATE_0 = 0, |
| V4L2_EXT_VSC_ROTATE_90, |
| V4L2_EXT_VSC_ROTATE_180, |
| V4L2_EXT_VSC_ROTATE_270 |
| }; |
| |
| struct v4l2_ext_vsc_input_region { |
| struct v4l2_ext_video_rect crop; |
| struct v4l2_ext_video_rect res; |
| }; |
| |
| struct v4l2_ext_vsc_win_region { |
| struct v4l2_ext_vsc_input_region in; |
| struct v4l2_ext_video_rect out; |
| enum v4l2_ext_vsc_rotation rotation; |
| }; |
| |
| struct v4l2_ext_vsc_orbit_window { |
| struct v4l2_ext_video_rect osd_input; |
| struct v4l2_ext_video_rect video_input; |
| struct v4l2_ext_video_rect osd_output; |
| struct v4l2_ext_video_rect video_output; |
| }; |
| |
| struct v4l2_ext_vsc_orbit_move { |
| struct v4l2_ext_video_rect osd_input; |
| struct v4l2_ext_video_rect video_input; |
| struct v4l2_ext_video_rect osd_output; |
| struct v4l2_ext_video_rect video_output; |
| }; |
| |
| enum v4l2_ext_vsc_win_mode { |
| V4L2_EXT_VSC_WIN_MODE_NONE = 0, |
| V4L2_EXT_VSC_WIN_MODE_PIP, |
| V4L2_EXT_VSC_WIN_MODE_PBP |
| }; |
| |
| enum v4l2_ext_vsc_mirror_mode { |
| V4L2_EXT_VSC_MIRROR_MODE_NONE = 0, |
| V4L2_EXT_VSC_MIRROR_MODE_ON, |
| V4L2_EXT_VSC_MIRROR_MODE_OFF |
| }; |
| |
| enum v4l2_ext_vsc_memory_type { |
| V4L2_EXT_VSC_MEMORY_TYPE_NONE = 0, |
| V4L2_EXT_VSC_MEMORY_TYPE_SINGLE, |
| V4L2_EXT_VSC_MEMORY_TYPE_MULTI |
| }; |
| |
| struct v4l2_ext_vsc_win_prop { |
| enum v4l2_ext_vsc_win_mode win_mode; |
| enum v4l2_ext_vsc_mirror_mode mirror_mode; |
| enum v4l2_ext_vsc_memory_type mem_type; |
| }; |
| |
| struct v4l2_ext_vsc_zorder { |
| unsigned char zorder; |
| unsigned char alpha; |
| }; |
| |
| struct v4l2_ext_vsc_scaler_ratio { |
| int h_scaleup_ratio; |
| int v_scaleup_ratio; |
| int h_scaledown_ratio; |
| int v_scaledown_ratio; |
| }; |
| |
| enum v4l2_ext_vsc_latency_pattern { |
| V4L2_EXT_VSC_PATTERN_BLACK = 0, |
| V4L2_EXT_VSC_PATTERN_WHITE |
| }; |
| |
| struct v4l2_ext_vsc_latency_pattern_info { |
| struct v4l2_ext_video_rect r; |
| enum v4l2_ext_vsc_latency_pattern p; |
| }; |
| |
| struct v4l2_ext_vsc_active_win_info { |
| struct v4l2_ext_video_rect original; |
| struct v4l2_ext_video_rect active; |
| }; |
| |
| struct v4l2_ext_vsc_color_pixel_data { |
| unsigned int y; /* standard pixel color Y */ |
| unsigned int cb; /* standard pixel color Cb */ |
| unsigned int cr; /* standard pixel color Cr */ |
| }; |
| |
| enum v4l2_ext_vsc_color_pixel_format { |
| V4L2_EXT_VSC_COLOR_PIXEL_FORMAT_YUV = 0, |
| V4L2_EXT_VSC_COLOR_PIXEL_FORMAT_RGB |
| }; |
| |
| enum v4l2_ext_vsc_color_pixel_depth { |
| V4L2_EXT_VSC_COLOR_PIXEL_8BIT = 0, |
| V4L2_EXT_VSC_COLOR_PIXEL_10BIT |
| }; |
| |
| struct v4l2_ext_vsc_pixel_color_info { |
| struct v4l2_ext_video_rect r; |
| union { |
| struct v4l2_ext_vsc_color_pixel_data *p_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| enum v4l2_ext_vsc_color_pixel_format format; |
| enum v4l2_ext_vsc_color_pixel_depth depth; |
| }; |
| |
| /* PQ */ |
| // histogram bin, chroma bin num |
| #define V4L2_EXT_VPQ_BIN_NUM 64 |
| #define V4L2_EXT_VPQ_C_BIN_NUM 32 |
| #define V4L2_EXT_VPQ_H_BIN_NUM 32 |
| #define V4L2_EXT_LED_SMART_ADJ_ON (0x10) |
| |
| // PQ COMMON DATA TYPE |
| struct v4l2_ext_vpq_cmn_data { |
| unsigned int version; |
| unsigned int length; |
| unsigned char wid; |
| union { |
| unsigned char *p_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| // LED Type Definition |
| enum v4l2_ext_led_ui_adj_type { |
| V4L2_EXT_LED_UI_ADJ_OFF = 0x00, |
| V4L2_EXT_LED_UI_ADJ_SDR_LOW = 0x01, |
| V4L2_EXT_LED_UI_ADJ_SDR_MEDIUM = 0x02, |
| V4L2_EXT_LED_UI_ADJ_SDR_HIGH = 0x03, |
| V4L2_EXT_LED_UI_ADJ_HDR_LOW = 0x04, |
| V4L2_EXT_LED_UI_ADJ_HDR_MEDIUM = 0x05, |
| V4L2_EXT_LED_UI_ADJ_HDR_HIGH = 0x06, |
| V4L2_EXT_LED_UI_ADJ_MAX |
| }; |
| |
| enum v4l2_ext_led_localdimming_demo_type { |
| V4L2_EXT_LED_ONOFF = 0, // each led block flicker sequentially. |
| V4L2_EXT_LED_H_ONOFF_EXT, // led horizontal moving box pattern on for |
| // external localdimming chip. |
| V4L2_EXT_LED_V_ONOFF_EXT, // led vertical moving box pattern on for external |
| // localdimming chip. |
| V4L2_EXT_LED_SPLIT_SCREEN, // half of screen is made from white pattern, and |
| // show local dimming effect. |
| V4L2_EXT_LED_DEMOTYPE_SIZE_MAX |
| }; |
| |
| enum v4l2_ext_led_backlight_type { |
| V4L2_EXT_LED_BACKLIGHT_DIRECT_L = 0, |
| V4L2_EXT_LED_BACKLIGHT_EDGE_LED, |
| V4L2_EXT_LED_BACKLIGHT_OLED, |
| V4L2_EXT_LED_BACKLIGHT_DIRECT_VI, |
| V4L2_EXT_LED_BACKLIGHT_DIRECT_SKY, |
| V4L2_EXT_LED_BACKLIGHT_MINI_LED, |
| V4L2_EXT_LED_BACKLIGHT_END, |
| }; |
| |
| enum v4l2_ext_led_panel_inch_type { |
| V4L2_EXT_LED_INCH_32 = 0, |
| V4L2_EXT_LED_INCH_39, |
| V4L2_EXT_LED_INCH_42, |
| V4L2_EXT_LED_INCH_47, |
| V4L2_EXT_LED_INCH_49, |
| V4L2_EXT_LED_INCH_50, |
| V4L2_EXT_LED_INCH_55, |
| V4L2_EXT_LED_INCH_58, |
| V4L2_EXT_LED_INCH_60, |
| V4L2_EXT_LED_INCH_65, |
| V4L2_EXT_LED_INCH_70, |
| V4L2_EXT_LED_INCH_77, |
| V4L2_EXT_LED_INCH_79, |
| V4L2_EXT_LED_INCH_84, |
| V4L2_EXT_LED_INCH_98, |
| V4L2_EXT_LED_INCH_105, // TV model |
| V4L2_EXT_LED_INCH_23, |
| V4L2_EXT_LED_INCH_24, |
| V4L2_EXT_LED_INCH_26, |
| V4L2_EXT_LED_INCH_27, // Smart Monitor TV |
| V4L2_EXT_LED_INCH_22, |
| V4L2_EXT_LED_INCH_28, |
| V4L2_EXT_LED_INCH_40, |
| V4L2_EXT_LED_INCH_43, |
| V4L2_EXT_LED_INCH_86, |
| V4L2_EXT_LED_INCH_BASE |
| }; |
| |
| enum v4l2_ext_led_bar_type { |
| V4L2_EXT_LED_BAR_6 = 0, |
| V4L2_EXT_LED_BAR_12, |
| V4L2_EXT_LED_BAR_32, |
| V4L2_EXT_LED_BAR_36, |
| V4L2_EXT_LED_BAR_40, |
| V4L2_EXT_LED_BAR_48, |
| V4L2_EXT_LED_BAR_50, |
| V4L2_EXT_LED_BAR_90, |
| V4L2_EXT_LED_BAR_96, |
| V4L2_EXT_LED_BAR_120, |
| V4L2_EXT_LED_BAR_60, |
| V4L2_EXT_LED_BAR_144, |
| V4L2_EXT_LED_BAR_108, |
| V4L2_EXT_LED_BAR_160, |
| V4L2_EXT_LED_BAR_720, |
| V4L2_EXT_LED_BAR_960, |
| V4L2_EXT_LED_BAR_1440, |
| V4L2_EXT_LED_BAR_1800, |
| V4L2_EXT_LED_BAR_1920, |
| V4L2_EXT_LED_BAR_2400, |
| V4L2_EXT_LED_BAR_1200, |
| V4L2_EXT_LED_BAR_288, |
| V4L2_EXT_LED_BAR_216, |
| V4L2_EXT_LED_BAR_180, |
| V4L2_EXT_LED_BAR_MAX, |
| V4L2_EXT_LED_BAR_DEFALT = V4L2_EXT_LED_BAR_MAX, |
| }; |
| |
| enum v4l2_ext_led_module_maker_type { |
| V4L2_EXT_LED_MODULE_LGD = 0, |
| V4L2_EXT_LED_MODULE_CMI, |
| V4L2_EXT_LED_MODULE_AUO, |
| V4L2_EXT_LED_MODULE_SHARP, |
| V4L2_EXT_LED_MODULE_IPS, |
| V4L2_EXT_LED_MODULE_BOE, |
| V4L2_EXT_LED_MODULE_CSOT, |
| V4L2_EXT_LED_MODULE_INNOLUX, |
| V4L2_EXT_LED_MODULE_LCD_END, |
| V4L2_EXT_LED_MODULE_LGE = V4L2_EXT_LED_MODULE_LCD_END, |
| V4L2_EXT_LED_MODULE_PANASONIC, |
| V4L2_EXT_LED_MODULE_PDP_END, |
| V4L2_EXT_LED_MODULE_BASE = V4L2_EXT_LED_MODULE_PDP_END, |
| }; |
| |
| enum v4l2_ext_led_lut_number_type { |
| V4L2_EXT_LED_LUT_FRIST = 0, |
| V4L2_EXT_LED_LUT_SECOND, |
| V4L2_EXT_LED_LUT_THIRD, |
| V4L2_EXT_LED_LUT_MAX |
| }; |
| |
| enum v4l2_ext_led_ldim_ic { |
| V4L2_EXT_LED_LDIM_NONE = 0, // Not support Local dimming. |
| V4L2_EXT_LED_LDIM_INTERNAL = 1, // Use internal Local dimming block. |
| V4L2_EXT_LED_LDIM_EXTERNAL = 2, // Use external Local dimming IC. |
| }; |
| |
| enum v4l2_ext_led_wcg_panel_type { |
| V4L2_EXT_LED_WCG_PANEL_LED = 0, |
| V4L2_EXT_LED_WCG_PANEL_LED_ULTRAHD = 1, |
| V4L2_EXT_LED_WCG_PANEL_OLED = 2, |
| V4L2_EXT_LED_WCG_PANEL_OLED_ULTRAHD = 3 |
| }; |
| |
| struct v4l2_ext_led_panel_info { |
| enum v4l2_ext_led_panel_inch_type panel_inch; // panel size ex) 47, 55 |
| enum v4l2_ext_led_backlight_type backlight_type; // led backlight type ex) alef, edge |
| enum v4l2_ext_led_bar_type bar_type; // led bar type ex) h6,h12, v12 |
| enum v4l2_ext_led_module_maker_type module_maker; // panel maker ex) lgd, auo |
| enum v4l2_ext_led_ldim_ic local_dim_ic_type; // localdimming control type |
| // ex) internal localdiming |
| // block |
| enum v4l2_ext_led_wcg_panel_type panel_type; |
| }; |
| |
| enum v4l2_ext_led_ldim_demo_type { |
| v4l2_ext_led_ldim_demo_type_linedemo = 0, |
| v4l2_ext_led_ldim_demo_type_leftright = 1, |
| v4l2_ext_led_ldim_demo_type_topbottom = 2, |
| v4l2_ext_led_ldim_demo_type_max |
| }; |
| |
| struct v4l2_ext_led_ldim_demo_info { |
| enum v4l2_ext_led_ldim_demo_type eType; |
| unsigned char bOnOff; |
| }; |
| |
| struct v4l2_ext_led_apl_info { |
| unsigned short block_apl_min; |
| unsigned short block_apl_max; |
| }; |
| |
| struct v4l2_ext_led_spi_ctrl_info { |
| unsigned char bitMask; // see V4L2_EXT_LED_SPI_XXX for reference |
| unsigned int ctrlValue; |
| }; |
| |
| struct v4l2_ext_led_bpl_info { |
| unsigned short ai_brightness; |
| unsigned short sensor_level; |
| }; |
| |
| // MEMC Type Definition |
| enum v4l2_ext_memc_type_old { |
| V4L2_EXT_MEMC_TYPE_OFF = 0, |
| V4L2_EXT_MEMC_TYPE_LOW, |
| V4L2_EXT_MEMC_TYPE_HIGH, |
| V4L2_EXT_MEMC_TYPE_USER, |
| V4L2_EXT_MEMC_TYPE_55_PULLDOWN, |
| V4L2_EXT_MEMC_TYPE_MEDIUM |
| }; |
| |
| enum v4l2_ext_memc_type { |
| V4L2_EXT_MEMC_OFF = V4L2_EXT_MEMC_TYPE_OFF, |
| V4L2_EXT_MEMC_CINEMA_CLEAR = V4L2_EXT_MEMC_TYPE_MEDIUM, |
| V4L2_EXT_MEMC_NATURAL = V4L2_EXT_MEMC_TYPE_LOW, |
| V4L2_EXT_MEMC_SMOOTH = V4L2_EXT_MEMC_TYPE_HIGH, // |
| V4L2_EXT_MEMC_USER = V4L2_EXT_MEMC_TYPE_USER, |
| V4L2_EXT_MEMC_PULLDOWN_55 = V4L2_EXT_MEMC_TYPE_55_PULLDOWN |
| }; |
| |
| struct v4l2_ext_memc_motion_comp_info { |
| unsigned char blur_level; |
| unsigned char judder_level; |
| enum v4l2_ext_memc_type memc_type; |
| }; |
| |
| // VPQ Type Definition |
| enum v4l2_ext_vpq_rgb_index { |
| V4L2_EXT_VPQ_RED = 0, |
| V4L2_EXT_VPQ_GREEN = 1, |
| V4L2_EXT_VPQ_BLUE = 2, |
| V4L2_EXT_VPQ_RGB_MAX = 3 |
| }; |
| |
| #define V4L2_EXT_HDR_PICINFO_SIZE 128 |
| |
| // HDR Type Definition |
| struct v4l2_ext_hdr_color_correction { |
| unsigned int hue_blend; |
| unsigned int sat_blend; |
| |
| unsigned int l_gain_x[8]; // L gain LUT x point |
| unsigned int l_gain_y[8]; // L gain LUT y point |
| |
| unsigned int s_gain_x[8]; // S gain LUT x point |
| unsigned int s_gain_y[8]; // S gain LUT y point |
| }; |
| |
| enum v4l2_ext_hdr_mode { |
| V4L2_EXT_HDR_MODE_SDR, |
| V4L2_EXT_HDR_MODE_DOLBY, |
| V4L2_EXT_HDR_MODE_HDR10, |
| V4L2_EXT_HDR_MODE_HLG, |
| V4L2_EXT_HDR_MODE_TECHNICOLOR, |
| V4L2_EXT_HDR_MODE_HDREFFECT, |
| V4L2_EXT_HDR_MODE_MAX |
| }; |
| |
| enum v4l2_ext_colorimetry_info { |
| V4L2_EXT_COLORIMETRY_BT601, |
| V4L2_EXT_COLORIMETRY_BT709, |
| V4L2_EXT_COLORIMETRY_BT2020, |
| V4L2_EXT_COLORIMETRY_MAX |
| }; |
| |
| struct v4l2_ext_pq_mode_info { |
| unsigned int hdrStatus; // see v4l2_ext_hdr_mode |
| unsigned int colorimetry; // see v4l2_ext_colorimetry_info |
| unsigned int peakLuminance; // peakLuminance of panel |
| unsigned int supportPrime; // support Prime |
| unsigned int reserved; |
| }; |
| |
| struct v4l2_ext_hdr_tonemap { |
| enum v4l2_ext_hdr_mode hdr_mode; |
| unsigned int r_data[66]; |
| unsigned int g_data[66]; |
| unsigned int b_data[66]; |
| }; |
| |
| struct v4l2_ext_hdr_3dlut { |
| enum v4l2_ext_hdr_mode hdr_mode; |
| unsigned int data_size; |
| union { |
| unsigned int *p3dlut; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| enum v4l2_ext_dolby_config_type { |
| V4L2_EXT_DOLBY_CONFIG_MAIN = 0, |
| V4L2_EXT_DOLBY_CONFIG_BEST |
| }; |
| |
| struct v4l2_ext_dolby_config_path { |
| enum v4l2_ext_dolby_config_type eConfigType; |
| char sConfigPath[255]; |
| }; |
| |
| struct v4l2_ext_dolby_picture_mode { |
| unsigned int bOnOff; |
| unsigned int uPictureMode; |
| }; |
| |
| enum v4l2_ext_dolby_picture_menu { |
| V4L2_EXT_DOLBY_BACKLIGHT = 0, |
| V4L2_EXT_DOLBY_BRIGHTNESS, |
| V4L2_EXT_DOLBY_COLOR, |
| V4L2_EXT_DOLBY_CONTRAST, |
| V4L2_EXT_DOLBY_PICTURE_MENU_MAX |
| }; |
| |
| struct v4l2_ext_dolby_picture_data { |
| enum v4l2_ext_dolby_picture_menu picture_menu; |
| unsigned int on_off; |
| int setting_value; |
| }; |
| |
| struct v4l2_ext_dolby_gd_delay { |
| unsigned short ott_24; |
| unsigned short ott_30; |
| unsigned short ott_50; |
| unsigned short ott_60; |
| unsigned short ott_100; |
| unsigned short ott_120; |
| |
| unsigned short hdmi_24; |
| unsigned short hdmi_30; |
| unsigned short hdmi_50; |
| unsigned short hdmi_60; |
| unsigned short hdmi_100; |
| unsigned short hdmi_120; |
| }; |
| |
| struct v4l2_ext_dolby_gd_delay_lut { |
| struct v4l2_ext_dolby_gd_delay standard_frc_off; |
| struct v4l2_ext_dolby_gd_delay standard_frc_on; |
| |
| struct v4l2_ext_dolby_gd_delay vivid_frc_off; |
| struct v4l2_ext_dolby_gd_delay vivid__frc_on; |
| |
| struct v4l2_ext_dolby_gd_delay cinema_home_frc_off; |
| struct v4l2_ext_dolby_gd_delay cinema_home_frc_on; |
| |
| struct v4l2_ext_dolby_gd_delay cinema_frc_off; |
| struct v4l2_ext_dolby_gd_delay cinema_frc_on; |
| |
| struct v4l2_ext_dolby_gd_delay game_frc_off; |
| struct v4l2_ext_dolby_gd_delay game_frc_on; |
| }; |
| |
| struct v4l2_ext_dolby_gd_delay_param { |
| struct v4l2_ext_dolby_gd_delay_lut dolby_GD_standard; |
| struct v4l2_ext_dolby_gd_delay_lut dolby_GD_latency; |
| }; |
| |
| struct v4l2_ext_dolby_ambient_light_param { |
| unsigned int onoff; |
| unsigned int luxdata; |
| union { |
| unsigned int *rawdata; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| // VPQ Type Definition |
| enum v4l2_ext_vpq_inner_pattern_ire { |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_0 = 0, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_2DOT5, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_5, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_7DOT5, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_10, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_15, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_20, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_25, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_30, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_35, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_40, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_45, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_50, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_55, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_60, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_65, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_70, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_75, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_80, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_85, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_90, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_95, |
| V4L2_EXT_VPQ_INNER_PATTERN_IRE_100, |
| V4L2_EXT_VPQ_INNER_PATTERN_DISABLE |
| }; |
| |
| enum v4l2_ext_vpq_input { |
| V4L2_EXT_VPQ_INPUT_ATV = 0, |
| V4L2_EXT_VPQ_INPUT_AV, |
| V4L2_EXT_VPQ_INPUT_SCARTRGB, |
| V4L2_EXT_VPQ_INPUT_COMP, |
| V4L2_EXT_VPQ_INPUT_RGB_PC, |
| V4L2_EXT_VPQ_INPUT_HDMI_TV, |
| V4L2_EXT_VPQ_INPUT_HDMI_PC, |
| V4L2_EXT_VPQ_INPUT_DTV, |
| V4L2_EXT_VPQ_INPUT_PICWIZ, |
| V4L2_EXT_VPQ_INPUT_PICTEST, |
| V4L2_EXT_VPQ_INPUT_MEDIA_MOVIE, |
| V4L2_EXT_VPQ_INPUT_MEDIA_PHOTO, |
| V4L2_EXT_VPQ_INPUT_CAMERA, |
| V4L2_EXT_VPQ_INPUT_PVR_DTV, |
| V4L2_EXT_VPQ_INPUT_PVR_ATV, |
| V4L2_EXT_VPQ_INPUT_PVR_AV, |
| V4L2_EXT_VPQ_INPUT_MAX |
| }; |
| |
| struct v4l2_ext_vpq_dc2p_histodata_info { |
| unsigned int apl; |
| signed int min; |
| signed int max; |
| signed int peak_low; |
| signed int peak_high; |
| unsigned int skin_count; |
| unsigned int sat_status; |
| unsigned int diff_sum; |
| unsigned int motion; |
| unsigned int texture; |
| unsigned int bin[V4L2_EXT_VPQ_BIN_NUM]; |
| unsigned int chrm_bin[V4L2_EXT_VPQ_C_BIN_NUM]; |
| unsigned int hue_bin[V4L2_EXT_VPQ_H_BIN_NUM]; |
| }; |
| |
| struct v4l2_ext_vpq_color_temp { |
| unsigned short rgb_gain[3]; |
| unsigned short rgb_offset[3]; |
| }; |
| |
| struct v4l2_ext_vpq_gamut_add_info { |
| unsigned int info_size; |
| union { |
| unsigned int *p_info_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_gamut_lut { |
| unsigned int lut_version; |
| unsigned int total_section_num; |
| union { |
| unsigned short *p_section_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| struct v4l2_ext_vpq_gamut_add_info add_info; |
| }; |
| |
| struct v4l2_ext_oled_luminance_boost { |
| unsigned int length; |
| union { |
| unsigned int *p_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_block_bypass { |
| unsigned int bypassMask; // see V4L2_EXT_VPQ_BYPASS_MASK_XXX |
| unsigned char bOnOff; |
| }; |
| |
| struct v4l2_ext_vpq_od { |
| unsigned int length; |
| union { |
| unsigned char *p_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_od_extension { |
| unsigned char ext_type; |
| unsigned int ext_length; |
| union { |
| unsigned char *p_ext_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_gamma_lut { |
| unsigned int table_num; // number of table elements |
| union { |
| unsigned int *table_red; |
| unsigned int compat_table_red; |
| unsigned long long sizer_r; |
| }; |
| union { |
| unsigned int *table_green; |
| unsigned int compat_table_green; |
| unsigned long long sizer_g; |
| }; |
| union { |
| unsigned int *table_blue; |
| unsigned int compat_table_blue; |
| unsigned long long sizer_b; |
| }; |
| }; |
| |
| #define CSC_MUX_LUT_SIZE 4 |
| struct v4l2_ext_csc_mux_lut { |
| unsigned int mux_l3d_in; |
| unsigned int mux_blend_in; |
| unsigned int mux_4p_lut_in; |
| unsigned int mux_oetf_out; |
| unsigned int b4p_lut_x[CSC_MUX_LUT_SIZE]; |
| unsigned int b4p_lut_y[CSC_MUX_LUT_SIZE]; |
| }; |
| |
| struct v4l2_ext_gamut_post { |
| unsigned char gamma; |
| unsigned char degamma; |
| short matrix[9]; |
| struct v4l2_ext_csc_mux_lut mux_blend; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| enum v4l2_ext_cm_dynamic_color_level { |
| V4L2_EXT_CM_DYNAMIC_COLOR_OFF = 0, |
| V4L2_EXT_CM_DYNAMIC_COLOR_LOW = 1, |
| V4L2_EXT_CM_DYNAMIC_COLOR_MEDIUM = 2, |
| V4L2_EXT_CM_DYNAMIC_COLOR_HIGH = 3, |
| V4L2_EXT_CM_DYNAMIC_COLOR_INVALID = 4 |
| }; |
| |
| enum v4l2_ext_cm_perferred_color_type { |
| V4L2_EXT_CM_PREFERRED_COLOR_SKIN = 0, |
| V4L2_EXT_CM_PREFERRED_COLOR_GRASS = 1, |
| V4L2_EXT_CM_PREFERRED_COLOR_SKYBLUE = 2, |
| V4L2_EXT_CM_PREFERRED_COLOR_MAX |
| }; |
| |
| enum v4l2_ext_cm_cms_color_type { // Color Management System |
| V4L2_EXT_CM_CMS_RED = 0, |
| V4L2_EXT_CM_CMS_GREEN = 1, |
| V4L2_EXT_CM_CMS_BLUE = 2, |
| V4L2_EXT_CM_CMS_CYAN = 3, |
| V4L2_EXT_CM_CMS_MAGENTA = 4, |
| V4L2_EXT_CM_CMS_YELLOW = 5, |
| V4L2_EXT_CM_CMS_MAX |
| }; |
| |
| struct v4l2_ext_cm_dynamic_color_ui { |
| unsigned char enable; // 0: don't reference preferred_value(expert_control), |
| // 1: reference preferred_value(not_use_cm_db==1 && |
| // advanced_control) |
| enum v4l2_ext_cm_dynamic_color_level value; // ui value |
| }; |
| |
| struct v4l2_ext_cm_perferred_color_ui { |
| unsigned char enable; // 0: don't reference preferred_value(expert_control), |
| // 1: reference preferred_value(advanced_control) |
| signed char value[V4L2_EXT_CM_PREFERRED_COLOR_MAX]; // ui value per each color_type |
| }; |
| |
| struct v4l2_ext_cm_cms_ui { // Color Management System |
| unsigned char enable; // 0: don't reference value(advanced_control), 1: |
| // reference value(not_use_cm_db==1 && expert_control) |
| signed char gain_saturation[V4L2_EXT_CM_CMS_MAX]; // ui value per each color_type |
| signed char gain_hue[V4L2_EXT_CM_CMS_MAX]; // ui value per each color_type |
| signed char gain_luminance[V4L2_EXT_CM_CMS_MAX]; // ui value per each color_type |
| }; |
| |
| struct v4l2_ext_cm_ui_status { |
| struct v4l2_ext_cm_dynamic_color_ui dynamic; |
| struct v4l2_ext_cm_perferred_color_ui preferred; |
| struct v4l2_ext_cm_cms_ui cms; |
| }; |
| |
| struct v4l2_ext_cm_info { |
| unsigned char |
| use_internal_cm_db; // 0: use dbInfo, 1: use driver internal db |
| struct v4l2_ext_cm_ui_status uiInfo; |
| union { |
| unsigned char *dbinfo; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| /* dynamic contrast */ |
| struct v4l2_ext_dynamic_contrast_ctrl { |
| unsigned short uDcVal; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| #define MAX_DYNAMIC_CONTRAST_LUT_SIZE 16 |
| #define MAX_DYNAMIC_CONTRAST_SATURATION_LUT_SIZE 10 |
| struct v4l2_ext_dynamic_contrast_lut { |
| signed int sLumaLutY[MAX_DYNAMIC_CONTRAST_LUT_SIZE]; |
| /* if support luma LUT variable X coordination */ |
| signed int sLumaLutX[MAX_DYNAMIC_CONTRAST_LUT_SIZE]; |
| /* if support DYNAMIC_CONTRAST_SATURATION_XY */ |
| unsigned int uSaturationY[MAX_DYNAMIC_CONTRAST_SATURATION_LUT_SIZE]; |
| unsigned int uSaturationX[MAX_DYNAMIC_CONTRAST_SATURATION_LUT_SIZE]; |
| }; |
| |
| /* black level */ |
| enum v4l2_ext_vpq_black_level_type { |
| V4L2_EXT_VPQ_BLACKLEVEL_Y709_LINEAR_LIMIT_HIGH, |
| V4L2_EXT_VPQ_BLACKLEVEL_Y709_BYPASS, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_Y709_LINEAR_LOW, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_Y709_LIMIT_HIGH, |
| V4L2_EXT_VPQ_BLACKLEVEL_Y709_COMP_LOW, |
| V4L2_EXT_VPQ_BLACKLEVEL_AV_RF_EXTENSION, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_BT2020_LINEAR_LOW, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_BT2020_LIMIT_HIGH, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_Y601_LINEAR_LOW, |
| V4L2_EXT_VPQ_BLACKLEVEL_RGB_Y601_LIMIT_HIGH, |
| }; |
| |
| struct v4l2_ext_vpq_black_level_info { |
| unsigned char ui_value; |
| unsigned char curr_input; |
| unsigned char color_space; |
| enum v4l2_ext_vpq_black_level_type black_level_type; |
| }; |
| |
| enum v4l2_ext_vpq_picture_ctrl_type { |
| V4L2_EXT_VPQ_PICTURE_CTRL_CONTRAST = 0, |
| V4L2_EXT_VPQ_PICTURE_CTRL_BRIGHTNESS = 1, |
| V4L2_EXT_VPQ_PICTURE_CTRL_SATURATION = 2, |
| V4L2_EXT_VPQ_PICTURE_CTRL_HUE = 3, |
| V4L2_EXT_VPQ_PICTURE_CTRL_MAX |
| }; |
| |
| struct v4l2_ext_vpq_picture_ctrl_data { |
| signed int picture_ui_value[V4L2_EXT_VPQ_PICTURE_CTRL_MAX]; |
| signed int chipData_contrast; |
| signed int chipData_brightness; |
| signed int chipData_saturation; |
| signed int chipData_hue; |
| }; |
| |
| struct v4l2_ext_vpq_super_resolution_data { |
| unsigned char ui_value; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_mpeg_noise_reduction_data { |
| unsigned char ui_value; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_decontour_data { |
| unsigned char ui_value; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_sharpness_data { |
| unsigned short ui_value[4]; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vpq_noise_reduction_data { |
| unsigned short ui_value[2]; |
| union { |
| unsigned char *pst_chip_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| /* V4L2_CID_EXT_VPQ_STEREO_FACE_CTRL */ |
| #define V4L2_VPQ_EXT_STEREO_FACE_OFF (0) // off |
| #define V4L2_VPQ_EXT_STEREO_FACE_ON (1) // normal on |
| #define V4L2_VPQ_EXT_STEREO_FACE_DEMO (2) // demo mode |
| |
| /* extra PQ inner pattern */ |
| #define MAX_EXT_PATTERN_GRADATION_LINE (4) // it may depends on chip limitation |
| #define MAX_EXT_PATTERN_WINBOX (10) // it may depends on chip limitation |
| #define MAX_EXT_PATTERN_GRADATION_H_STRIDE_SIZE (254) // it may depends on chip limitation |
| #define EXT_PATTERN_GRADATION_H_STRIDE_STEP (2) // it may depends on chip limitation |
| #define MAX_EXT_PATTERN_GRADATION_V_STRIDE_SIZE (127) // it may depends on chip limitation |
| #define EXT_PATTERN_GRADATION_V_STRIDE_STEP (1) // it may depends on chip limitation |
| #define EXT_PATTERN_WIDTH (3840) // it may depends on chip limitation |
| #define EXT_PATTERN_HEIGHT (2160) // it may depends on chip limitation |
| |
| enum V4L2_VPQ_EXT_PATTERN_MODE { |
| V4L2_VPQ_EXT_PATTERN_WINBOX, |
| V4L2_VPQ_EXT_PATTERN_GRADATION, |
| V4L2_VPQ_EXT_PATTERN_MAX |
| }; |
| |
| enum V4L2_VPQ_EXT_PATTERN_GRADATION_DIRECTION { |
| V4L2_VPQ_EXT_PATTERN_GRADATION_DIRECTION_HORIZONTAL, |
| V4L2_VPQ_EXT_PATTERN_GRADATION_DIRECTION_VERTICAL, |
| V4L2_VPQ_EXT_PATTERN_GRADATION_DIRECTION_MAX |
| }; |
| |
| struct v4l2_vpq_ext_pattern_gradation_line_attr { |
| unsigned char lineIdx; // gradation line index |
| unsigned short start_R; // 1st gradation block's red level as a 10bit resolution |
| unsigned short start_G; // 1st gradation block's green level as a 10bit resolution |
| unsigned short start_B; // 1st gradation block's blue level as a 10bit resolution |
| unsigned short step_R; // step size for next gradation block |
| unsigned short step_G; // step size for next gradation block |
| unsigned short step_B; // step size for next gradation block |
| unsigned short strideSize; // gradation block's width(horizontal |
| // mode)/height(vertical mode) |
| }; |
| |
| struct v4l2_vpq_ext_pattern_gradation_info { |
| unsigned char numGrad; // number of gradation lines in a screen |
| enum V4L2_VPQ_EXT_PATTERN_GRADATION_DIRECTION e_grad_mode; |
| struct v4l2_vpq_ext_pattern_gradation_line_attr |
| st_line_attr[MAX_EXT_PATTERN_GRADATION_LINE]; |
| }; |
| |
| struct v4l2_vpq_ext_pattern_winbox_win_attr { |
| unsigned short winIdx; // window layer index. 0:background |
| unsigned short x; |
| unsigned short y; |
| unsigned short w; |
| unsigned short h; |
| unsigned short fill_R; // 10 bit resolution |
| unsigned short fill_G; // 10 bit resolution |
| unsigned short fill_B; // 10 bit resolution |
| }; |
| |
| struct v4l2_vpq_ext_pattern_winbox_info { |
| unsigned char |
| u8_num_win; // number of windows in a screen(including background window) |
| struct v4l2_vpq_ext_pattern_winbox_win_attr |
| st_win_box_attr[MAX_EXT_PATTERN_WINBOX]; |
| }; |
| |
| struct |
| v4l2_vpq_ext_pattern_info { // old version : this will be removed in near-time |
| unsigned char b_on_off; |
| enum V4L2_VPQ_EXT_PATTERN_MODE e_mode; |
| struct v4l2_vpq_ext_pattern_gradation_info *pst_grad_info; |
| struct v4l2_vpq_ext_pattern_winbox_info *pst_win_box_info; |
| }; |
| |
| #define USE_EXT_PATTERN_INFO_V2 |
| struct v4l2_vpq_ext_pattern_info_v2 { |
| unsigned char b_on_off; |
| enum V4L2_VPQ_EXT_PATTERN_MODE emode; |
| struct v4l2_vpq_ext_pattern_gradation_info st_grad_info; |
| struct v4l2_vpq_ext_pattern_winbox_info st_win_box_info; |
| }; |
| |
| enum v4l2_ext_aipq_mode { |
| V4L2_EXT_AIPQ_MODE_OFF = 0, |
| V4L2_EXT_AIPQ_MODE_ON = 1, |
| V4L2_EXT_AIPQ_MODE_DEMO_ON = 2, |
| }; |
| |
| enum v4l2_ext_aipq_scene_info { |
| V4L2_EXT_AIPQ_SCENE_STANDARD = 0, |
| V4L2_EXT_AIPQ_SCENE_BUILDING = 1, |
| V4L2_EXT_AIPQ_SCENE_LANDSCAPE = 2, |
| V4L2_EXT_AIPQ_SCENE_NIGHT = 3, |
| V4L2_EXT_AIPQ_SCENE_INFO_MAX |
| }; |
| |
| enum v4l2_ext_aipq_genre_info { |
| V4L2_EXT_AIPQ_GENRE_STANDARD = 0, |
| V4L2_EXT_AIPQ_GENRE_SPORTS = 1, |
| V4L2_EXT_AIPQ_GENRE_ANIMATION = 2, |
| V4L2_EXT_AIPQ_GENRE_MOVIE = 3, |
| V4L2_EXT_AIPQ_GENRE_INFO_MAX |
| }; |
| |
| /* VBE */ |
| enum v4l2_ext_vbe_panel_inch { |
| V4L2_EXT_VBE_PANEL_INCH_22 = 0, |
| V4L2_EXT_VBE_PANEL_INCH_23, |
| V4L2_EXT_VBE_PANEL_INCH_24, |
| V4L2_EXT_VBE_PANEL_INCH_26, |
| V4L2_EXT_VBE_PANEL_INCH_27, |
| V4L2_EXT_VBE_PANEL_INCH_28, |
| V4L2_EXT_VBE_PANEL_INCH_32, |
| V4L2_EXT_VBE_PANEL_INCH_39, |
| V4L2_EXT_VBE_PANEL_INCH_40, |
| V4L2_EXT_VBE_PANEL_INCH_42, |
| V4L2_EXT_VBE_PANEL_INCH_43, |
| V4L2_EXT_VBE_PANEL_INCH_47, |
| V4L2_EXT_VBE_PANEL_INCH_49, |
| V4L2_EXT_VBE_PANEL_INCH_50, |
| V4L2_EXT_VBE_PANEL_INCH_55, |
| V4L2_EXT_VBE_PANEL_INCH_58, |
| V4L2_EXT_VBE_PANEL_INCH_60, |
| V4L2_EXT_VBE_PANEL_INCH_65, |
| V4L2_EXT_VBE_PANEL_INCH_70, |
| V4L2_EXT_VBE_PANEL_INCH_75, |
| V4L2_EXT_VBE_PANEL_INCH_77, |
| V4L2_EXT_VBE_PANEL_INCH_79, |
| V4L2_EXT_VBE_PANEL_INCH_84, |
| V4L2_EXT_VBE_PANEL_INCH_86, |
| V4L2_EXT_VBE_PANEL_INCH_98, |
| V4L2_EXT_VBE_PANEL_INCH_105, |
| V4L2_EXT_VBE_PANEL_INCH_48, // 17Y Added |
| V4L2_EXT_VBE_PANEL_INCH_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_maker { |
| V4L2_EXT_VBE_PANEL_MAKER_LGD = 0, |
| V4L2_EXT_VBE_PANEL_MAKER_AUO, |
| V4L2_EXT_VBE_PANEL_MAKER_SHARP, |
| V4L2_EXT_VBE_PANEL_MAKER_BOE, |
| V4L2_EXT_VBE_PANEL_MAKER_CSOT, |
| V4L2_EXT_VBE_PANEL_MAKER_INNOLUX, |
| V4L2_EXT_VBE_PANEL_MAKER_LGD_M, |
| V4L2_EXT_VBE_PANEL_MAKER_ODM_B, |
| V4L2_EXT_VBE_PANEL_MAKER_BOE_TPV, |
| V4L2_EXT_VBE_PANEL_MAKER_HKC, |
| V4L2_EXT_VBE_PANEL_MAKER_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_interface { |
| V4L2_EXT_VBE_PANEL_EPI = 0, |
| V4L2_EXT_VBE_PANEL_LVDS, |
| V4L2_EXT_VBE_PANEL_VX1, |
| V4L2_EXT_VBE_PANEL_CEDS, |
| V4L2_EXT_VBE_PANEL_EPI_QSAC, |
| V4L2_EXT_VBE_PANEL_RESERVED1, |
| V4L2_EXT_VBE_PANEL_RESERVED2, |
| V4L2_EXT_VBE_PANEL_INTERFACE_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_resolution { |
| V4L2_EXT_VBE_PANEL_RESOLUTION_1024X768 = 0, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_1280X720, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_1366X768, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_1920X1080, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_2560X1080, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_3840X2160, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_5120X2160, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_7680X4320, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_RESERVED1, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_RESERVED2, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_RESERVED3, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_RESERVED4, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_RESERVED5, |
| V4L2_EXT_VBE_PANEL_RESOLUTION_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_version { |
| V4L2_EXT_VBE_PANEL_NONE = 0, |
| V4L2_EXT_VBE_PANEL_V12, |
| V4L2_EXT_VBE_PANEL_V13, |
| V4L2_EXT_VBE_PANEL_V14, |
| V4L2_EXT_VBE_PANEL_V15, |
| V4L2_EXT_VBE_PANEL_V16, |
| V4L2_EXT_VBE_PANEL_V17, |
| V4L2_EXT_VBE_PANEL_V18, |
| V4L2_EXT_VBE_PANEL_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_framerate { |
| V4L2_EXT_VBE_PANEL_FRAMERATE_60HZ, |
| V4L2_EXT_VBE_PANEL_FRAMERATE_120HZ, |
| V4L2_EXT_VBE_PANEL_FRAMERATE_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_backlight_type { |
| V4L2_EXT_VBE_PANEL_BL_DIRECT_L = 0, |
| V4L2_EXT_VBE_PANEL_BL_EDGE_LED, |
| V4L2_EXT_VBE_PANEL_BL_OLED, |
| V4L2_EXT_VBE_PANEL_BL_DIRECT_VI, |
| V4L2_EXT_VBE_PANEL_BL_DIRECT_SKY, |
| V4L2_EXT_VBE_PANEL_BL_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_led_bar_type { |
| V4L2_EXT_VBE_PANEL_LED_BAR_6 = 0, |
| V4L2_EXT_VBE_PANEL_LED_BAR_12, |
| V4L2_EXT_VBE_PANEL_LED_BAR_36, |
| V4L2_EXT_VBE_PANEL_LED_BAR_40, |
| V4L2_EXT_VBE_PANEL_LED_BAR_48, |
| V4L2_EXT_VBE_PANEL_LED_BAR_50, |
| V4L2_EXT_VBE_PANEL_LED_BAR_96, |
| V4L2_EXT_VBE_PANEL_LED_BAR_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_cell_type { |
| V4L2_EXT_VBE_PANEL_CELL_TYPE_RGB = 0, |
| V4L2_EXT_VBE_PANEL_CELL_TYPE_RGBW, |
| V4L2_EXT_VBE_PANEL_CELL_TYPE_MAX |
| }; |
| |
| enum v4l2_ext_vbe_panel_bandwidth { |
| V4L2_EXT_VBE_PANEL_BANDWIDTH_DEFAULT = 0, |
| V4L2_EXT_VBE_PANEL_BANDWIDTH_1_5G, |
| V4L2_EXT_VBE_PANEL_BANDWIDTH_2_1G, |
| V4L2_EXT_VBE_PANEL_BANDWIDTH_3_0G, |
| V4L2_EXT_VBE_PANEL_BANDWIDTH_MAX |
| }; |
| |
| enum v4l2_ext_vbe_frc_chip { |
| V4L2_EXT_VBE_FRC_CHIP_NONE = 0, |
| V4L2_EXT_VBE_FRC_CHIP_INTERNAL, |
| V4L2_EXT_VBE_FRC_CHIP_EXTERNAL1, // Reserved1 |
| V4L2_EXT_VBE_FRC_CHIP_EXTERNAL2, // Reserved2 |
| V4L2_EXT_VBE_FRC_CHIP_TYPE_MAX |
| }; |
| |
| enum v4l2_ext_vbe_lvds_colordepth { |
| V4L2_EXT_VBE_LVDS_COLOR_DEPTH_8BIT, |
| V4L2_EXT_VBE_LVDS_COLOR_DEPTH_10BIT, |
| V4L2_EXT_VBE_LVDS_COLOR_DEPTH_MAX |
| }; |
| |
| enum v4l2_ext_vbe_lvds_type { |
| V4L2_EXT_VBE_LVDS_TYPE_VESA, |
| V4L2_EXT_VBE_LVDS_TYPE_JEIDA, |
| V4L2_EXT_VBE_LVDS_TYPE_MAX |
| }; |
| |
| union v4l2_ext_vbe_user_option { |
| unsigned int all; |
| // struct _flags { |
| // unsigned int SocOptionBIT0 : 1, SocOptionBIT1 : 1, SocOptionBIT2 : 1, |
| // SocOptionBIT3 : 1, SocOptionBIT4 : 1, SocOptionBIT5 : 1, |
| // SocOptionBIT6 : 1, SocOptionBIT7 : 1, SocOptionBIT8 : 1, |
| // SocOptionBIT9 : 1, SocOptionBIT10 : 1, SocOptionBIT11 : 1, |
| // SocOptionBIT12 : 1, SocOptionBIT13 : 1, SocOptionBIT14 : 1, |
| // SocOptionBIT15 : 1, SocOptionBIT16 : 1, SocOptionBIT17 : 1, |
| // SocOptionBIT18 : 1, SocOptionBIT19 : 1, SocOptionBIT20 : 1, |
| // SocOptionBIT21 : 1, SocOptionBIT22 : 1, SocOptionBIT23 : 1, |
| // SocOptionBIT24 : 1, SocOptionBIT25 : 1, SocOptionBIT26 : 1, |
| // SocOptionBIT27 : 1, SocOptionBIT28 : 1, SocOptionBIT29 : 1, |
| // SocOptionBIT30 : 1, SocOptionBIT31 : 1; |
| // } flags; |
| }; |
| |
| struct v4l2_ext_vbe_panel_info { |
| enum v4l2_ext_vbe_panel_inch panelInch; // Panel Inch |
| enum v4l2_ext_vbe_panel_maker panelMaker; // Panel maker |
| enum v4l2_ext_vbe_panel_interface panelInterface; // Panel Interface |
| enum v4l2_ext_vbe_panel_resolution panelResolution; // Panel Resolution |
| enum v4l2_ext_vbe_panel_version panelVersion; // Panel Version |
| enum v4l2_ext_vbe_panel_framerate panelFrameRate; // Panel Frame Rate |
| enum v4l2_ext_vbe_panel_led_bar_type panelLedBarType; // LED bar type |
| enum v4l2_ext_vbe_panel_backlight_type panelBacklightType; // LED Backlight type |
| enum v4l2_ext_vbe_panel_cell_type panelCellType; // Panel Cell type |
| enum v4l2_ext_vbe_panel_bandwidth dispOutLaneBW; // Output lane bandwidth |
| enum v4l2_ext_vbe_frc_chip frcType; // FRC type |
| enum v4l2_ext_vbe_lvds_colordepth lvdsColorDepth; // LVDS Color depth |
| enum v4l2_ext_vbe_lvds_type lvdsType; // LVDS Type |
| union v4l2_ext_vbe_user_option userSpecificOption; // Reserved Options |
| }; |
| |
| struct v4l2_ext_vbe_ssc { |
| unsigned int on_off; |
| unsigned short percent; |
| unsigned short period; |
| }; |
| |
| struct v4l2_ext_vbe_mirror { |
| unsigned int bIsH; |
| unsigned int bIsV; |
| }; |
| |
| enum v4l2_ext_vbe_mplus_mode { |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE0 = 0,// V4L2_EXT_VBE_MPLUS_HIGH_LUM1_MSE_ON = 0, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE1, // V4L2_EXT_VBE_MPLUS_HIGH_LUM2, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE2, // V4L2_EXT_VBE_MPLUS_LOW_POWER1, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE3, // V4L2_EXT_VBE_MPLUS_MLE_MODE_OFF, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE4, // V4L2_EXT_VBE_MPLUS_HIGH_LUM1_MSE_OFF, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE5, // V4L2_EXT_VBE_MPLUS_LOW_POWER2, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE6, // V4L2_EXT_VBE_MPLUS_LOW_POWER2_SC_OFF, |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE7, // MHE Mode1 09/20/2018 |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE8, // MHE Mode2 09/20/2018 |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE9, // MHE Mode3 09/20/2018 |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODE10, // MHE Mode4 09/20/2018 |
| V4L2_EXT_VBE_MPLUS_MPLUS_MODEMAX |
| }; |
| |
| struct v4l2_ext_vbe_dga4ch { |
| union { |
| unsigned int *p_red_gamma_table; |
| unsigned int compat_data_red; |
| unsigned long long sizer_red; |
| }; |
| union { |
| unsigned int *p_green_gamma_gable; |
| unsigned int compat_data_green; |
| unsigned long long sizer_green; |
| }; |
| union { |
| unsigned int *p_blue_gamma_table; |
| unsigned int compat_data_blue; |
| unsigned long long sizer_blue; |
| }; |
| union { |
| unsigned int *p_white_gamma_table; |
| unsigned int compat_data_white; |
| unsigned long long sizer_white; |
| }; |
| }; |
| |
| struct v4l2_ext_vbe_mplus_param { |
| unsigned short nFrameGainLimit; |
| unsigned short nPixelGainLimit; |
| }; |
| |
| struct v4l2_ext_vbe_inner_pattern { |
| unsigned char bOnOff; |
| unsigned char ip; |
| unsigned char type; |
| }; |
| |
| struct v4l2_ext_vbe_panel_tscic { |
| union { |
| unsigned char *u8p_control_tbl;//unsigned char *u8pControlTbl; |
| unsigned int compat_data_ctrl; |
| unsigned long long sizer_ctrl; |
| }; |
| unsigned int u32Ctrlsize; |
| union { |
| unsigned int *u32ptscictbl;//unsigned int *u32pTSCICTbl; |
| unsigned int compat_data_tscic; |
| unsigned long long sizer_tscic; |
| }; |
| unsigned int u32Tscicsize; |
| }; |
| |
| struct v4l2_ext_vbe_mplus_data { |
| union { |
| void *p_register_set; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| unsigned char nPanelMaker; |
| }; |
| |
| enum v4l2_ext_vbe_pwm_pin_sel { |
| V4L2_EXT_VBE_PWM_DEV_PIN0 = 0, |
| V4L2_EXT_VBE_PWM_DEV_PIN1, |
| V4L2_EXT_VBE_PWM_DEV_PIN2, |
| V4L2_EXT_VBE_PWM_DEV_PIN3, |
| V4L2_EXT_VBE_PWM_DEV_PIN4, |
| V4L2_EXT_VBE_PWM_DEV_MAX, |
| V4L2_EXT_VBE_PWM_DEV_NONE = 0xFF, |
| }; |
| |
| struct v4l2_ext_vbe_pwm_adapt_freq_param { |
| unsigned int pwm_adapt_freq_enable; |
| unsigned int pwmfreq_48nHz; // PWM frequency 48xN Hz from DB table |
| unsigned int pwmfreq_50nHz; // PWM frequency 50xN Hz from DB table |
| unsigned int pwmfreq_60nHz; // PWM frequency 60xN Hz from DB table |
| }; |
| |
| struct v4l2_ext_vbe_pwm_param_data { |
| unsigned int pwm_enable; |
| unsigned int pwm_duty; |
| unsigned int pwm_frequency; // If pwm_adapt_freq_enable == TRUE, ignored |
| struct v4l2_ext_vbe_pwm_adapt_freq_param pwm_adapt_freq_param; |
| unsigned int pwm_lock; |
| unsigned int pwm_pos_start; |
| unsigned int pwm_scanning_enable; |
| unsigned int pwm_low_power_enable; // It has been used to set low power mode |
| // for M16P only until now, 170210. |
| }; |
| |
| enum v4l2_ext_vbe_pwm_pin_sel_mask { |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_MASK = |
| 1 << V4L2_EXT_VBE_PWM_DEV_PIN0, |
| V4L2_EXT_VBE_PWM_DEV_PIN_1_MASK = |
| 1 << V4L2_EXT_VBE_PWM_DEV_PIN1, |
| V4L2_EXT_VBE_PWM_DEV_PIN_2_MASK = |
| 1 << V4L2_EXT_VBE_PWM_DEV_PIN2, |
| V4L2_EXT_VBE_PWM_DEV_PIN_3_MASK = |
| 1 << V4L2_EXT_VBE_PWM_DEV_PIN3, |
| V4L2_EXT_VBE_PWM_DEV_PIN_4_MASK = |
| 1 << V4L2_EXT_VBE_PWM_DEV_PIN4, |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_1_MASK = |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_MASK | |
| V4L2_EXT_VBE_PWM_DEV_PIN_1_MASK, |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_2_MASK = |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_MASK | |
| V4L2_EXT_VBE_PWM_DEV_PIN_2_MASK, |
| V4L2_EXT_VBE_PWM_DEV_PIN_1_2_MASK = |
| V4L2_EXT_VBE_PWM_DEV_PIN_1_MASK | |
| V4L2_EXT_VBE_PWM_DEV_PIN_2_MASK, |
| /* If necessary, add case */ |
| V4L2_EXT_VBE_PWM_DEV_PIN_ALL_MASK = |
| V4L2_EXT_VBE_PWM_DEV_PIN_0_MASK | V4L2_EXT_VBE_PWM_DEV_PIN_1_MASK | |
| V4L2_EXT_VBE_PWM_DEV_PIN_2_MASK | V4L2_EXT_VBE_PWM_DEV_PIN_3_MASK | |
| V4L2_EXT_VBE_PWM_DEV_PIN_4_MASK, |
| V4L2_EXT_VBE_PWM_DEV_PIN_DEFAULT_MASK |
| }; |
| |
| struct v4l2_ext_vbe_pwm_param { |
| enum v4l2_ext_vbe_pwm_pin_sel pwmIndex; |
| union { |
| struct v4l2_ext_vbe_pwm_param_data *pst_pwm_param; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_vbe_pwm_duty { |
| enum v4l2_ext_vbe_pwm_pin_sel_mask pwmIndex; |
| unsigned int pwm_duty; |
| }; |
| |
| struct v4l2_ext_vbe_vcom_pat_draw { |
| union { |
| unsigned short *vcompattern; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| unsigned short nSize; |
| }; |
| |
| enum v4l2_ext_vbe_vcom_pat_ctrl { |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_OFF = 0,// Mandatory Implementation |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_ON, // Mandatory Implementation |
| // Optional Implementation, PGEN_VCOM1 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM1, |
| // Optional Implementation, PGEN_VCOM2 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM2, |
| // Optional Implementation, PGEN_VCOM2 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM3, |
| // Optional Implementation, PGEN_VCOM3 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM4, |
| // Optional Implementation, PGEN_VCOM4 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM5, |
| // Optional Implementation, PGEN_VCOM5 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM6, |
| // Optional Implementation, PGEN_VCOM6 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM7, |
| // Optional Implementation, PGEN_VCOM7 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_VCOM8, |
| // Optional Implementation, PGEN_VCOM8 and CTRL_ON, for available SoC |
| V4L2_EXT_VBE_VCOM_PAT_CTRL_MAX // Limit to control. |
| }; |
| |
| enum v4l2_ext_vbe_panel_orbit_mode { |
| V4L2_EXT_VBE_PANEL_ORBIT_JUSTSCAN_MODE = 0, |
| V4L2_EXT_VBE_PANEL_ORBIT_AUTO_MODE, |
| V4L2_EXT_VBE_PANEL_ORBIT_STORE_MODE, |
| V4L2_EXT_VBE_PANEL_OREBIT_MODE_MAX |
| }; |
| |
| struct v4l2_ext_vbe_panel_orbit_info { |
| unsigned int on_off; |
| enum v4l2_ext_vbe_panel_orbit_mode orbitmode; |
| }; |
| |
| enum v4l2_ext_vbe_panel_lsr_mode { |
| V4L2_EXT_VBE_PANEL_LSR_OFF = 0, |
| V4L2_EXT_VBE_PANEL_LSR_LIGHT, // vivid light |
| V4L2_EXT_VBE_PANEL_LSR_STRONG, // vivid strong |
| V4L2_EXT_VBE_PANEL_LSR_STRONG_OTHERS, |
| V4L2_EXT_VBE_PANEL_LSR_LIGHT_OTHERS, |
| V4L2_EXT_VBE_PANEL_LSR_MAX |
| }; |
| |
| struct v4l2_ext_vbe_panel_lsr_info { |
| union { |
| unsigned int *plsrtable;//unsigned int *pLsrTable; |
| unsigned int compat_data_lsrtable; |
| unsigned long long sizer_lsrtable; |
| }; |
| enum v4l2_ext_vbe_panel_lsr_mode lsrstep; |
| }; |
| |
| struct v4l2_ext_vbe_panel_gsr_info { |
| union { |
| unsigned int *pgsrtable;//unsigned int *pGsrTable; |
| unsigned int compat_data_gsrtable; |
| unsigned long long sizer_gsrtable; |
| }; |
| }; |
| |
| struct v4l2_ext_vbe_panel_osd_gain_info { |
| union { |
| unsigned int *levelval; |
| unsigned int compat_data_levelval; |
| unsigned long long sizer_levelval; |
| }; |
| unsigned int on_off; |
| unsigned int size; |
| }; |
| |
| struct v4l2_ext_vbe_panel_alpha_osd_info { |
| union { |
| unsigned int *alpha_able; |
| unsigned int compat_data_alphatable; |
| unsigned long long sizer_alphatable; |
| }; |
| unsigned int size; |
| }; |
| |
| struct v4l2_ext_vbe_panel_demura { |
| unsigned int enable; // 0: disable, 1: enable |
| union { |
| unsigned char *config; |
| unsigned int compat_data_ctrl; |
| unsigned long long sizer_ctrl; |
| }; |
| unsigned int configsize; |
| unsigned int configcrc; |
| union { |
| unsigned char *data; |
| unsigned int compat_data_demura; |
| unsigned long long sizer_demura; |
| }; |
| unsigned int datasize; |
| unsigned int datacrc; |
| }; |
| |
| struct v4l2_ext_vbe_panel_pclrc { |
| unsigned int enable; // 0: disable, 1: enable |
| unsigned int positionAfterLineOD; // Signal Path 0 : PCLRC -> LOD, 1 : LOD -> PCLRC |
| union { |
| unsigned char *data; //It should write to 8192 to 12543 in SRAM LUT. |
| unsigned int compat_data_pclrc; |
| unsigned long long sizer_pclrc; |
| }; |
| unsigned int datasize; |
| }; |
| |
| struct v4l2_ext_vbe_panel_second_gsr_info { |
| union { |
| unsigned int *p_gsr_table; |
| unsigned int compat_data_gsrtable; |
| unsigned long long sizer_gsrtable; |
| }; |
| }; |
| |
| struct v4l2_ext_vbe_panel_irr_info { |
| union { |
| unsigned int *pirrlum;//unsigned int *pIrrlum; |
| unsigned int compat_data_irr; |
| unsigned long long sizer_irr; |
| }; |
| }; |
| |
| /* HDMI */ |
| #define V4L2_EXT_HDMI_PACKET_DATA_LENGTH 28 |
| #define V4L2_EXT_HDMI_INFOFRAME_PACKET_LEN 28 |
| #define V4L2_EXT_HDMI_VENDOR_SPECIFIC_REGID_LEN 3 |
| #define V4L2_EXT_HDMI_VENDOR_SPECIFIC_PAYLOAD_LEN \ |
| (V4L2_EXT_HDMI_INFOFRAME_PACKET_LEN - \ |
| V4L2_EXT_HDMI_VENDOR_SPECIFIC_REGID_LEN) |
| |
| #define V4L2_EXT_HDMI_SPD_IF_VENDOR_LEN 8 |
| #define V4L2_EXT_HDMI_SPD_IF_DESC_LEN 16 |
| #define V4L2_EXT_HDMI_TMDS_CH_NUM 4 |
| |
| enum v4l2_ext_hdmi_input_port { |
| V4L2_EXT_HDMI_INPUT_PORT_NONE = 0, |
| V4L2_EXT_HDMI_INPUT_PORT_1, |
| V4L2_EXT_HDMI_INPUT_PORT_2, |
| V4L2_EXT_HDMI_INPUT_PORT_3, |
| V4L2_EXT_HDMI_INPUT_PORT_4, |
| V4L2_EXT_HDMI_INPUT_PORT_5, |
| V4L2_EXT_HDMI_INPUT_PORT_ALL, |
| }; |
| |
| enum v4l2_ext_hdmi_mode { |
| V4L2_EXT_HDMI_MODE_DVI = 0, |
| V4L2_EXT_HDMI_MODE_HDMI, |
| }; |
| |
| enum v4l2_ext_hdmi_color_depth { |
| V4L2_EXT_HDMI_COLOR_DEPTH_8BIT = 0, |
| V4L2_EXT_HDMI_COLOR_DEPTH_10BIT, |
| V4L2_EXT_HDMI_COLOR_DEPTH_12BIT, |
| V4L2_EXT_HDMI_COLOR_DEPTH_16BIT, |
| V4L2_EXT_HDMI_COLOR_DEPTH_RESERVED |
| }; |
| |
| struct v4l2_ext_hdmi_timing_info { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned short h_freq; |
| unsigned short v_vreq; |
| unsigned short h_total; |
| unsigned short v_total; |
| unsigned short h_porch; |
| unsigned short v_porch; |
| struct v4l2_ext_video_rect active; |
| unsigned short scan_type; |
| enum v4l2_ext_hdmi_mode dvi_hdmi; |
| enum v4l2_ext_hdmi_color_depth color_depth; |
| unsigned char allm_mode; |
| }; |
| |
| enum v4l2_ext_hdmi_override_eotf { |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_SDR_LUMINANCE_RANGE = 0, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_HDR_LUMINANCE_RANGE, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_SMPTE_ST_2084, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_HLG, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_RESERVED_4, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_RESERVED_5, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_RESERVED_6, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_RESERVED_7, |
| V4L2_EXT_HDMI_OVERRIDE_EOTF_AUTO, |
| }; |
| |
| struct v4l2_ext_hdmi_override_drm_info { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_override_eotf override_eotf; |
| }; |
| |
| enum v4l2_ext_hdmi_drm_eotf { |
| V4L2_EXT_HDMI_DRM_EOTF_SDR_LUMINANCE_RANGE = |
| 0, |
| V4L2_EXT_HDMI_DRM_EOTF_HDR_LUMINANCE_RANGE, |
| V4L2_EXT_HDMI_DRM_EOTF_SMPTE_ST_2084, |
| V4L2_EXT_HDMI_DRM_EOTF_HLG, |
| V4L2_EXT_HDMI_DRM_EOTF_RESERVED_4, |
| V4L2_EXT_HDMI_DRM_EOTF_RESERVED_5, |
| V4L2_EXT_HDMI_DRM_EOTF_RESERVED_6, |
| V4L2_EXT_HDMI_DRM_EOTF_RESERVED_7, |
| }; |
| |
| enum v4l2_ext_hdmi_drm_meta_desc { |
| V4L2_EXT_HDMI_DRM_META_DESC_TYPE1 = 0, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED1, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED2, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED3, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED4, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED5, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED6, |
| V4L2_EXT_HDMI_DRM_META_DESC_RESERVED7, |
| }; |
| |
| struct v4l2_ext_hdmi_drm_info { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char version; |
| unsigned char length; |
| enum v4l2_ext_hdmi_drm_eotf eotf_type; |
| enum v4l2_ext_hdmi_drm_meta_desc meta_desc; |
| unsigned short display_primaries_x0; |
| unsigned short display_primaries_y0; |
| unsigned short display_primaries_x1; |
| unsigned short display_primaries_y1; |
| unsigned short display_primaries_x2; |
| unsigned short display_primaries_y2; |
| unsigned short white_point_x; |
| unsigned short white_point_y; |
| unsigned short max_display_mastering_luminance; |
| unsigned short min_display_mastering_luminance; |
| unsigned short maximum_content_light_level; |
| unsigned short maximum_frame_average_light_level; |
| }; |
| |
| struct v4l2_ext_hdmi_hpd_low_duration_dc_on { |
| enum v4l2_ext_hdmi_input_port port; |
| int hpd_low_duration; |
| }; |
| |
| enum v4l2_ext_hdmi_vsi_video_format { |
| V4L2_EXT_HDMI_VSI_VIDEO_FORMAT_NO_ADDITIONAL_FORMAT = 0, |
| V4L2_EXT_HDMI_VSI_VIDEO_FORMAT_EXTENDED_RESOLUTION_FORMAT, |
| V4L2_EXT_HDMI_VSI_VIDEO_FORMAT_3D_FORMAT, |
| }; |
| |
| enum v4l2_ext_hdmi_vsi_3d_structure { |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_FRAME_PACKING = 0, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_FIELD_ALTERNATIVE, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_LINE_ALTERNATIVE, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_SIDEBYSIDE_FULL, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_L_DEPTH, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_L_DEPTH_GRAPHICS, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_TOP_BOTTOM, |
| /*reserved 7*/ |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_SIDEBYSIDE_HALF = 0x08, |
| V4L2_EXT_HDMI_VSI_3D_STRUCTURE_TOP_BOTTOM_DIRECTV = 0x09, |
| }; |
| |
| enum v4l2_ext_hdmi_vsi_3d_ext_data { |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_HOR_SUB_SAMPL_0 = 0, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_HOR_SUB_SAMPL_1, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_HOR_SUB_SAMPL_2, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_HOR_SUB_SAMPL_3, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_QUINCUNX_MATRIX_0, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_QUINCUNX_MATRIX_1, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_QUINCUNX_MATRIX_2, |
| V4L2_EXT_HDMI_VSI_3D_EXT_DATA_QUINCUNX_MATRIX_3, |
| }; |
| |
| enum v4l2_ext_hdmi_vsi_vic { |
| V4L2_EXT_HDMI_VSI_VIC_RESERVED = 0, |
| V4L2_EXT_HDMI_VSI_VIC_4K2K_30HZ, |
| V4L2_EXT_HDMI_VSI_VIC_4K2K_25HZ, |
| V4L2_EXT_HDMI_VSI_VIC_4K2K_24HZ, |
| V4L2_EXT_HDMI_VSI_VIC_4K2K_24HZ_SMPTE, |
| }; |
| |
| enum v4l2_ext_hdmi_packet_status { |
| V4L2_EXT_HDMI_PACKET_STATUS_NOT_RECEIVED = 0, |
| V4L2_EXT_HDMI_PACKET_STATUS_STOPPED, |
| V4L2_EXT_HDMI_PACKET_STATUS_UPDATED, |
| }; |
| |
| struct v4l2_ext_hdmi_in_packet { |
| unsigned char type; |
| unsigned char version; |
| unsigned char length; |
| unsigned char data_bytes[V4L2_EXT_HDMI_PACKET_DATA_LENGTH]; |
| }; |
| |
| struct v4l2_ext_hdmi_vsi_info { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_vsi_video_format video_format; |
| enum v4l2_ext_hdmi_vsi_3d_structure st_3d; |
| enum v4l2_ext_hdmi_vsi_3d_ext_data ext_data_3d; |
| enum v4l2_ext_hdmi_vsi_vic vic; |
| unsigned char regid[V4L2_EXT_HDMI_VENDOR_SPECIFIC_REGID_LEN]; |
| unsigned char payload[V4L2_EXT_HDMI_VENDOR_SPECIFIC_PAYLOAD_LEN]; |
| enum v4l2_ext_hdmi_packet_status packet_status; |
| struct v4l2_ext_hdmi_in_packet packet; |
| }; |
| |
| struct v4l2_ext_hdmi_spd_info { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char vendor_name[V4L2_EXT_HDMI_SPD_IF_VENDOR_LEN + 1]; |
| unsigned char product_description[V4L2_EXT_HDMI_SPD_IF_DESC_LEN + 1]; |
| unsigned char source_device_info; |
| enum v4l2_ext_hdmi_packet_status packet_status; |
| struct v4l2_ext_hdmi_in_packet packet; |
| }; |
| |
| enum v4l2_ext_hdmi_avi_csc { |
| V4L2_EXT_HDMI_AVI_CSC_RGB = 0, |
| V4L2_EXT_HDMI_AVI_CSC_YCBCR422, |
| V4L2_EXT_HDMI_AVI_CSC_YCBCR444, |
| V4L2_EXT_HDMI_AVI_CSC_YCBCR420, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_active_info { |
| V4L2_EXT_HDMI_AVI_ACTIVE_INFO_INVALID = 0, |
| V4L2_EXT_HDMI_AVI_ACTIVE_INFO_VALID, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_bar_info { |
| V4L2_EXT_HDMI_AVI_BAR_INFO_INVALID = 0, |
| V4L2_EXT_HDMI_AVI_BAR_INFO_VERTICALVALID, |
| V4L2_EXT_HDMI_AVI_BAR_INFO_HORIZVALID, |
| V4L2_EXT_HDMI_AVI_BAR_INFO_VERTHORIZVALID, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_scan_info { |
| V4L2_EXT_HDMI_AVI_SCAN_INFO_NODATA = 0, |
| V4L2_EXT_HDMI_AVI_SCAN_INFO_OVERSCANNED, |
| V4L2_EXT_HDMI_AVI_SCAN_INFO_UNDERSCANNED, |
| V4L2_EXT_HDMI_AVI_SCAN_INFO_FUTURE, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_colorimetry { |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_NODATA = 0, |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_SMPTE170, |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_ITU709, |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_FUTURE, |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_EXTENDED = |
| V4L2_EXT_HDMI_AVI_COLORIMETRY_FUTURE, |
| |
| }; |
| |
| enum v4l2_ext_hdmi_avi_picture_arc { |
| V4L2_EXT_HDMI_AVI_PICTURE_ARC_NODATA = 0, |
| V4L2_EXT_HDMI_AVI_PICTURE_ARC_4_3, |
| V4L2_EXT_HDMI_AVI_PICTURE_ARC_16_9, |
| V4L2_EXT_HDMI_AVI_PICTURE_ARC_FUTURE, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_active_format_arc { |
| V4L2_EXT_HDMI_AVI_ACTIVE_FORMAT_ARC_PICTURE = 8, |
| V4L2_EXT_HDMI_AVI_ACTIVE_FORMAT_ARC_4_3CENTER = 9, |
| V4L2_EXT_HDMI_AVI_ACTIVE_FORMAT_ARC_16_9CENTER = 10, |
| V4L2_EXT_HDMI_AVI_ACTIVE_FORMAT_ARC_14_9CENTER = 11, |
| V4L2_EXT_HDMI_AVI_ACTIVE_FORMAT_ARC_OTHER = 0, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_scaling { |
| V4L2_EXT_HDMI_AVI_SCALING_NOSCALING = 0, |
| V4L2_EXT_HDMI_AVI_SCALING_HSCALING, |
| V4L2_EXT_HDMI_AVI_SCALING_VSCALING, |
| V4L2_EXT_HDMI_AVI_SCALING_HVSCALING, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_it_content { |
| V4L2_EXT_HDMI_AVI_IT_CONTENT_NODATA = 0, |
| V4L2_EXT_HDMI_AVI_IT_CONTENT_ITCONTENT, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_ext_colorimetry { |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_XVYCC601 = 0, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_XVYCC709, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_SYCC601, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_ADOBEYCC601, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_ADOBERGB, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_BT2020_YCCBCCRC, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_BT2020_RGBORYCBCR, |
| V4L2_EXT_HDMI_AVI_EXT_COLORIMETRY_XVRESERED, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_rgb_quantization_range { |
| V4L2_EXT_HDMI_AVI_RGB_QUANTIZATION_RANGE_DEFAULT = 0, |
| V4L2_EXT_HDMI_AVI_RGB_QUANTIZATION_RANGE_LIMITEDRANGE, |
| V4L2_EXT_HDMI_AVI_RGB_QUANTIZATION_RANGE_FULLRANGE, |
| V4L2_EXT_HDMI_AVI_RGB_QUANTIZATION_RANGE_RESERVED, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_ycc_quantization_range { |
| V4L2_EXT_HDMI_AVI_YCC_QUANTIZATION_RANGE_LIMITEDRANGE = 0, |
| V4L2_EXT_HDMI_AVI_YCC_QUANTIZATION_RANGE_FULLRANGE, |
| V4L2_EXT_HDMI_AVI_YCC_QUANTIZATION_RANGE_RESERVED, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_content_type { |
| V4L2_EXT_HDMI_AVI_CONTENT_TYPE_GRAPHICS = 0, |
| V4L2_EXT_HDMI_AVI_CONTENT_TYPE_PHOTO, |
| V4L2_EXT_HDMI_AVI_CONTENT_TYPE_CINEMA, |
| V4L2_EXT_HDMI_AVI_CONTENT_TYPE_GAME, |
| }; |
| |
| enum v4l2_ext_hdmi_avi_additional_colorimetry { |
| V4L2_EXT_HDMI_AVI_ADDITIONAL_COLORIMETRY_DCI_P3_D65 = 0, |
| V4L2_EXT_HDMI_AVI_ADDITIONAL_COLORIMETRY_DCI_P3_THEATER, |
| V4L2_EXT_HDMI_AVI_ADDITIONAL_COLORIMETRY_RESERVED, |
| }; |
| |
| struct v4l2_ext_hdmi_avi_info { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_mode mode; |
| |
| enum v4l2_ext_hdmi_avi_csc pixel_encoding; |
| enum v4l2_ext_hdmi_avi_active_info active_info; |
| enum v4l2_ext_hdmi_avi_bar_info bar_info; |
| enum v4l2_ext_hdmi_avi_scan_info scan_info; |
| enum v4l2_ext_hdmi_avi_colorimetry colorimetry; |
| enum v4l2_ext_hdmi_avi_picture_arc picture_aspect_ratio; |
| enum v4l2_ext_hdmi_avi_active_format_arc active_format_aspect_ratio; |
| enum v4l2_ext_hdmi_avi_scaling scaling; |
| |
| unsigned char vic; |
| unsigned char pixel_repeat; |
| |
| enum v4l2_ext_hdmi_avi_it_content it_content; |
| enum v4l2_ext_hdmi_avi_ext_colorimetry extended_colorimetry; |
| enum v4l2_ext_hdmi_avi_rgb_quantization_range rgb_quantization_range; |
| enum v4l2_ext_hdmi_avi_ycc_quantization_range ycc_quantization_range; |
| enum v4l2_ext_hdmi_avi_content_type content_type; |
| enum v4l2_ext_hdmi_avi_additional_colorimetry additional_colorimetry; |
| |
| unsigned short top_bar_end_line_number; |
| unsigned short bottom_bar_start_line_number; |
| unsigned short left_bar_end_pixel_number; |
| unsigned short right_bar_end_pixel_number; |
| |
| enum v4l2_ext_hdmi_packet_status packet_status; |
| struct v4l2_ext_hdmi_in_packet packet; |
| }; |
| |
| struct v4l2_ext_hdmi_packet_info { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_mode mode; |
| struct v4l2_ext_hdmi_avi_info avi; |
| struct v4l2_ext_hdmi_spd_info spd; |
| struct v4l2_ext_hdmi_vsi_info vsi; |
| }; |
| |
| enum v4l2_ext_hdmi_dolby_hdr_type { |
| V4L2_EXT_HDMI_DOLBY_HDR_TYPE_SDR = 0, |
| V4L2_EXT_HDMI_DOLBY_HDR_TYPE_STANDARD_VSIF_1, |
| V4L2_EXT_HDMI_DOLBY_HDR_TYPE_STANDARD_VSIF_2, |
| V4L2_EXT_HDMI_DOLBY_HDR_TYPE_LOW_LATENCY, |
| }; |
| |
| struct v4l2_ext_hdmi_dolby_hdr { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_dolby_hdr_type type; |
| }; |
| |
| enum v4l2_ext_hdmi_edid_size { |
| V4L2_EXT_HDMI_EDID_SIZE_128 = 0, |
| V4L2_EXT_HDMI_EDID_SIZE_256, |
| V4L2_EXT_HDMI_EDID_SIZE_512, |
| }; |
| |
| struct v4l2_ext_hdmi_edid { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_edid_size size; |
| union { |
| unsigned char *pdata;//unsigned char *pData; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_hdmi_connection_state { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char state; |
| }; |
| |
| enum v4l2_ext_hdmi_hpd_state { |
| V4L2_EXT_HDMI_HPD_DISABLE = 0, |
| V4L2_EXT_HDMI_HPD_ENABLE, |
| V4L2_EXT_HDMI_HPD_RESTART, |
| }; |
| |
| struct v4l2_ext_hdmi_hpd { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_hpd_state hpd_state; |
| }; |
| |
| enum v4l2_ext_hdmi_hdcp_version { |
| V4L2_EXT_HDMI_HDCP_VERSION_14 = 0, |
| V4L2_EXT_HDMI_HDCP_VERSION_22, |
| V4L2_EXT_HDMI_HDCP_VERSION_RESERVED, |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp_key { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_hdcp_version version; |
| unsigned int key_size; |
| union { |
| unsigned char *p_data; |
| unsigned int compat_data; |
| unsigned long long sizer; |
| }; |
| }; |
| |
| struct v4l2_ext_hdmi_vrr_frequency { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned short frequency; |
| }; |
| |
| enum v4l2_ext_hdmi_emp_type { |
| V4L2_EXT_HDMI_EMP_TYPE_UNDEFINED = 0, |
| V4L2_EXT_HDMI_EMP_TYPE_VSEM, |
| V4L2_EXT_HDMI_EMP_TYPE_DYNAMICHDREM, |
| V4L2_EXT_HDMI_EMP_TYPE_VTEM, |
| V4L2_EXT_HDMI_EMP_TYPE_CVTEM |
| }; |
| |
| struct v4l2_ext_hdmi_emp_info { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_emp_type type; |
| unsigned short current_packet_index; |
| unsigned short total_packet_number; |
| unsigned char data[31]; |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp_repeater { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char repeater_mode; |
| unsigned char receiver_id[5]; |
| unsigned char repeater_hpd; |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp_repeater_topology { |
| enum v4l2_ext_hdmi_input_port port; // HDMI port number |
| unsigned char repeater_mode; // 0 : receiver, 1 : repeater |
| unsigned char count; // Number of devices |
| unsigned char depth; // Depth of connected device |
| unsigned char receiver_id[32][5]; // RX IO of connected device |
| unsigned char repeater_hpd; // HPD control |
| unsigned int msg_id; // Increase by 1 when it changes |
| //any value(init value =0, default set value = 1) |
| }; |
| |
| enum v4l2_ext_hdmi_hdcp_repeater_stream_manage_transmit { |
| STREAM_MANAGE_TRANSMIT_ALLOW, |
| STREAM_MANAGE_TRANSMIT_DENY, |
| STREAM_MANAGE_RESERVED, |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp_repeater_stream_manage { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_hdcp_repeater_stream_manage_transmit value; // 0 or 1 or reserved |
| }; |
| |
| // HDMI Capabilities Flags |
| // The HDMI device supports HDCP1.4 Key. So, need to write HDCP1.4 key to driver. |
| #define V4L2_EXT_HDMI_HDCP14 (0x1 << 0) // 0x0000000000000001 |
| // HDCP1.4 Key is OTP on Soc. So, No need to download HDCP1.4 Key to secure storage. |
| #define V4L2_EXT_HDMI_HDCP14_KEY_OTP (0x1 << 1) // 0x0000000000000002 |
| // The HDMI device supports HDCP2.3 key. So, need to write HDCP2.3 key to driver. |
| // HDCP2.2 key is include in HDCP2.3 key. |
| #define V4L2_EXT_HDMI_HDCP23 (0x1 << 2) // 0x0000000000000004 |
| // HDCP2.3(HDCP2.2) Key is OTP on Soc. So, |
| //No need to download HDCP2.3(HDCP2.2) Key to secure storage. |
| #define V4L2_EXT_HDMI_HDCP23_KEY_OTP (0x1 << 3) // 0x0000000000000008 |
| // The HDMI device supports HDMI1.4 Specification |
| #define V4L2_EXT_HDMI_HDMI14 (0x1 << 12) // 0x0000000000001000 |
| // The HDMI device supports HDMI2.0 Specification |
| #define V4L2_EXT_HDMI_HDMI20 (0x1 << 13) // 0x0000000000002000 |
| // The HDMI device supports HDMI2.1 Specification. |
| // Set this flag even if the device supports one feature in the HDMI2.1 specification. |
| #define V4L2_EXT_HDMI_HDMI21 (0x1 << 14) // 0x0000000000004000 |
| // The HDMI device supports TMDS 3.4Gbps per Channel |
| #define V4L2_EXT_HDMI_TMDS_3G (0x1 << 20) // 0x0000000000100000 |
| // The HDMI device supports TMDS 6.0Gbps per Channel |
| #define V4L2_EXT_HDMI_TMDS_6G (0x1 << 21) // 0x0000000000200000 |
| // The HDMI device supports FRL 3Gbps per Lane on 3 Lanes(0,1, and 2) |
| #define V4L2_EXT_HDMI_FRL_3L_3G (0x1 << 22) // 0x0000000000400000 |
| // The HDMI device supports FRL 6Gbps per Lane on 3 Lanes(0,1, and 2) |
| #define V4L2_EXT_HDMI_FRL_3L_6G (0x1 << 23) // 0x0000000000800000 |
| // The HDMI device supports FRL 6Gbps per Lane on 4 Lanes(0,1, 2, and 3) |
| #define V4L2_EXT_HDMI_FRL_4L_6G (0x1 << 24) // 0x0000000001000000 |
| // The HDMI device supports FRL 8Gbps per Lane on 4 Lanes(0,1, 2, and 3) |
| #define V4L2_EXT_HDMI_FRL_4L_8G (0x1 << 25) // 0x0000000002000000 |
| // The HDMI device supports FRL 10Gbps per Lane on 4 Lanes(0,1, 2, and 3) |
| #define V4L2_EXT_HDMI_FRL_4L_10G (0x1 << 26) // 0x0000000004000000 |
| // The HDMI device supports FRL 12Gbps per Lane on 4 Lanes(0,1, 2, and 3) |
| #define V4L2_EXT_HDMI_FRL_4L_12G (0x1 << 27) // 0x0000000008000000 |
| |
| // The HDMI device supports background timing detection. |
| // It means that driver can get HDMI signal information(timing, SPD, AVI, etc...) |
| // without watching HDMI port. |
| // If the HDMI device supports background timing detection, |
| // it also support fast switching between HDMI ports. |
| #define V4L2_EXT_HDMI_BACKGROUND_TIMING_DETECT (0x1 << 28) // 0x0000000010000000 |
| |
| // The HDMI device supports FVA |
| #define V4L2_EXT_HDMI_FVA (0x1 << 29) // 0x0000000020000000 |
| // The HDMI device supports VRR |
| #define V4L2_EXT_HDMI_VRR (0x1 << 30) // 0x0000000040000000 |
| // The HDMI device supports CinemaVRR |
| #define V4L2_EXT_HDMI_CINEMAVRR (0x1 << 31) // 0x0000000080000000 |
| |
| // The HDMI device supports Dolby vision |
| #define V4L2_EXT_HDMI_DOLBY_VISION (0x1 << 32) // 0x0000000100000000 |
| // The HDMI device supports Dolby vision low latency mode |
| #define V4L2_EXT_HDMI_DOLBY_VISION_LL (0x1 << 33) // 0x0000000200000000 |
| // The HDMI device supports Dolby vision on HDMI2.1 |
| #define V4L2_EXT_HDMI_DOLBY_VISION_HDMI21 (0x1 << 34) // 0x0000000400000000 |
| // The HDMI device supports 512bytes EDID |
| #define V4L2_EXT_HDMI_512BYTE_EDID (0x1 << 35) // 0x0000000800000000 |
| // The HDMI device supports EMPACKET |
| #define V4L2_EXT_HDMI_EMPACKET (0x1 << 36) // 0x0000001000000000 |
| // The HDMI device supports HDCP Repeater |
| #define V4L2_EXT_HDMI_HDCP_REPEATER (0x1 << 37) // 0x0000002000000000 |
| // The HDMI device supports DSC |
| #define V4L2_EXT_HDMI_DSC (0x1 << 38) // 0x0000004000000000 |
| |
| struct v4l2_ext_hdmi_capability { |
| unsigned char chip[16]; // chip name. for example "e60" |
| unsigned int version; // linuxtv header version |
| unsigned long long capabilities; // HDMI Capabilities Flags |
| unsigned long long reserved[3]; |
| }; |
| |
| struct v4l2_ext_hdmi_querycap { |
| enum v4l2_ext_hdmi_input_port port; |
| struct v4l2_ext_hdmi_capability hdmi_capability; |
| }; |
| |
| enum v4l2_ext_hdmi_sleep_mode { |
| V4L2_EXT_HDMI_SLEEP_MODE = 0, |
| V4L2_EXT_HDMI_WAKEUP_MODE, |
| }; |
| |
| struct v4l2_ext_hdmi_sleep { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_sleep_mode mode; |
| }; |
| |
| /* HDMI DIAGNOSTICS */ |
| enum v4l2_ext_hdmi_link_type { |
| V4L2_EXT_HDMI_LINK_TYPE_TMDS = 0, |
| V4L2_EXT_HDMI_LINK_TYPE_FRL, |
| }; |
| |
| enum v4l2_ext_hdmi_link_lane_number { |
| V4L2_EXT_HDMI_LINK_LANE_NUMBER_3 = 3, |
| V4L2_EXT_HDMI_LINK_LANE_NUMBER_4 = 4, |
| }; |
| |
| enum v4l2_ext_hdmi_link_rate { |
| V4L2_EXT_HDMI_LINK_RATE_3G = 3, |
| V4L2_EXT_HDMI_LINK_RATE_6G = 6, |
| V4L2_EXT_HDMI_LINK_RATE_8G = 8, |
| V4L2_EXT_HDMI_LINK_RATE_10G = 10, |
| V4L2_EXT_HDMI_LINK_RATE_12G = 12, |
| |
| }; |
| |
| struct v4l2_ext_hdmi_phy_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char lock_status; |
| unsigned int tmds_clk_khz; |
| |
| enum v4l2_ext_hdmi_link_type link_type; |
| enum v4l2_ext_hdmi_link_lane_number link_lane; |
| enum v4l2_ext_hdmi_link_rate link_rate; |
| |
| unsigned int ctle_eq_min_range[V4L2_EXT_HDMI_TMDS_CH_NUM]; |
| unsigned int ctle_eq_max_range[V4L2_EXT_HDMI_TMDS_CH_NUM]; |
| unsigned int ctle_eq_result[V4L2_EXT_HDMI_TMDS_CH_NUM]; |
| unsigned int error[V4L2_EXT_HDMI_TMDS_CH_NUM]; |
| }; |
| |
| enum v4l2_ext_hdmi_audio_format { |
| V4L2_EXT_HDMI_AUDIO_FORMAT_UNKNOWN = 0x00, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_PCM = 0x01, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_AC3 = 0x10, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_EAC3 = 0x11, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_EAC3_ATMOS = 0x12, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_MAT = 0x15, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_MAT_ATMOS = 0x16, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_TRUEHD = 0x17, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_TRUEHD_ATMOS = 0x18, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_AAC = 0x19, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_MPEG = 0x20, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_DTS = 0x30, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_DTS_HD_MA = 0x31, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_DTS_EXPRESS = 0x32, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_DTS_CD = 0x33, |
| V4L2_EXT_HDMI_AUDIO_FORMAT_NOAUDIO = 0x41, |
| }; |
| |
| struct v4l2_ext_hdmi_link_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char hpd; |
| unsigned char hdmi_5v; |
| unsigned char rx_sense; |
| unsigned int frame_rate_x100_hz; |
| enum v4l2_ext_hdmi_mode dvi_hdmi_mode; |
| |
| unsigned short video_width; |
| unsigned short video_height; |
| enum v4l2_ext_hdmi_avi_csc color_space; |
| unsigned char color_depth; |
| enum v4l2_ext_hdmi_avi_colorimetry colorimetry; |
| enum v4l2_ext_hdmi_avi_ext_colorimetry ext_colorimetry; |
| enum v4l2_ext_hdmi_avi_additional_colorimetry additional_colorimetry; |
| enum v4l2_ext_hdr_mode hdr_type; |
| |
| enum v4l2_ext_hdmi_audio_format audio_format; |
| unsigned int audio_sampling_freq; |
| unsigned char audio_channel_number; |
| }; |
| |
| struct v4l2_ext_hdmi_video_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned short video_width_real; |
| unsigned short video_htotal_real; |
| unsigned short video_height_real; |
| unsigned short video_vtotal_real; |
| unsigned int pixel_clock_khz; |
| unsigned int current_vrr_refresh_rate; |
| }; |
| |
| struct v4l2_ext_hdmi_audio_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned int pcm_N; |
| unsigned int pcm_CTS; |
| unsigned char LayoutBitValue; |
| unsigned char ChannelStatusBits; |
| }; |
| |
| enum v4l2_ext_hdmi_hdcp_auth_status { |
| V4L2_EXT_HDMI_HDCP_AUTH_STATUS_NO_TX_CONNECTED = 0, |
| V4L2_EXT_HDMI_HDCP_AUTH_STATUS_UNAUTHENTICATED = 1, |
| V4L2_EXT_HDMI_HDCP_AUTH_STATUS_IN_PROGRESS = 2, |
| V4L2_EXT_HDMI_HDCP_AUTH_STATUS_AUTHENTICATED = 3, |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp14_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char An[8]; |
| unsigned char Aksv[5]; |
| unsigned char Bksv[5]; |
| unsigned char Ri[2]; |
| unsigned char Bcaps; |
| unsigned char Bstatus[2]; |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp22_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned short ake_init_count_since_5v; |
| unsigned short reauth_req_count_since_5v; |
| }; |
| |
| struct v4l2_ext_hdmi_hdcp_status { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_hdcp_version hdcp_version; |
| enum v4l2_ext_hdmi_hdcp_auth_status auth_status; |
| unsigned char encEn; |
| struct v4l2_ext_hdmi_hdcp14_status hdcp14_status; |
| struct v4l2_ext_hdmi_hdcp22_status hdcp22_status; |
| }; |
| |
| struct v4l2_ext_hdmi_scdc_status { |
| enum v4l2_ext_hdmi_input_port port; |
| unsigned char source_version; |
| unsigned char sink_version; |
| |
| unsigned char rsed_update; |
| unsigned char flt_update; |
| unsigned char frl_start; |
| unsigned char source_test_update; |
| unsigned char rr_test; |
| unsigned char ced_update; |
| unsigned char status_update; |
| |
| unsigned char tmds_bit_clock_ratio; |
| unsigned char scrambling_enable; |
| unsigned char tmds_scrambler_status; |
| |
| unsigned char flt_no_retrain; |
| unsigned char rr_enable; |
| unsigned char ffe_levels; |
| unsigned char frl_rate; |
| |
| unsigned char dsc_decode_fail; |
| unsigned char flt_ready; |
| unsigned char clk_detect; |
| unsigned char ch0_locked; |
| unsigned char ch1_locked; |
| unsigned char ch2_locked; |
| unsigned char ch3_locked; |
| |
| unsigned char lane0_ltp_request; |
| unsigned char lane1_ltp_request; |
| unsigned char lane2_ltp_request; |
| unsigned char lane3_ltp_request; |
| |
| unsigned char ch0_ced_valid; |
| unsigned char ch1_ced_valid; |
| unsigned char ch2_ced_valid; |
| unsigned char ch3_ced_valid; |
| unsigned int ch0_ced; |
| unsigned int ch1_ced; |
| unsigned int ch2_ced; |
| unsigned int ch3_ced; |
| unsigned char rs_correction_valid; |
| unsigned int rs_correcton_count; |
| }; |
| |
| struct v4l2_ext_hdmi_diagnostics_status { |
| enum v4l2_ext_hdmi_input_port port; |
| struct v4l2_ext_hdmi_link_status link_status; |
| struct v4l2_ext_hdmi_phy_status phy_status; |
| struct v4l2_ext_hdmi_video_status video_status; |
| struct v4l2_ext_hdmi_audio_status audio_status; |
| struct v4l2_ext_hdmi_hdcp_status hdcp_status; |
| struct v4l2_ext_hdmi_scdc_status scdc_status; |
| }; |
| |
| enum v4l2_ext_hdmi_error_type { |
| V4L2_EXT_HDMI_ERROR_TYPE_NONE = 0x0000, |
| V4L2_EXT_HDMI_ERROR_TYPE_GCP_ERROR = 0x0001, |
| V4L2_EXT_HDMI_ERROR_TYPE_HDCP22_REAUTH = 0x0002, |
| V4L2_EXT_HDMI_ERROR_TYPE_TMDS_ERROR = 0x0004, |
| V4L2_EXT_HDMI_ERROR_TYPE_PHY_LOW_RANGE = 0x0008, |
| V4L2_EXT_HDMI_ERROR_TYPE_PHY_ABNORMAL = 0x0010, |
| V4L2_EXT_HDMI_ERROR_TYPE_CED_ERROR = 0x0020, |
| V4L2_EXT_HDMI_ERROR_TYPE_AUDIO_BUFFER = 0x0040, |
| V4L2_EXT_HDMI_ERROR_TYPE_UNSTABLE_SYNC = 0x0080, |
| V4L2_EXT_HDMI_ERROR_TYPE_BCH = 0x0100, |
| V4L2_EXT_HDMI_ERROR_TYPE_FLT = 0x0200, |
| V4L2_EXT_HDMI_ERROR_TYPE_FAILED = 0xFFFFFFFE, |
| }; |
| |
| struct v4l2_ext_hdmi_error_status { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_error_type error; |
| unsigned int param1; |
| unsigned int param2; |
| }; |
| |
| enum v4l2_ext_hdmi_expert_setting_type { |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_HPD_LOW_DURATION = 0, |
| |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_MANUAL_EQ_MODE, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_MANUAL_EQ_CH0, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_MANUAL_EQ_CH1, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_MANUAL_EQ_CH2, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_MANUAL_EQ_CH3, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_TMDS_EQ_PERIOD, |
| |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_VIDEO_STABLE_COUNT, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_AUDIO_STABLE_COUNT, |
| |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_DISABLE_HDCP22, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_REAUTH_HDCP22, |
| |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_ON_TO_RXSENSE_TIME, |
| V4L2_EXT_HDMI_EXPERT_SETTING_TYPE_RXSENSE_TO_HPD_TIME |
| }; |
| |
| struct v4l2_ext_hdmi_expert_setting { |
| enum v4l2_ext_hdmi_input_port port; |
| enum v4l2_ext_hdmi_expert_setting_type type; |
| unsigned int param1; |
| unsigned int param2; |
| unsigned int param3; |
| }; |
| |
| /* ADC */ |
| enum v4l2_ext_adc_input_src { |
| V4L2_EXT_ADC_INPUT_SRC_NONE = 0, |
| V4L2_EXT_ADC_INPUT_SRC_COMP, |
| V4L2_EXT_ADC_INPUT_SRC_RGB, |
| V4L2_EXT_ADC_INPUT_SRC_COMP_RESERVED2, |
| }; |
| |
| struct v4l2_ext_adc_timing_info { |
| unsigned short h_freq; |
| unsigned short v_freq; |
| unsigned short h_total; |
| unsigned short v_total; |
| unsigned short h_porch; |
| unsigned short v_porch; |
| struct v4l2_ext_video_rect active; |
| unsigned short scan_type; |
| unsigned short phase; |
| }; |
| |
| struct v4l2_ext_adc_calibration_data { |
| unsigned short r_gain; |
| unsigned short g_gain; |
| unsigned short b_gain; |
| unsigned short r_offset; |
| unsigned short g_offset; |
| unsigned short b_offset; |
| }; |
| |
| /* AVD */ |
| enum v4l2_ext_avd_input_src { |
| V4L2_EXT_AVD_INPUT_SRC_NONE = 0, |
| V4L2_EXT_AVD_INPUT_SRC_ATV, |
| V4L2_EXT_AVD_INPUT_SRC_AV, |
| V4L2_EXT_AVD_INPUT_SRC_AVD_RESERVED1, |
| V4L2_EXT_AVD_INPUT_SRC_AVD_RESERVED2, |
| }; |
| |
| struct v4l2_ext_avd_timing_info { |
| unsigned short h_freq; |
| unsigned short v_freq; |
| unsigned short h_porch; |
| unsigned short v_porch; |
| struct v4l2_ext_video_rect active; |
| unsigned char vd_lock; |
| unsigned char h_lock; |
| unsigned char v_lock; |
| }; |
| |
| /* VBI */ |
| /* CGMS copy protection enum */ |
| enum v4l2_ext_vbi_cgms { |
| V4L2_EXT_VBI_CGMS_PERMIT = 0, |
| V4L2_EXT_VBI_CGMS_ONCE, |
| V4L2_EXT_VBI_CGMS_RESERVED, |
| V4L2_EXT_VBI_CGMS_NO_PERMIT, |
| }; |
| |
| /* APS copy protection enum */ |
| enum v4l2_ext_vbi_aps { |
| V4L2_EXT_VBI_APS_OFF = 0, |
| V4L2_EXT_VBI_APS_ON_BURST_OFF, |
| V4L2_EXT_VBI_APS_ON_BURST_2, |
| V4L2_EXT_VBI_APS_ON_BURST_4, |
| }; |
| |
| /* MACROVISION copy protection enum */ |
| enum v4l2_ext_vbi_macrovision { |
| V4L2_EXT_VBI_MACROVISION_PSP_OFF = 0, |
| V4L2_EXT_VBI_MACROVISION_PSP_ON_BURST_OFF, |
| V4L2_EXT_VBI_MACROVISION_PSP_ON_BURST_2, |
| V4L2_EXT_VBI_MACROVISION_PSP_ON_BURST_4, |
| }; |
| |
| struct v4l2_ext_vbi_copy_protection { |
| enum v4l2_ext_vbi_cgms cgms_cp_info; |
| enum v4l2_ext_vbi_aps aps_cp_info; |
| enum v4l2_ext_vbi_macrovision macrovision_cp_info; |
| }; |
| |
| /* VDEC */ |
| |
| /* VDEC class control values V4L2_CID_EXT_VDEC_DECODING_SPEED*/ |
| |
| #define V4L2_EXT_VDEC_DECODING_SPEED_PAUSE 0 |
| |
| #define V4L2_EXT_VDEC_DECODING_SPEED_SLOW 500 |
| |
| #define V4L2_EXT_VDEC_DECODING_SPEED_NORMAL 1000 |
| |
| #define V4L2_EXT_VDEC_DECODING_SPEED_2x 2000 |
| |
| /* VDEC class control values V4L2_CID_EXT_VDEC_DECODE_MODE */ |
| |
| #define V4L2_EXT_VDEC_DECODE_I_FRAME (1) |
| |
| #define V4L2_EXT_VDEC_DECODE_IP_FRAME (2) |
| |
| #define V4L2_EXT_VDEC_DECODE_ALL_FRAME (3) |
| |
| /* VDEC State for v4l2_ext_decoder_status vdecState*/ |
| |
| #define V4L2_EXT_VDEC_STATE_UNINIT (0) |
| |
| #define V4L2_EXT_VDEC_STATE_INIT (1) |
| |
| #define V4L2_EXT_VDEC_STATE_PLAYING (2) |
| |
| #define V4L2_EXT_VDEC_STATE_STOPPED (3) |
| |
| #define V4L2_EXT_VDEC_STATE_FREEZED (4) |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDEC_VIDEO_INFO */ |
| |
| enum v4l2_ext_vdec_video_info { |
| VDEC_V_SIZE = 0, |
| VDEC_H_SIZE, |
| VDEC_VIDEO_FORMAT, |
| VDEC_FRAME_RATE, |
| VDEC_ASPECT_RATIO, |
| VDEC_BIT_RATE, |
| VDEC_PROGRESSIVE_SEQUENCE |
| }; |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDEC_DECODER_INFO */ |
| |
| struct v4l2_ext_decoder_status { |
| __u8 vdec_state; |
| __u8 codec_type; |
| __u8 av_libsync; |
| __u8 still_picture; |
| __u8 drip_decoding; |
| __u32 es_data_size; |
| __u32 decoded_pic_num; |
| __u32 mb_dec_error_count; |
| __u32 pts_matched; |
| }; |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDEC_STREAM_INFO */ |
| |
| struct v4l2_ext_stream_info { |
| __u32 v_size; |
| __u32 h_size; |
| __u32 video_format; |
| __u32 frame_rate; |
| __u32 aspect_ratio; |
| __u32 bit_rate; |
| __u32 sequence_header_scan_type; |
| __u32 frame_scan_type; |
| __u32 picture_type; |
| __u32 temporal_reference; |
| __u32 picture_struct; |
| __u32 top_field_first; |
| __u32 repeat_field_first; |
| }; |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDEC_PICINFO_EVENT_DATA */ |
| |
| struct v4l2_ext_picinfo_msg { |
| __u8 version; // picture info msg version |
| __u8 channel; // VDEC driver channel info |
| |
| __u16 frame_rate; // Frame rate numerator |
| __u16 aspect_ratio; // Aspect ratio |
| __u16 h_size; // Luminance resolution h size |
| __u16 v_size; // Luminance resolution v size |
| __u16 bitrate; // Input Bitrate |
| __u8 afd; // Active_format |
| __u16 progressive_seq; // GOP Scan type(Progressive/interlace) |
| __u16 progressive_frame; // Frame Scan type(Progressive/interlace) |
| __u16 active_x; // Active x stard point |
| __u16 active_y; // Active y stard point |
| __u16 active_w; // Active width |
| __u16 active_h; // Active height |
| __u16 display_h_size; // Display H size |
| __u16 display_v_size; // Display V size |
| __u8 aspect_ratio_idc; // VUI info, aspect_ratio_idc |
| __u32 sar_width; // VUI info, sar_width |
| __u32 sar_height; // VUI info, sar_height |
| |
| __u8 three_d_info; // 3D info |
| |
| __u32 colour_primaries; // VUI info, colour_primaries |
| __u32 transfer_characteristics; // VUI info, transfer_characteristics |
| __u32 matrix_coeffs; // VUI info, matrix_coefficients |
| __u32 display_primaries_x0; // SEI info, display_primaries_x0 |
| __u32 display_primaries_y0; // SEI info, display_primaries_y0 |
| __u32 display_primaries_x1; // SEI info, display_primaries_x1 |
| __u32 display_primaries_y1; // SEI info, display_primaries_y1 |
| __u32 display_primaries_x2; // SEI info, display_primaries_x2 |
| __u32 display_primaries_y2; // SEI info, display_primaries_y2 |
| __u32 white_point_x; // SEI info, white_point_x |
| __u32 white_point_y; // SEI info, white_point_y |
| __u32 max_display_mastering_luminance; // SEI info, max_display_mastering_luminance |
| __u32 min_display_mastering_luminance; // SEI info, min_display_mastering_luminance |
| __u8 overscan_appropriate; // VUI info, overscan_appropriate_flag |
| __u32 video_full_range_flag; // VUI info, video_full_range_flag |
| __u32 hdr_transfer_characteristic_idc; // SEI info, preferred_transfer_characteristics |
| }; |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDEC_PICINFO_EVENT_DATA_EXT */ |
| |
| struct v4l2_ext_picinfo_msg_ext { |
| __u8 channel; |
| __u16 aspect_ratio; |
| __u16 h_size; |
| __u16 v_size; |
| __u16 bitrate; |
| __u8 afd; |
| __u16 progressive_seq; |
| __u16 progressive_frame; |
| __u16 active_x; |
| __u16 active_y; |
| __u16 active_w; |
| __u16 active_h; |
| __u16 display_h_size; |
| __u16 display_v_size; |
| __u8 aspect_ratio_idc; |
| __u32 sar_width; |
| __u32 sar_height; |
| |
| __u8 three_d_info; |
| |
| __u32 colour_primaries; |
| __u32 transfer_characteristics; |
| __u32 matrix_coeffs; |
| __u32 display_primaries_x0; |
| __u32 display_primaries_y0; |
| __u32 display_primaries_x1; |
| __u32 display_primaries_y1; |
| __u32 display_primaries_x2; |
| __u32 display_primaries_y2; |
| __u32 white_point_x; |
| __u32 white_point_y; |
| __u32 max_display_mastering_luminance; |
| __u32 min_display_mastering_luminance; |
| __u8 overscan_appropriate; |
| __u32 video_full_range_flag; |
| __u32 hdr_transfer_characteristic_idc; |
| |
| struct v4l2_fract frame_rate; |
| }; |
| |
| /* VDEC class control values for V4L2_CID_EXT_VDO_VDEC_CONNECTING */ |
| |
| struct v4l2_ext_vdec_vdo_connection { |
| __u32 vdo_port; |
| __u32 vdec_port; |
| }; |
| |
| /* VDEC class control values for v4l2_ext_decoded_picture_buffer */ |
| |
| struct v4l2_ext_decoded_picture_buffer { |
| __u32 command; |
| __u64 target_pts; |
| __u32 bFrozen; |
| __u32 hashValue; |
| }; |
| |
| /* Capture */ |
| enum v4l2_ext_capture_video_frame_buffer_pixel_format { |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV420_PLANAR = 0, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV420_SEMI_PLANAR, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV420_INTERLEAVED, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV422_PLANAR, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV422_SEMI_PLANAR, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV422_INTERLEAVED, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV444_PLANAR, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV444_SEMI_PLANAR, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_YUV444_INTERLEAVED, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_RGB, |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PIXEL_FORMAT_ARGB |
| }; |
| |
| enum v4l2_ext_capture_video_frame_buffer_plane_num { |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PLANE_INTERLEAVED = |
| 1, // INTERLEAVED has one plane. |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PLANE_SEMI_PLANAR, // SEMI PLANAR has two plane. |
| V4L2_EXT_CAPTURE_VIDEO_FRAME_BUFFER_PLANE_PLANAR // PLANAR has three plane. |
| }; |
| |
| struct v4l2_ext_capture_capability_info { |
| unsigned int flags; |
| unsigned int scale_up_limit_w; |
| unsigned int scale_up_limit_h; |
| unsigned int scale_down_limit_w; |
| unsigned int scale_down_limit_h; |
| unsigned int num_video_frame_buffer; |
| struct v4l2_ext_video_rect max_res; |
| enum v4l2_ext_capture_video_frame_buffer_plane_num num_plane; |
| enum v4l2_ext_capture_video_frame_buffer_pixel_format pixel_format; |
| }; |
| |
| /* Flags for the 'flags' field in struct v4l2_ext_capture_capability_info. */ |
| #define V4L2_EXT_CAPTURE_CAP_INPUT_VIDEO_DEINTERLACE 0x0001 |
| #define V4L2_EXT_CAPTURE_CAP_DISPLAY_VIDEO_DEINTERLACE 0x0002 |
| #define V4L2_EXT_CAPTURE_CAP_SCALE_UP 0x0004 |
| #define V4L2_EXT_CAPTURE_CAP_SCALE_DOWN 0x0008 |
| #define V4L2_EXT_CAPTURE_CAP_DIVIDE_FRAMERATE 0x0010 |
| #define V4L2_EXT_CAPTURE_CAP_VIDEOTOVIDEO 0x0020 |
| |
| struct v4l2_ext_capture_plane_info { |
| unsigned int stride; |
| struct v4l2_ext_video_rect plane_region; |
| struct v4l2_ext_video_rect active_region; |
| }; |
| |
| enum v4l2_ext_capture_video_scan_type { |
| V4L2_EXT_CAPTURE_VIDEO_INTERLACED = 0, |
| V4L2_EXT_CAPTURE_VIDEO_PROGRESSIVE |
| }; |
| |
| struct v4l2_ext_capture_video_win_info { |
| enum v4l2_ext_capture_video_scan_type type; |
| struct v4l2_ext_video_rect in; |
| struct v4l2_ext_video_rect out; |
| struct v4l2_ext_video_rect panel; |
| }; |
| |
| //V4L2_EXT_CAPTURE_SCALER_INPUT = 0, |
| //AML:TVIN_PORT_VIU1_WB0_VD1 |
| //V4L2_EXT_CAPTURE_SCALER_OUTPUT, |
| //AML:no match point,force to TVIN_PORT_VIU1_WB0_VD1 |
| //V4L2_EXT_CAPTURE_DISPLAY_OUTPUT, |
| //AML:TVIN_PORT_VIU1_WB0_VPP |
| //V4L2_EXT_CAPTURE_BLENDED_OUTPUT, |
| //AML:TVIN_PORT_VIU1_WB0_OSD1or2 |
| //V4L2_EXT_CAPTURE_OSD_OUTPUT |
| enum v4l2_ext_capture_location { |
| V4L2_EXT_CAPTURE_SCALER_INPUT = 0, // for VTV - before de-interlace |
| V4L2_EXT_CAPTURE_SCALER_OUTPUT, |
| V4L2_EXT_CAPTURE_DISPLAY_OUTPUT, |
| V4L2_EXT_CAPTURE_BLENDED_OUTPUT, |
| V4L2_EXT_CAPTURE_OSD_OUTPUT |
| }; |
| |
| enum v4l2_ext_capture_buf_location { |
| V4L2_EXT_CAPTURE_INPUT_BUF = 0, |
| V4L2_EXT_CAPTURE_OUTPUT_BUF |
| }; |
| |
| struct v4l2_ext_capture_plane_prop { |
| enum v4l2_ext_capture_location l; |
| struct v4l2_ext_video_rect plane;/* reserved */ |
| int buf_count;/* reserved */ |
| }; |
| |
| struct v4l2_ext_capture_freeze_mode { |
| int plane_index; |
| unsigned char val; |
| }; |
| |
| struct v4l2_ext_capture_physical_memory_info { |
| int buf_index; |
| union { |
| unsigned int *y; |
| unsigned int compat_y_data; |
| unsigned long long y_sizer; |
| }; |
| |
| union { |
| unsigned int *c; |
| unsigned int compat_c_data; |
| unsigned long long c_sizer; |
| }; |
| enum v4l2_ext_capture_buf_location buf_location; |
| }; |
| |
| /*eARC*/ |
| /* Number of eARC capability bytes*/ |
| #define V4L2_EXT_EARC_CAPABILITY_BYTES 256 |
| |
| /*eARC ERX_LATENCY_REQ Type*/ |
| #define V4L2_EXT_EARC_ERX_LATENCY_REQ_MINIMIZE \ |
| 0 // 0: request to minimize eARC RX latency |
| #define V4L2_EXT_EARC_ERX_LATENCY_REQ_NON_SYNC \ |
| 254 // 254: No synchronization required |
| #define V4L2_EXT_EARC_ERX_LATENCY_REQ_UNKNOWN \ |
| 255 // 255: unknown eARC TX latency |
| |
| enum v4l2_ext_earc_output_port { |
| V4L2_EXT_EARC_OUTPUT_PORT_NONE = 0, |
| V4L2_EXT_EARC_OUTPUT_PORT_1, |
| V4L2_EXT_EARC_OUTPUT_PORT_2, |
| V4L2_EXT_EARC_OUTPUT_PORT_3, |
| V4L2_EXT_EARC_OUTPUT_PORT_4, |
| V4L2_EXT_EARC_OUTPUT_PORT_ALL, |
| }; |
| |
| enum v4l2_ext_earc_enable { |
| V4L2_EXT_EARC_DISABLE = 0, |
| V4L2_EXT_EARC_ENABLE = 1, |
| }; |
| |
| struct v4l2_ext_earc { |
| enum v4l2_ext_earc_output_port port; |
| enum v4l2_ext_earc_enable earc_enable_state; |
| }; |
| |
| enum v4l2_ext_earc_status { |
| V4L2_EXT_EARC_IDLE1 = 0, |
| V4L2_EXT_EARC_IDLE2 = 1, |
| V4L2_EXT_EARC_DISC1 = 2, |
| V4L2_EXT_EARC_DISC2 = 3, |
| V4L2_EXT_EARC_EARC = 4, |
| }; |
| |
| struct v4l2_ext_earc_connection_info { |
| enum v4l2_ext_earc_output_port port; |
| enum v4l2_ext_earc_status status; |
| unsigned char capability[V4L2_EXT_EARC_CAPABILITY_BYTES]; // Short Audio |
| // Description Max |
| // 256 byte |
| unsigned char erx_latency_req; // 0~255 |
| unsigned char erx_latency; // 0~255 |
| }; |
| #endif |