/* * Copyright 2009-2015 Freescale Semiconductor, Inc. All Rights Reserved. */ /* * The code contained herein is licensed under the GNU General Public * License. You may obtain a copy of the GNU General Public License * Version 2 or later at the following locations: * * http://www.opensource.org/licenses/gpl-license.html * http://www.gnu.org/copyleft/gpl.html */ /*! * @defgroup Framebuffer Framebuffer Driver for SDC and ADC. */ /*! * @file mxc_edid.h * * @brief MXC EDID tools * * @ingroup Framebuffer */ #ifndef MXC_EDID_H #define MXC_EDID_H #include #define FB_VMODE_ASPECT_4_3 0x10 #define FB_VMODE_ASPECT_16_9 0x20 #define FB_VMODE_ASPECT_MASK (FB_VMODE_ASPECT_4_3 | FB_VMODE_ASPECT_16_9) enum cea_audio_coding_types { AUDIO_CODING_TYPE_REF_STREAM_HEADER = 0, AUDIO_CODING_TYPE_LPCM = 1, AUDIO_CODING_TYPE_AC3 = 2, AUDIO_CODING_TYPE_MPEG1 = 3, AUDIO_CODING_TYPE_MP3 = 4, AUDIO_CODING_TYPE_MPEG2 = 5, AUDIO_CODING_TYPE_AACLC = 6, AUDIO_CODING_TYPE_DTS = 7, AUDIO_CODING_TYPE_ATRAC = 8, AUDIO_CODING_TYPE_SACD = 9, AUDIO_CODING_TYPE_EAC3 = 10, AUDIO_CODING_TYPE_DTS_HD = 11, AUDIO_CODING_TYPE_MLP = 12, AUDIO_CODING_TYPE_DST = 13, AUDIO_CODING_TYPE_WMAPRO = 14, AUDIO_CODING_TYPE_RESERVED = 15, }; struct mxc_hdmi_3d_format { unsigned char vic_order_2d; unsigned char struct_3d; unsigned char detail_3d; unsigned char reserved; }; struct mxc_edid_cfg { bool cea_underscan; bool cea_basicaudio; bool cea_ycbcr444; bool cea_ycbcr422; bool hdmi_cap; /*VSD*/ bool vsd_support_ai; bool vsd_dc_48bit; bool vsd_dc_36bit; bool vsd_dc_30bit; bool vsd_dc_y444; bool vsd_dvi_dual; bool vsd_cnc0; bool vsd_cnc1; bool vsd_cnc2; bool vsd_cnc3; u8 vsd_video_latency; u8 vsd_audio_latency; u8 vsd_I_video_latency; u8 vsd_I_audio_latency; u8 physical_address[4]; u8 hdmi_vic[64]; struct mxc_hdmi_3d_format hdmi_3d_format[64]; u16 hdmi_3d_mask_all; u16 hdmi_3d_struct_all; u32 vsd_max_tmdsclk_rate; u8 max_channels; u8 sample_sizes; u8 sample_rates; u8 speaker_alloc; }; extern const struct fb_videomode mxc_cea_mode[64]; int mxc_edid_var_to_vic(struct fb_var_screeninfo *var); int mxc_edid_mode_to_vic(const struct fb_videomode *mode); int mxc_edid_read(struct i2c_adapter *adp, unsigned short addr, unsigned char *edid, struct mxc_edid_cfg *cfg, struct fb_info *fbi); int mxc_edid_parse_ext_blk(unsigned char *edid, struct mxc_edid_cfg *cfg, struct fb_monspecs *specs); #endif