diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2013-02-11 17:29:55 +0000 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.org> | 2013-02-13 18:55:29 +0000 |
commit | 222b794ae146b4e0d61958c55a518396e293e6d7 (patch) | |
tree | 744f1fc5d63e8669de1018dc7c42c4e863ceae85 /edid/inc | |
download | device_samsung_omap4-common-222b794ae146b4e0d61958c55a518396e293e6d7.zip device_samsung_omap4-common-222b794ae146b4e0d61958c55a518396e293e6d7.tar.gz device_samsung_omap4-common-222b794ae146b4e0d61958c55a518396e293e6d7.tar.bz2 |
initial commit
sources from http://omapzoom.org
Diffstat (limited to 'edid/inc')
-rw-r--r-- | edid/inc/edid_parser.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/edid/inc/edid_parser.h b/edid/inc/edid_parser.h new file mode 100644 index 0000000..9dba5f4 --- /dev/null +++ b/edid/inc/edid_parser.h @@ -0,0 +1,113 @@ +/* + * Copyright (C) Texas Instruments - http://www.ti.com/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _EDID_PARSER_ +#define _EDID_PARSER_ + +#define EDID_SIZE 256 +#define MAX_VIC_CODES_PER_3D_FORMAT 16 + +struct edid_t; + +enum datablock_id { + DATABLOCK_AUDIO = 1, + DATABLOCK_VIDEO = 2, + DATABLOCK_VENDOR = 3, + DATABLOCK_SPEAKERS = 4, +}; + +enum hdmi_3d_format { + HDMI_FRAME_PACKING = 0, + HDMI_FIELD_ALTERNATIVE = 1, + HDMI_LINE_ALTERNATIVE = 2, + HDMI_SIDE_BY_SIDE_FULL = 3, + HDMI_L_DEPTH = 4, + HDMI_L_DEPTH_GFX_GFX_DEPTH = 5, + HDMI_TOPBOTTOM = 6, + HDMI_SIDE_BY_SIDE_HALF = 8, +}; + +enum hdmi_3d_format_bits { + HDMI_FRAME_PACKING_BIT = 1 << HDMI_FRAME_PACKING, + HDMI_FIELD_ALTERNATIVE_BIT = 1 << HDMI_FIELD_ALTERNATIVE, + HDMI_LINE_ALTERNATIVE_BIT = 1 << HDMI_LINE_ALTERNATIVE, + HDMI_SIDE_BY_SIDE_FULL_BIT = 1 << HDMI_SIDE_BY_SIDE_FULL, + HDMI_L_DEPTH_BIT = 1 << HDMI_L_DEPTH , + HDMI_L_DEPTH_GFX_GFX_DEPTH_BIT = 1 << HDMI_L_DEPTH_GFX_GFX_DEPTH, + HDMI_TOPBOTTOM_BIT = 1 << HDMI_TOPBOTTOM, + HDMI_SIDE_BY_SIDE_HALF_BIT = 1 << HDMI_SIDE_BY_SIDE_HALF, + HDMI_SIDE_BY_SIDE_HALF_QUINCUNX_BIT = 1 << 15, +}; + +//ALL = both horizontal and quincunx modes are supported +//HDMI_SS_QUINCUNX_ALL = all quincunx subsampling modes are supported +//OL = Odd left viewHorizontal sub +//OR = Odd right view +//ER = Even left view +//EL = Even right view +enum hdmi_3d_subsampling { + HDMI_SS_HORZANDQUINCUNX = 0, + HDMI_SS_HORIZONTAL = 1, + HDMI_SS_QUINCUNX_ALL = 6, + HDMI_SS_QUINCUNX_OLOR = 7, + HDMI_SS_QUINCUNX_OLER = 8, + HDMI_SS_QUINCUNX_ELOR = 9, + HDMI_SS_QUINCUNX_ELER = 10, + HDMI_SS_VERTICAL = 0xF0000, + HDMI_SS_NONE = 0xF0001, +}; + +enum hdmi_scan_type { + HDMI_SCAN_PROGRESSIVE, + HDMI_SCAN_INTERLACED, +}; + +struct svd_info_t { + uint32_t xres; + uint32_t yres; + uint32_t hz; + enum hdmi_scan_type scan_type; + char name[9]; +}; + +struct svd_t { + uint8_t code; + bool native; + struct svd_info_t info; +}; + +struct hdmi_s3d_format_vic_info_t { + uint8_t vic_pos; + enum hdmi_3d_subsampling subsampling; +}; + +struct hdmi_s3d_format_info_t { + enum hdmi_3d_format format; + unsigned int num_valid_vic; + struct hdmi_s3d_format_vic_info_t vic_info[MAX_VIC_CODES_PER_3D_FORMAT]; +}; + +int edid_parser_init(struct edid_t **edid, const uint8_t *raw_edid_data); +void edid_parser_deinit(struct edid_t *edid); + +bool edid_s3d_capable(struct edid_t *edid); +bool edid_supports_s3d_format(struct edid_t *edid, enum hdmi_3d_format format); +const struct hdmi_s3d_format_info_t * edid_get_s3d_format_info(struct edid_t *edid, enum hdmi_3d_format format); + +void edid_get_svd_list(struct edid_t *edid, struct svd_t **list, unsigned int *num_elements); +const struct svd_t *edid_get_svd_descriptor(struct edid_t *edid, uint8_t vic_pos); + +#endif //_EDID_PARSER_
\ No newline at end of file |