| /* |
| * include/linux/amlogic/media/vout/hdmi_tx/hdmi_common.h |
| * |
| * Copyright (C) 2017 Amlogic, Inc. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| * |
| */ |
| |
| #ifndef __HDMI_COMMON_H__ |
| #define __HDMI_COMMON_H__ |
| |
| #include <linux/amlogic/media/vout/vinfo.h> |
| |
| /* HDMI VIC definitions */ |
| |
| /* HDMITX_VIC420_OFFSET and HDMITX_VIC_MASK are associated with |
| * VIC_MAX_VALID_MODE and VIC_MAX_NUM in hdmi_tx_module.h |
| */ |
| #define HDMITX_VIC420_OFFSET 0x100 |
| #define HDMITX_VIC420_FAKE_OFFSET 0x200 |
| #define HDMITX_VESA_OFFSET 0x300 |
| |
| #define HDMITX_VIC_MASK 0xff |
| |
| /* Refer to http://standards-oui.ieee.org/oui/oui.txt */ |
| #define HDMI_IEEEOUI 0x000C03 |
| #define HF_IEEEOUI 0xC45DD8 |
| #define GET_OUI_BYTE0(oui) (oui & 0xff) /* Little Endian */ |
| #define GET_OUI_BYTE1(oui) ((oui >> 8) & 0xff) |
| #define GET_OUI_BYTE2(oui) ((oui >> 16) & 0xff) |
| |
| enum hdmi_vic { |
| /* Refer to CEA 861-D */ |
| HDMI_Unknown = 0, |
| HDMI_640x480p60_4x3 = 1, |
| HDMI_720x480p60_4x3 = 2, |
| HDMI_720x480p60_16x9 = 3, |
| HDMI_1280x720p60_16x9 = 4, |
| HDMI_1920x1080i60_16x9 = 5, |
| HDMI_720x480i60_4x3 = 6, |
| HDMI_720x480i60_16x9 = 7, |
| HDMI_720x240p60_4x3 = 8, |
| HDMI_720x240p60_16x9 = 9, |
| HDMI_2880x480i60_4x3 = 10, |
| HDMI_2880x480i60_16x9 = 11, |
| HDMI_2880x240p60_4x3 = 12, |
| HDMI_2880x240p60_16x9 = 13, |
| HDMI_1440x480p60_4x3 = 14, |
| HDMI_1440x480p60_16x9 = 15, |
| HDMI_1920x1080p60_16x9 = 16, |
| HDMI_720x576p50_4x3 = 17, |
| HDMI_720x576p50_16x9 = 18, |
| HDMI_1280x720p50_16x9 = 19, |
| HDMI_1920x1080i50_16x9 = 20, |
| HDMI_720x576i50_4x3 = 21, |
| HDMI_720x576i50_16x9 = 22, |
| HDMI_720x288p_4x3 = 23, |
| HDMI_720x288p_16x9 = 24, |
| HDMI_2880x576i50_4x3 = 25, |
| HDMI_2880x576i50_16x9 = 26, |
| HDMI_2880x288p50_4x3 = 27, |
| HDMI_2880x288p50_16x9 = 28, |
| HDMI_1440x576p_4x3 = 29, |
| HDMI_1440x576p_16x9 = 30, |
| HDMI_1920x1080p50_16x9 = 31, |
| HDMI_1920x1080p24_16x9 = 32, |
| HDMI_1920x1080p25_16x9 = 33, |
| HDMI_1920x1080p30_16x9 = 34, |
| HDMI_2880x480p60_4x3 = 35, |
| HDMI_2880x480p60_16x9 = 36, |
| HDMI_2880x576p50_4x3 = 37, |
| HDMI_2880x576p50_16x9 = 38, |
| HDMI_1920x1080i_t1250_50_16x9 = 39, |
| HDMI_1920x1080i100_16x9 = 40, |
| HDMI_1280x720p100_16x9 = 41, |
| HDMI_720x576p100_4x3 = 42, |
| HDMI_720x576p100_16x9 = 43, |
| HDMI_720x576i100_4x3 = 44, |
| HDMI_720x576i100_16x9 = 45, |
| HDMI_1920x1080i120_16x9 = 46, |
| HDMI_1280x720p120_16x9 = 47, |
| HDMI_720x480p120_4x3 = 48, |
| HDMI_720x480p120_16x9 = 49, |
| HDMI_720x480i120_4x3 = 50, |
| HDMI_720x480i120_16x9 = 51, |
| HDMI_720x576p200_4x3 = 52, |
| HDMI_720x576p200_16x9 = 53, |
| HDMI_720x576i200_4x3 = 54, |
| HDMI_720x576i200_16x9 = 55, |
| HDMI_720x480p240_4x3 = 56, |
| HDMI_720x480p240_16x9 = 57, |
| HDMI_720x480i240_4x3 = 58, |
| HDMI_720x480i240_16x9 = 59, |
| /* Refet to CEA 861-F */ |
| HDMI_1280x720p24_16x9 = 60, |
| HDMI_1280x720p25_16x9 = 61, |
| HDMI_1280x720p30_16x9 = 62, |
| HDMI_1920x1080p120_16x9 = 63, |
| HDMI_1920x1080p100_16x9 = 64, |
| HDMI_1280x720p24_64x27 = 65, |
| HDMI_1280x720p25_64x27 = 66, |
| HDMI_1280x720p30_64x27 = 67, |
| HDMI_1280x720p50_64x27 = 68, |
| HDMI_1280x720p60_64x27 = 69, |
| HDMI_1280x720p100_64x27 = 70, |
| HDMI_1280x720p120_64x27 = 71, |
| HDMI_1920x1080p24_64x27 = 72, |
| HDMI_1920x1080p25_64x27 = 73, |
| HDMI_1920x1080p30_64x27 = 74, |
| HDMI_1920x1080p50_64x27 = 75, |
| HDMI_1920x1080p60_64x27 = 76, |
| HDMI_1920x1080p100_64x27 = 77, |
| HDMI_1920x1080p120_64x27 = 78, |
| HDMI_1680x720p24_64x27 = 79, |
| HDMI_1680x720p25_64x27 = 80, |
| HDMI_1680x720p30_64x27 = 81, |
| HDMI_1680x720p50_64x27 = 82, |
| HDMI_1680x720p60_64x27 = 83, |
| HDMI_1680x720p100_64x27 = 84, |
| HDMI_1680x720p120_64x27 = 85, |
| HDMI_2560x1080p24_64x27 = 86, |
| HDMI_2560x1080p25_64x27 = 87, |
| HDMI_2560x1080p30_64x27 = 88, |
| HDMI_2560x1080p50_64x27 = 89, |
| HDMI_2560x1080p60_64x27 = 90, |
| HDMI_2560x1080p100_64x27 = 91, |
| HDMI_2560x1080p120_64x27 = 92, |
| HDMI_3840x2160p24_16x9 = 93, |
| HDMI_3840x2160p25_16x9 = 94, |
| HDMI_3840x2160p30_16x9 = 95, |
| HDMI_3840x2160p50_16x9 = 96, |
| HDMI_3840x2160p60_16x9 = 97, |
| HDMI_4096x2160p24_256x135 = 98, |
| HDMI_4096x2160p25_256x135 = 99, |
| HDMI_4096x2160p30_256x135 = 100, |
| HDMI_4096x2160p50_256x135 = 101, |
| HDMI_4096x2160p60_256x135 = 102, |
| HDMI_3840x2160p24_64x27 = 103, |
| HDMI_3840x2160p25_64x27 = 104, |
| HDMI_3840x2160p30_64x27 = 105, |
| HDMI_3840x2160p50_64x27 = 106, |
| HDMI_3840x2160p60_64x27 = 107, |
| HDMI_RESERVED = 108, |
| HDMI_3840x1080p120hz = 109, |
| HDMI_3840x1080p100hz, |
| HDMI_3840x540p240hz, |
| HDMI_3840x540p200hz, |
| |
| /* |
| * the following vic is for those y420 mode |
| * they are all beyond OFFSET_HDMITX_VIC420(0x1000) |
| * and they has same vic with normal vic in the lower bytes. |
| */ |
| HDMI_VIC_Y420 = |
| HDMITX_VIC420_OFFSET, |
| HDMI_3840x2160p50_16x9_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_3840x2160p50_16x9, |
| HDMI_3840x2160p60_16x9_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_3840x2160p60_16x9, |
| HDMI_4096x2160p50_256x135_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_4096x2160p50_256x135, |
| HDMI_4096x2160p60_256x135_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_4096x2160p60_256x135, |
| HDMI_3840x2160p50_64x27_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_3840x2160p50_64x27, |
| HDMI_3840x2160p60_64x27_Y420 = |
| HDMITX_VIC420_OFFSET + HDMI_3840x2160p60_64x27, |
| HDMI_VIC_Y420_MAX, |
| |
| HDMI_VIC_FAKE = HDMITX_VIC420_FAKE_OFFSET, |
| HDMIV_640x480p60hz = HDMITX_VESA_OFFSET, |
| HDMIV_600x1024p60hz, |
| HDMIV_800x480p60hz, |
| HDMIV_800x600p60hz, |
| HDMIV_852x480p60hz, |
| HDMIV_854x480p60hz, |
| HDMIV_1024x600p60hz, |
| HDMIV_1024x768p60hz, |
| HDMIV_1152x864p75hz, |
| HDMIV_1280x600p60hz, |
| HDMIV_1280x768p60hz, |
| HDMIV_1280x800p60hz, |
| HDMIV_1280x960p60hz, |
| HDMIV_1280x1024p60hz, |
| HDMIV_1360x768p60hz, |
| HDMIV_1366x768p60hz, |
| HDMIV_1400x1050p60hz, |
| HDMIV_1440x900p60hz, |
| HDMIV_1440x2560p60hz, |
| HDMIV_1440x2560p70hz, |
| HDMIV_1600x900p60hz, |
| HDMIV_1600x1200p60hz, |
| HDMIV_1680x1050p60hz, |
| HDMIV_1920x1200p60hz, |
| HDMIV_2160x1200p90hz, |
| HDMIV_2560x1080p60hz, |
| HDMIV_2560x1440p60hz, |
| HDMIV_2560x1600p60hz, |
| HDMIV_3440x1440p60hz, |
| HDMI_VIC_END, |
| }; |
| |
| /* Compliance with old definitions */ |
| #define HDMI_640x480p60 HDMI_640x480p60_4x3 |
| #define HDMI_480p60 HDMI_720x480p60_4x3 |
| #define HDMI_480p60_16x9 HDMI_720x480p60_16x9 |
| #define HDMI_720p60 HDMI_1280x720p60_16x9 |
| #define HDMI_1080i60 HDMI_1920x1080i60_16x9 |
| #define HDMI_480i60 HDMI_720x480i60_4x3 |
| #define HDMI_480i60_16x9 HDMI_720x480i60_16x9 |
| #define HDMI_480i60_16x9_rpt HDMI_2880x480i60_16x9 |
| #define HDMI_1440x480p60 HDMI_1440x480p60_4x3 |
| #define HDMI_1440x480p60_16x9 HDMI_1440x480p60_16x9 |
| #define HDMI_1080p60 HDMI_1920x1080p60_16x9 |
| #define HDMI_576p50 HDMI_720x576p50_4x3 |
| #define HDMI_576p50_16x9 HDMI_720x576p50_16x9 |
| #define HDMI_720p50 HDMI_1280x720p50_16x9 |
| #define HDMI_1080i50 HDMI_1920x1080i50_16x9 |
| #define HDMI_576i50 HDMI_720x576i50_4x3 |
| #define HDMI_576i50_16x9 HDMI_720x576i50_16x9 |
| #define HDMI_576i50_16x9_rpt HDMI_2880x576i50_16x9 |
| #define HDMI_1080p50 HDMI_1920x1080p50_16x9 |
| #define HDMI_1080p24 HDMI_1920x1080p24_16x9 |
| #define HDMI_1080p25 HDMI_1920x1080p25_16x9 |
| #define HDMI_1080p30 HDMI_1920x1080p30_16x9 |
| #define HDMI_480p60_16x9_rpt HDMI_2880x480p60_16x9 |
| #define HDMI_576p50_16x9_rpt HDMI_2880x576p50_16x9 |
| #define HDMI_4k2k_24 HDMI_3840x2160p24_16x9 |
| #define HDMI_4k2k_25 HDMI_3840x2160p25_16x9 |
| #define HDMI_4k2k_30 HDMI_3840x2160p30_16x9 |
| #define HDMI_4k2k_50 HDMI_3840x2160p50_16x9 |
| #define HDMI_4k2k_60 HDMI_3840x2160p60_16x9 |
| #define HDMI_4k2k_smpte_24 HDMI_4096x2160p24_256x135 |
| #define HDMI_4k2k_smpte_50 HDMI_4096x2160p50_256x135 |
| #define HDMI_4k2k_smpte_60 HDMI_4096x2160p60_256x135 |
| |
| /* for Y420 modes*/ |
| #define HDMI_4k2k_50_y420 HDMI_3840x2160p50_16x9_Y420 |
| #define HDMI_4k2k_60_y420 HDMI_3840x2160p60_16x9_Y420 |
| #define HDMI_4k2k_smpte_50_y420 HDMI_4096x2160p50_256x135_Y420 |
| #define HDMI_4k2k_smpte_60_y420 HDMI_4096x2160p60_256x135_Y420 |
| |
| enum hdmi_audio_fs; |
| struct dtd; |
| |
| /* CEA TIMING STRUCT DEFINITION */ |
| struct hdmi_cea_timing { |
| unsigned int pixel_freq; /* Unit: 1000 */ |
| unsigned int frac_freq; /* 1.001 shift */ |
| unsigned int h_freq; /* Unit: Hz */ |
| unsigned int v_freq; /* Unit: 0.001 Hz */ |
| unsigned int vsync; /* Unit: Hz, rough data */ |
| unsigned int vsync_polarity:1; |
| unsigned int hsync_polarity:1; |
| unsigned short h_active; |
| unsigned short h_total; |
| unsigned short h_blank; |
| unsigned short h_front; |
| unsigned short h_sync; |
| unsigned short h_back; |
| unsigned short v_active; |
| unsigned short v_total; |
| unsigned short v_blank; |
| unsigned short v_front; |
| unsigned short v_sync; |
| unsigned short v_back; |
| unsigned short v_sync_ln; |
| }; |
| |
| enum hdmi_color_depth { |
| COLORDEPTH_24B = 4, |
| COLORDEPTH_30B = 5, |
| COLORDEPTH_36B = 6, |
| COLORDEPTH_48B = 7, |
| COLORDEPTH_RESERVED, |
| }; |
| |
| enum hdmi_color_space { |
| COLORSPACE_RGB444 = 0, |
| COLORSPACE_YUV422 = 1, |
| COLORSPACE_YUV444 = 2, |
| COLORSPACE_YUV420 = 3, |
| COLORSPACE_RESERVED, |
| }; |
| |
| enum hdmi_color_range { |
| COLORRANGE_LIM, |
| COLORRANGE_FUL, |
| }; |
| |
| enum hdmi_3d_type { |
| T3D_FRAME_PACKING = 0, |
| T3D_FIELD_ALTER = 1, |
| T3D_LINE_ALTER = 2, |
| T3D_SBS_FULL = 3, |
| T3D_L_DEPTH = 4, |
| T3D_L_DEPTH_GRAPHICS = 5, |
| T3D_TAB = 6, /* Top and Buttom */ |
| T3D_RSVD = 7, |
| T3D_SBS_HALF = 8, |
| T3D_DISABLE, |
| }; |
| |
| /* get hdmi cea timing */ |
| /* t: struct hdmi_cea_timing * */ |
| #define GET_TIMING(name) (t->name) |
| |
| struct hdmi_format_para { |
| enum hdmi_vic vic; |
| unsigned char *name; |
| unsigned char *sname; |
| char ext_name[32]; |
| enum hdmi_color_depth cd; /* cd8, cd10 or cd12 */ |
| enum hdmi_color_space cs; /* rgb, y444, y422, y420 */ |
| enum hdmi_color_range cr; /* limit, full */ |
| unsigned int pixel_repetition_factor; |
| unsigned int progress_mode:1; |
| unsigned int scrambler_en:1; |
| unsigned int tmds_clk_div40:1; |
| unsigned int tmds_clk; /* Unit: 1000 */ |
| struct hdmi_cea_timing timing; |
| struct vinfo_s hdmitx_vinfo; |
| }; |
| |
| /* HDMI Packet Type Definitions */ |
| #define PT_NULL_PKT 0x00 |
| #define PT_AUD_CLK_REGENERATION 0x01 |
| #define PT_AUD_SAMPLE 0x02 |
| #define PT_GENERAL_CONTROL 0x03 |
| #define PT_ACP 0x04 |
| #define PT_ISRC1 0x05 |
| #define PT_ISRC2 0x06 |
| #define PT_ONE_BIT_AUD_SAMPLE 0x07 |
| #define PT_DST_AUD 0x08 |
| #define PT_HBR_AUD_STREAM 0x09 |
| #define PT_GAMUT_METADATA 0x0A |
| #define PT_3D_AUD_SAMPLE 0x0B |
| #define PT_ONE_BIT_3D_AUD_SAMPLE 0x0C |
| #define PT_AUD_METADATA 0x0D |
| #define PT_MULTI_SREAM_AUD_SAMPLE 0x0E |
| #define PT_ONE_BIT_MULTI_SREAM_AUD_SAMPLE 0x0F |
| /* Infoframe Packet */ |
| #define PT_IF_VENDOR_SEPCIFIC 0x81 |
| #define PT_IF_AVI 0x82 |
| #define PT_IF_SPD 0x83 |
| #define PT_IF_AUD 0x84 |
| #define PT_IF_MPEG_SOURCE 0x85 |
| |
| /* Old definitions */ |
| #define TYPE_AVI_INFOFRAMES 0x82 |
| #define AVI_INFOFRAMES_VERSION 0x02 |
| #define AVI_INFOFRAMES_LENGTH 0x0D |
| |
| struct hdmi_csc_coef_table { |
| unsigned char input_format; |
| unsigned char output_format; |
| unsigned char color_depth; |
| unsigned char color_format; /* 0 for ITU601, 1 for ITU709 */ |
| unsigned char coef_length; |
| unsigned char *coef; |
| }; |
| |
| enum hdmi_audio_packet { |
| hdmi_audio_packet_SMP = 0x02, |
| hdmi_audio_packet_1BT = 0x07, |
| hdmi_audio_packet_DST = 0x08, |
| hdmi_audio_packet_HBR = 0x09, |
| }; |
| |
| enum hdmi_aspect_ratio { |
| ASPECT_RATIO_SAME_AS_SOURCE = 0x8, |
| TV_ASPECT_RATIO_4_3 = 0x9, |
| TV_ASPECT_RATIO_16_9 = 0xA, |
| TV_ASPECT_RATIO_14_9 = 0xB, |
| TV_ASPECT_RATIO_MAX |
| }; |
| struct vesa_standard_timing; |
| |
| struct hdmi_format_para *hdmi_get_fmt_paras(enum hdmi_vic vic); |
| struct hdmi_format_para *hdmi_match_dtd_paras(struct dtd *t); |
| void check_detail_fmt(void); |
| unsigned int hdmi_get_csc_coef( |
| unsigned int input_format, unsigned int output_format, |
| unsigned int color_depth, unsigned int color_format, |
| unsigned char **coef_array, unsigned int *coef_length); |
| struct hdmi_format_para *hdmi_get_fmt_name(char const *name, char const *attr); |
| struct vinfo_s *hdmi_get_valid_vinfo(char *mode); |
| const char *hdmi_get_str_cd(struct hdmi_format_para *para); |
| const char *hdmi_get_str_cs(struct hdmi_format_para *para); |
| const char *hdmi_get_str_cr(struct hdmi_format_para *para); |
| unsigned int hdmi_get_aud_n_paras(enum hdmi_audio_fs fs, |
| enum hdmi_color_depth cd, unsigned int tmds_clk); |
| struct hdmi_format_para *hdmi_get_vesa_paras(struct vesa_standard_timing *t); |
| |
| |
| /* HDMI Audio Parmeters */ |
| /* Refer to CEA-861-D Page 88 */ |
| #define DTS_HD_TYPE_MASK 0xff00 |
| #define DTS_HD_MA (0X1 << 8) |
| enum hdmi_audio_type { |
| CT_REFER_TO_STREAM = 0, |
| CT_PCM, |
| CT_AC_3, /* DD */ |
| CT_MPEG1, |
| CT_MP3, |
| CT_MPEG2, |
| CT_AAC, |
| CT_DTS, |
| CT_ATRAC, |
| CT_ONE_BIT_AUDIO, |
| CT_DOLBY_D, /* DDP or DD+ */ |
| CT_DTS_HD, |
| CT_MAT, /* TrueHD */ |
| CT_DST, |
| CT_WMA, |
| CT_DTS_HD_MA = CT_DTS_HD + (DTS_HD_MA), |
| CT_MAX, |
| }; |
| |
| enum hdmi_audio_chnnum { |
| CC_REFER_TO_STREAM = 0, |
| CC_2CH, |
| CC_3CH, |
| CC_4CH, |
| CC_5CH, |
| CC_6CH, |
| CC_7CH, |
| CC_8CH, |
| CC_MAX_CH |
| }; |
| |
| enum hdmi_audio_format { |
| AF_SPDIF = 0, AF_I2S, AF_DSD, AF_HBR, AT_MAX |
| }; |
| |
| enum hdmi_audio_sampsize { |
| SS_REFER_TO_STREAM = 0, SS_16BITS, SS_20BITS, SS_24BITS, SS_MAX |
| }; |
| |
| struct size_map { |
| unsigned int sample_bits; |
| enum hdmi_audio_sampsize ss; |
| }; |
| |
| /* FL-- Front Left */ |
| /* FC --Front Center */ |
| /* FR --Front Right */ |
| /* FLC-- Front Left Center */ |
| /* FRC-- Front RiQhtCenter */ |
| /* RL-- Rear Left */ |
| /* RC --Rear Center */ |
| /* RR-- Rear Right */ |
| /* RLC-- Rear Left Center */ |
| /* RRC --Rear RiQhtCenter */ |
| /* LFE-- Low Frequency Effect */ |
| enum hdmi_speak_location { |
| CA_FR_FL = 0, |
| CA_LFE_FR_FL, |
| CA_FC_FR_FL, |
| CA_FC_LFE_FR_FL, |
| |
| CA_RC_FR_FL, |
| CA_RC_LFE_FR_FL, |
| CA_RC_FC_FR_FL, |
| CA_RC_FC_LFE_FR_FL, |
| |
| CA_RR_RL_FR_FL, |
| CA_RR_RL_LFE_FR_FL, |
| CA_RR_RL_FC_FR_FL, |
| CA_RR_RL_FC_LFE_FR_FL, |
| |
| CA_RC_RR_RL_FR_FL, |
| CA_RC_RR_RL_LFE_FR_FL, |
| CA_RC_RR_RL_FC_FR_FL, |
| CA_RC_RR_RL_FC_LFE_FR_FL, |
| |
| CA_RRC_RC_RR_RL_FR_FL, |
| CA_RRC_RC_RR_RL_LFE_FR_FL, |
| CA_RRC_RC_RR_RL_FC_FR_FL, |
| CA_RRC_RC_RR_RL_FC_LFE_FR_FL, |
| |
| CA_FRC_RLC_FR_FL, |
| CA_FRC_RLC_LFE_FR_FL, |
| CA_FRC_RLC_FC_FR_FL, |
| CA_FRC_RLC_FC_LFE_FR_FL, |
| |
| CA_FRC_RLC_RC_FR_FL, |
| CA_FRC_RLC_RC_LFE_FR_FL, |
| CA_FRC_RLC_RC_FC_FR_FL, |
| CA_FRC_RLC_RC_FC_LFE_FR_FL, |
| |
| CA_FRC_RLC_RR_RL_FR_FL, |
| CA_FRC_RLC_RR_RL_LFE_FR_FL, |
| CA_FRC_RLC_RR_RL_FC_FR_FL, |
| CA_FRC_RLC_RR_RL_FC_LFE_FR_FL, |
| }; |
| |
| enum hdmi_audio_downmix { |
| LSV_0DB = 0, |
| LSV_1DB, |
| LSV_2DB, |
| LSV_3DB, |
| LSV_4DB, |
| LSV_5DB, |
| LSV_6DB, |
| LSV_7DB, |
| LSV_8DB, |
| LSV_9DB, |
| LSV_10DB, |
| LSV_11DB, |
| LSV_12DB, |
| LSV_13DB, |
| LSV_14DB, |
| LSV_15DB, |
| }; |
| |
| enum hdmi_rx_audio_state { |
| STATE_AUDIO__MUTED = 0, |
| STATE_AUDIO__REQUEST_AUDIO = 1, |
| STATE_AUDIO__AUDIO_READY = 2, |
| STATE_AUDIO__ON = 3, |
| }; |
| |
| /* Sampling Freq Fs: |
| * 0 - Refer to Stream Header; |
| * 1 - 32KHz; |
| * 2 - 44.1KHz; |
| * 3 - 48KHz; |
| * 4 - 88.2KHz... |
| */ |
| enum hdmi_audio_fs { |
| FS_REFER_TO_STREAM = 0, |
| FS_32K = 1, |
| FS_44K1 = 2, |
| FS_48K = 3, |
| FS_88K2 = 4, |
| FS_96K = 5, |
| FS_176K4 = 6, |
| FS_192K = 7, |
| FS_768K = 8, |
| FS_MAX, |
| }; |
| |
| struct rate_map_fs { |
| unsigned int rate; |
| enum hdmi_audio_fs fs; |
| }; |
| |
| struct hdmi_rx_audioinfo { |
| /* !< Signal decoding type -- TvAudioType */ |
| enum hdmi_audio_type type; |
| enum hdmi_audio_format format; |
| /* !< active audio channels bit mask. */ |
| enum hdmi_audio_chnnum channels; |
| enum hdmi_audio_fs fs; /* !< Signal sample rate in Hz */ |
| enum hdmi_audio_sampsize ss; |
| enum hdmi_speak_location speak_loc; |
| enum hdmi_audio_downmix lsv; |
| unsigned int N_value; |
| unsigned int CTS; |
| }; |
| |
| #define AUDIO_PARA_MAX_NUM 14 |
| struct hdmi_audio_fs_ncts { |
| struct { |
| unsigned int tmds_clk; |
| unsigned int n; /* 24 or 30 bit */ |
| unsigned int cts; /* 24 or 30 bit */ |
| unsigned int n_36bit; |
| unsigned int cts_36bit; |
| unsigned int n_48bit; |
| unsigned int cts_48bit; |
| } array[AUDIO_PARA_MAX_NUM]; |
| unsigned int def_n; |
| }; |
| |
| struct parse_cd { |
| enum hdmi_color_depth cd; |
| const char *name; |
| }; |
| |
| struct parse_cs { |
| enum hdmi_color_space cs; |
| const char *name; |
| }; |
| |
| struct parse_cr { |
| enum hdmi_color_range cr; |
| const char *name; |
| }; |
| |
| /* Refer CEA861-D Page 116 Table 55 */ |
| struct dtd { |
| unsigned short pixel_clock; |
| unsigned short h_active; |
| unsigned short h_blank; |
| unsigned short v_active; |
| unsigned short v_blank; |
| unsigned short h_sync_offset; |
| unsigned short h_sync; |
| unsigned short v_sync_offset; |
| unsigned short v_sync; |
| unsigned char h_image_size; |
| unsigned char v_image_size; |
| unsigned char h_border; |
| unsigned char v_border; |
| unsigned char flags; |
| enum hdmi_vic vic; |
| }; |
| |
| struct vesa_standard_timing { |
| unsigned short hactive; |
| unsigned short vactive; |
| unsigned short hblank; |
| unsigned short vblank; |
| unsigned short hsync; |
| unsigned short tmds_clk; /* Value = Pixel clock ?? 10,000 */ |
| enum hdmi_vic vesa_timing; |
| }; |
| |
| #endif |