diff options
| author | Ajay Singh Parmar <aparmar@codeaurora.org> | 2015-01-05 23:12:15 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:37:31 -0700 |
| commit | 7c13fb112786f674076386c731597e0b0369db5e (patch) | |
| tree | fb6d1e9e14e1ed8f1f87f3463c50a06fb30f0b5b /include/uapi | |
| parent | a4f72acde7ff0f846ec0cb8cda38f7936d7a06cf (diff) | |
msm: mdss: hdmi: add new resolutions at runtime
EDID (Extended Display Identification Data) may contain some
resolutions in DTDs (Detailed Timing Descriptors) which are not
in the supported resolutions list. In such cases, every time
when the HDMI cable is connected, parse all the resolution data
from DTD and populate the resolution list with the newly found
resolution. This way any resolution found in DTD can be supported
subjected to hardware limitations.
Change-Id: Ib2223e34820a70da0b03b8ac39b170cf6b3e65b5
[veeras@codeaurora.org: Resolved merge conflict in msm_hdmi_modes.h
by retaining the version of this commit]
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Diffstat (limited to 'include/uapi')
| -rw-r--r-- | include/uapi/video/msm_hdmi_modes.h | 414 |
1 files changed, 216 insertions, 198 deletions
diff --git a/include/uapi/video/msm_hdmi_modes.h b/include/uapi/video/msm_hdmi_modes.h index e1dd71f6b6ba..7b138101fbec 100644 --- a/include/uapi/video/msm_hdmi_modes.h +++ b/include/uapi/video/msm_hdmi_modes.h @@ -3,6 +3,15 @@ #include <linux/types.h> #include <linux/errno.h> +enum aspect_ratio { + HDMI_RES_AR_INVALID, + HDMI_RES_AR_4_3, + HDMI_RES_AR_5_4, + HDMI_RES_AR_16_9, + HDMI_RES_AR_16_10, + HDMI_RES_AR_MAX, +}; + struct msm_hdmi_mode_timing_info { uint32_t video_format; uint32_t active_h; @@ -21,6 +30,7 @@ struct msm_hdmi_mode_timing_info { uint32_t refresh_rate; uint32_t interlaced; uint32_t supported; + enum aspect_ratio ar; }; #define MSM_HDMI_INIT_RES_PAGE 1 @@ -117,273 +127,281 @@ struct msm_hdmi_mode_timing_info { /* Video Identification Codes from 65-127 are reserved for the future */ #define HDMI_VFRMT_END 127 +#define EVFRMT_OFF(x) (HDMI_VFRMT_END + x) + /* extended video formats */ -#define HDMI_VFRMT_3840x2160p30_16_9 (HDMI_VFRMT_END + 1) -#define HDMI_VFRMT_3840x2160p25_16_9 (HDMI_VFRMT_END + 2) -#define HDMI_VFRMT_3840x2160p24_16_9 (HDMI_VFRMT_END + 3) -#define HDMI_VFRMT_4096x2160p24_16_9 (HDMI_VFRMT_END + 4) +#define HDMI_VFRMT_3840x2160p30_16_9 EVFRMT_OFF(1) +#define HDMI_VFRMT_3840x2160p25_16_9 EVFRMT_OFF(2) +#define HDMI_VFRMT_3840x2160p24_16_9 EVFRMT_OFF(3) +#define HDMI_VFRMT_4096x2160p24_16_9 EVFRMT_OFF(4) #define HDMI_EVFRMT_END HDMI_VFRMT_4096x2160p24_16_9 -/* VESA DMT TIMINGS */ -#define HDMI_VFRMT_1024x768p60_4_3 (HDMI_EVFRMT_END + 1) -#define HDMI_VFRMT_1280x1024p60_5_4 (HDMI_EVFRMT_END + 2) -#define HDMI_VFRMT_2560x1600p60_16_9 (HDMI_EVFRMT_END + 3) -#define VESA_DMT_VFRMT_END HDMI_VFRMT_2560x1600p60_16_9 -#define HDMI_VFRMT_MAX (VESA_DMT_VFRMT_END + 1) +#define WQXGA_OFF(x) (HDMI_EVFRMT_END + x) + +/* WQXGA */ +#define HDMI_VFRMT_2560x1600p60_16_9 WQXGA_OFF(1) +#define HDMI_WQXGAFRMT_END HDMI_VFRMT_2560x1600p60_16_9 + +#define WXGA_OFF(x) (HDMI_WQXGAFRMT_END + x) + +/* WXGA */ +#define HDMI_VFRMT_1280x800p60_16_10 WXGA_OFF(1) +#define HDMI_VFRMT_1366x768p60_16_10 WXGA_OFF(2) +#define HDMI_WXGAFRMT_END HDMI_VFRMT_1366x768p60_16_10 + +#define ETI_OFF(x) (HDMI_WXGAFRMT_END + x) + +/* ESTABLISHED TIMINGS I */ +#define HDMI_VFRMT_800x600p60_4_3 ETI_OFF(1) +#define ETI_VFRMT_END HDMI_VFRMT_800x600p60_4_3 + +#define ETII_OFF(x) (ETI_VFRMT_END + x) + +/* ESTABLISHED TIMINGS II */ +#define HDMI_VFRMT_1024x768p60_4_3 ETII_OFF(1) +#define HDMI_VFRMT_1280x1024p60_5_4 ETII_OFF(2) +#define ETII_VFRMT_END HDMI_VFRMT_1280x1024p60_5_4 + +#define ETIII_OFF(x) (ETII_VFRMT_END + x) + +/* ESTABLISHED TIMINGS III */ +#define HDMI_VFRMT_848x480p60_16_9 ETIII_OFF(1) +#define HDMI_VFRMT_1280x960p60_4_3 ETIII_OFF(2) +#define HDMI_VFRMT_1360x768p60_16_9 ETIII_OFF(3) +#define HDMI_VFRMT_1440x900p60_16_10 ETIII_OFF(4) +#define HDMI_VFRMT_1400x1050p60_4_3 ETIII_OFF(5) +#define HDMI_VFRMT_1680x1050p60_16_10 ETIII_OFF(6) +#define HDMI_VFRMT_1600x1200p60_4_3 ETIII_OFF(7) +#define HDMI_VFRMT_1920x1200p60_16_10 ETIII_OFF(8) +#define ETIII_VFRMT_END HDMI_VFRMT_1920x1200p60_16_10 + +#define RESERVE_OFF(x) (ETIII_VFRMT_END + x) + +#define HDMI_VFRMT_RESERVE1 RESERVE_OFF(1) +#define HDMI_VFRMT_RESERVE2 RESERVE_OFF(2) +#define HDMI_VFRMT_RESERVE3 RESERVE_OFF(3) +#define HDMI_VFRMT_RESERVE4 RESERVE_OFF(4) +#define HDMI_VFRMT_RESERVE5 RESERVE_OFF(5) +#define HDMI_VFRMT_RESERVE6 RESERVE_OFF(6) +#define HDMI_VFRMT_RESERVE7 RESERVE_OFF(7) +#define HDMI_VFRMT_RESERVE8 RESERVE_OFF(8) +#define RESERVE_VFRMT_END HDMI_VFRMT_RESERVE8 + +#define HDMI_VFRMT_MAX (RESERVE_VFRMT_END + 1) #define HDMI_VFRMT_FORCE_32BIT 0x7FFFFFFF /* Timing information for supported modes */ #define VFRMT_NOT_SUPPORTED(VFRMT) \ - {VFRMT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false} + {VFRMT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, \ + HDMI_RES_AR_INVALID} #define HDMI_VFRMT_640x480p60_4_3_TIMING \ {HDMI_VFRMT_640x480p60_4_3, 640, 16, 96, 48, true, \ - 480, 10, 2, 33, true, 25200, 60000, false, true} + 480, 10, 2, 33, true, 25200, 60000, false, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_720x480p60_4_3_TIMING \ {HDMI_VFRMT_720x480p60_4_3, 720, 16, 62, 60, true, \ - 480, 9, 6, 30, true, 27027, 60000, false, true} + 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_720x480p60_16_9_TIMING \ {HDMI_VFRMT_720x480p60_16_9, 720, 16, 62, 60, true, \ - 480, 9, 6, 30, true, 27030, 60000, false, true} + 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1280x720p60_16_9_TIMING \ {HDMI_VFRMT_1280x720p60_16_9, 1280, 110, 40, 220, false, \ - 720, 5, 5, 20, false, 74250, 60000, false, true} + 720, 5, 5, 20, false, 74250, 60000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080i60_16_9_TIMING \ {HDMI_VFRMT_1920x1080i60_16_9, 1920, 88, 44, 148, false, \ - 540, 2, 5, 5, false, 74250, 60000, false, true} + 540, 2, 5, 5, false, 74250, 60000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1440x480i60_4_3_TIMING \ {HDMI_VFRMT_1440x480i60_4_3, 1440, 38, 124, 114, true, \ - 240, 4, 3, 15, true, 27000, 60000, true, true} + 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_1440x480i60_16_9_TIMING \ {HDMI_VFRMT_1440x480i60_16_9, 1440, 38, 124, 114, true, \ - 240, 4, 3, 15, true, 27000, 60000, true, true} + 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080p60_16_9_TIMING \ {HDMI_VFRMT_1920x1080p60_16_9, 1920, 88, 44, 148, false, \ - 1080, 4, 5, 36, false, 148500, 60000, false, true} + 1080, 4, 5, 36, false, 148500, 60000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_720x576p50_4_3_TIMING \ {HDMI_VFRMT_720x576p50_4_3, 720, 12, 64, 68, true, \ - 576, 5, 5, 39, true, 27000, 50000, false, true} + 576, 5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_720x576p50_16_9_TIMING \ {HDMI_VFRMT_720x576p50_16_9, 720, 12, 64, 68, true, \ - 576, 5, 5, 39, true, 27000, 50000, false, true} + 576, 5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1280x720p50_16_9_TIMING \ {HDMI_VFRMT_1280x720p50_16_9, 1280, 440, 40, 220, false, \ - 720, 5, 5, 20, false, 74250, 50000, false, true} + 720, 5, 5, 20, false, 74250, 50000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1440x576i50_4_3_TIMING \ {HDMI_VFRMT_1440x576i50_4_3, 1440, 24, 126, 138, true, \ - 288, 2, 3, 19, true, 27000, 50000, true, true} + 288, 2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_1440x576i50_16_9_TIMING \ {HDMI_VFRMT_1440x576i50_16_9, 1440, 24, 126, 138, true, \ - 288, 2, 3, 19, true, 27000, 50000, true, true} + 288, 2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080p50_16_9_TIMING \ {HDMI_VFRMT_1920x1080p50_16_9, 1920, 528, 44, 148, false, \ - 1080, 4, 5, 36, false, 148500, 50000, false, true} + 1080, 4, 5, 36, false, 148500, 50000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080p24_16_9_TIMING \ {HDMI_VFRMT_1920x1080p24_16_9, 1920, 638, 44, 148, false, \ - 1080, 4, 5, 36, false, 74250, 24000, false, true} + 1080, 4, 5, 36, false, 74250, 24000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080p25_16_9_TIMING \ {HDMI_VFRMT_1920x1080p25_16_9, 1920, 528, 44, 148, false, \ - 1080, 4, 5, 36, false, 74250, 25000, false, true} + 1080, 4, 5, 36, false, 74250, 25000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1920x1080p30_16_9_TIMING \ {HDMI_VFRMT_1920x1080p30_16_9, 1920, 88, 44, 148, false, \ - 1080, 4, 5, 36, false, 74250, 30000, false, true} + 1080, 4, 5, 36, false, 74250, 30000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_1024x768p60_4_3_TIMING \ {HDMI_VFRMT_1024x768p60_4_3, 1024, 24, 136, 160, false, \ - 768, 2, 6, 29, false, 65000, 60000, false, true} + 768, 2, 6, 29, false, 65000, 60000, false, true, HDMI_RES_AR_4_3} #define HDMI_VFRMT_1280x1024p60_5_4_TIMING \ {HDMI_VFRMT_1280x1024p60_5_4, 1280, 48, 112, 248, false, \ - 1024, 1, 3, 38, false, 108000, 60000, false, true} + 1024, 1, 3, 38, false, 108000, 60000, false, true, HDMI_RES_AR_5_4} #define HDMI_VFRMT_2560x1600p60_16_9_TIMING \ {HDMI_VFRMT_2560x1600p60_16_9, 2560, 48, 32, 80, false, \ - 1600, 3, 6, 37, false, 268500, 60000, false, true} + 1600, 3, 6, 37, false, 268500, 60000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_3840x2160p30_16_9_TIMING \ {HDMI_VFRMT_3840x2160p30_16_9, 3840, 176, 88, 296, false, \ - 2160, 8, 10, 72, false, 297000, 30000, false, true} + 2160, 8, 10, 72, false, 297000, 30000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_3840x2160p25_16_9_TIMING \ {HDMI_VFRMT_3840x2160p25_16_9, 3840, 1056, 88, 296, false, \ - 2160, 8, 10, 72, false, 297000, 25000, false, true} + 2160, 8, 10, 72, false, 297000, 25000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_3840x2160p24_16_9_TIMING \ {HDMI_VFRMT_3840x2160p24_16_9, 3840, 1276, 88, 296, false, \ - 2160, 8, 10, 72, false, 297000, 24000, false, true} + 2160, 8, 10, 72, false, 297000, 24000, false, true, HDMI_RES_AR_16_9} #define HDMI_VFRMT_4096x2160p24_16_9_TIMING \ {HDMI_VFRMT_4096x2160p24_16_9, 4096, 1020, 88, 296, false, \ - 2160, 8, 10, 72, false, 297000, 24000, false, true} + 2160, 8, 10, 72, false, 297000, 24000, false, true, HDMI_RES_AR_16_9} + +#define HDMI_VFRMT_800x600p60_4_3_TIMING \ + {HDMI_VFRMT_800x600p60_4_3, 800, 40, 128, 88, false, \ + 600, 1, 4, 23, false, 40000, 60000, false, true, HDMI_RES_AR_4_3} +#define HDMI_VFRMT_848x480p60_16_9_TIMING \ + {HDMI_VFRMT_848x480p60_16_9, 848, 16, 112, 112, false, \ + 480, 6, 8, 23, false, 33750, 60000, false, true, HDMI_RES_AR_16_9} +#define HDMI_VFRMT_1280x960p60_4_3_TIMING\ + {HDMI_VFRMT_1280x960p60_4_3, 1280, 96, 112, 312, false, \ + 960, 1, 3, 36, false, 108000, 60000, false, true, HDMI_RES_AR_4_3} +#define HDMI_VFRMT_1360x768p60_16_9_TIMING\ + {HDMI_VFRMT_1360x768p60_16_9, 1360, 64, 112, 256, false, \ + 768, 3, 6, 18, false, 85500, 60000, false, true, HDMI_RES_AR_16_9} +#define HDMI_VFRMT_1440x900p60_16_10_TIMING\ + {HDMI_VFRMT_1440x900p60_16_10, 1440, 48, 32, 80, false, \ + 900, 3, 6, 17, true, 88750, 60000, false, true, HDMI_RES_AR_16_10} +#define HDMI_VFRMT_1400x1050p60_4_3_TIMING\ + {HDMI_VFRMT_1400x1050p60_4_3, 1400, 48, 32, 80, false, \ + 1050, 3, 4, 23, true, 101000, 60000, false, true, HDMI_RES_AR_4_3} +#define HDMI_VFRMT_1680x1050p60_16_10_TIMING\ + {HDMI_VFRMT_1680x1050p60_16_10, 1680, 48, 32, 80, false, \ + 1050, 3, 6, 21, true, 119000, 60000, false, true, HDMI_RES_AR_16_10} +#define HDMI_VFRMT_1600x1200p60_4_3_TIMING\ + {HDMI_VFRMT_1600x1200p60_4_3, 1600, 64, 192, 304, false, \ + 1200, 1, 3, 46, false, 162000, 60000, false, true, HDMI_RES_AR_4_3} +#define HDMI_VFRMT_1920x1200p60_16_10_TIMING\ + {HDMI_VFRMT_1920x1200p60_16_10, 1920, 48, 32, 80, false,\ + 1200, 3, 6, 26, true, 154000, 60000, false, true, HDMI_RES_AR_16_10} +#define HDMI_VFRMT_1366x768p60_16_10_TIMING\ + {HDMI_VFRMT_1366x768p60_16_10, 1366, 70, 143, 213, false,\ + 768, 3, 3, 24, false, 85500, 60000, false, true, HDMI_RES_AR_16_10} +#define HDMI_VFRMT_1280x800p60_16_10_TIMING\ + {HDMI_VFRMT_1280x800p60_16_10, 1280, 72, 128, 200, true,\ + 800, 3, 6, 22, false, 83500, 60000, false, true, HDMI_RES_AR_16_10} #define MSM_HDMI_MODES_SET_TIMING(LUT, MODE) do { \ struct msm_hdmi_mode_timing_info mode = MODE##_TIMING; \ LUT[MODE] = mode;\ } while (0) -static inline void MSM_HDMI_MODES_INIT_TIMINGS( - struct msm_hdmi_mode_timing_info *lut) -{ - int i; - - for (i = 0; i < HDMI_VFRMT_MAX; i++) { - struct msm_hdmi_mode_timing_info mode = VFRMT_NOT_SUPPORTED(i); - lut[i] = mode; - } -} +#define MSM_HDMI_MODES_INIT_TIMINGS(__lut) \ +do { \ + unsigned int i; \ + for (i = 0; i < HDMI_VFRMT_MAX; i++) { \ + struct msm_hdmi_mode_timing_info mode = \ + VFRMT_NOT_SUPPORTED(i); \ + (__lut)[i] = mode; \ + } \ +} while (0) -static inline void MSM_HDMI_MODES_SET_SUPP_TIMINGS( - struct msm_hdmi_mode_timing_info *lut, int type) -{ - if (type & MSM_HDMI_MODES_CEA) { - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_640x480p60_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_720x480p60_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_720x480p60_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1280x720p60_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080i60_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1440x480i60_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1440x480i60_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080p60_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_720x576p50_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_720x576p50_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1280x720p50_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1440x576i50_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1440x576i50_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080p50_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080p24_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080p25_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1920x1080p30_16_9); - } - - if (type & MSM_HDMI_MODES_XTND) { - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_3840x2160p30_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_3840x2160p25_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_3840x2160p24_16_9); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_4096x2160p24_16_9); - } - - if (type & MSM_HDMI_MODES_DVI) { - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1024x768p60_4_3); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_1280x1024p60_5_4); - MSM_HDMI_MODES_SET_TIMING(lut, HDMI_VFRMT_2560x1600p60_16_9); - } -} +#define MSM_HDMI_MODES_SET_SUPP_TIMINGS(__lut, __type) \ +do { \ + if (__type & MSM_HDMI_MODES_CEA) { \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_640x480p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_720x480p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_720x480p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1280x720p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080i60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1440x480i60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1440x480i60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_720x576p50_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_720x576p50_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1280x720p50_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1440x576i50_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1440x576i50_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080p50_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080p24_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080p25_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1080p30_16_9); \ + } \ + if (__type & MSM_HDMI_MODES_XTND) { \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_3840x2160p30_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_3840x2160p25_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_3840x2160p24_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_4096x2160p24_16_9); \ + } \ + if (__type & MSM_HDMI_MODES_DVI) { \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1024x768p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1280x1024p60_5_4); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_2560x1600p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_800x600p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_848x480p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1280x960p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1360x768p60_16_9); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1440x900p60_16_10); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1400x1050p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1680x1050p60_16_10); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1600x1200p60_4_3); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1920x1200p60_16_10); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1366x768p60_16_10); \ + MSM_HDMI_MODES_SET_TIMING(__lut, \ + HDMI_VFRMT_1280x800p60_16_10); \ + } \ +} while (0) #define MSM_HDMI_MODES_GET_DETAILS(mode, MODE) do { \ struct msm_hdmi_mode_timing_info info = MODE##_TIMING; \ *mode = info; \ } while (0) -static inline int msm_hdmi_get_timing_info( - struct msm_hdmi_mode_timing_info *mode, int id) -{ - int ret = 0; - - switch (id) { - case HDMI_VFRMT_640x480p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_640x480p60_4_3); - break; - case HDMI_VFRMT_720x480p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_720x480p60_4_3); - break; - case HDMI_VFRMT_720x480p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_720x480p60_16_9); - break; - case HDMI_VFRMT_1280x720p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1280x720p60_16_9); - break; - case HDMI_VFRMT_1920x1080i60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080i60_16_9); - break; - case HDMI_VFRMT_1440x480i60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1440x480i60_4_3); - break; - case HDMI_VFRMT_1440x480i60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1440x480i60_16_9); - break; - case HDMI_VFRMT_1920x1080p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080p60_16_9); - break; - case HDMI_VFRMT_720x576p50_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_720x576p50_4_3); - break; - case HDMI_VFRMT_720x576p50_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_720x576p50_16_9); - break; - case HDMI_VFRMT_1280x720p50_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1280x720p50_16_9); - break; - case HDMI_VFRMT_1440x576i50_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1440x576i50_4_3); - break; - case HDMI_VFRMT_1440x576i50_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1440x576i50_16_9); - break; - case HDMI_VFRMT_1920x1080p50_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080p50_16_9); - break; - case HDMI_VFRMT_1920x1080p24_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080p24_16_9); - break; - case HDMI_VFRMT_1920x1080p25_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080p25_16_9); - break; - case HDMI_VFRMT_1920x1080p30_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1080p30_16_9); - break; - case HDMI_VFRMT_3840x2160p30_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_3840x2160p30_16_9); - break; - case HDMI_VFRMT_3840x2160p25_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_3840x2160p25_16_9); - break; - case HDMI_VFRMT_3840x2160p24_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_3840x2160p24_16_9); - break; - case HDMI_VFRMT_4096x2160p24_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_4096x2160p24_16_9); - break; - case HDMI_VFRMT_1024x768p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1024x768p60_4_3); - break; - case HDMI_VFRMT_1280x1024p60_5_4: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1280x1024p60_5_4); - break; - case HDMI_VFRMT_2560x1600p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_2560x1600p60_16_9); - break; - case HDMI_VFRMT_800x600p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_800x600p60_4_3); - break; - case HDMI_VFRMT_848x480p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_848x480p60_16_9); - break; - case HDMI_VFRMT_1280x960p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1280x960p60_4_3); - break; - case HDMI_VFRMT_1360x768p60_16_9: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1360x768p60_16_9); - break; - case HDMI_VFRMT_1440x900p60_16_10: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1440x900p60_16_10); - break; - case HDMI_VFRMT_1400x1050p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1400x1050p60_4_3); - break; - case HDMI_VFRMT_1680x1050p60_16_10: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1680x1050p60_16_10); - break; - case HDMI_VFRMT_1600x1200p60_4_3: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1600x1200p60_4_3); - break; - case HDMI_VFRMT_1920x1200p60_16_10: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1920x1200p60_16_10); - break; - case HDMI_VFRMT_1366x768p60_16_10: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1366x768p60_16_10); - break; - case HDMI_VFRMT_1280x800p60_16_10: - MSM_HDMI_MODES_GET_DETAILS(mode, HDMI_VFRMT_1280x800p60_16_10); - break; - default: - ret = -EINVAL; - } - - return ret; -} static inline int hdmi_tx_get_v_total(const struct msm_hdmi_mode_timing_info *t) { |
