blob: ff7ddd92a3bc707583f539a6f0430fad5fd031de [file] [log] [blame]
/*
* 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 <linux/fb.h>
#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