@@ -2939,16 +2939,33 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
2939
2939
return false;
2940
2940
}
2941
2941
2942
+ static u16 intel_sdvo_filter_output_flags (u16 flags )
2943
+ {
2944
+ flags &= SDVO_OUTPUT_MASK ;
2945
+
2946
+ /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/
2947
+ if (!(flags & SDVO_OUTPUT_TMDS0 ))
2948
+ flags &= ~SDVO_OUTPUT_TMDS1 ;
2949
+
2950
+ if (!(flags & SDVO_OUTPUT_RGB0 ))
2951
+ flags &= ~SDVO_OUTPUT_RGB1 ;
2952
+
2953
+ if (!(flags & SDVO_OUTPUT_LVDS0 ))
2954
+ flags &= ~SDVO_OUTPUT_LVDS1 ;
2955
+
2956
+ return flags ;
2957
+ }
2958
+
2942
2959
static bool
2943
2960
intel_sdvo_output_setup (struct intel_sdvo * intel_sdvo , u16 flags )
2944
2961
{
2945
- /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/
2962
+ flags = intel_sdvo_filter_output_flags ( flags );
2946
2963
2947
2964
if (flags & SDVO_OUTPUT_TMDS0 )
2948
2965
if (!intel_sdvo_dvi_init (intel_sdvo , 0 ))
2949
2966
return false;
2950
2967
2951
- if (( flags & SDVO_TMDS_MASK ) == SDVO_TMDS_MASK )
2968
+ if (flags & SDVO_OUTPUT_TMDS1 )
2952
2969
if (!intel_sdvo_dvi_init (intel_sdvo , 1 ))
2953
2970
return false;
2954
2971
@@ -2969,19 +2986,19 @@ intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, u16 flags)
2969
2986
if (!intel_sdvo_analog_init (intel_sdvo , 0 ))
2970
2987
return false;
2971
2988
2972
- if (( flags & SDVO_RGB_MASK ) == SDVO_RGB_MASK )
2989
+ if (flags & SDVO_OUTPUT_RGB1 )
2973
2990
if (!intel_sdvo_analog_init (intel_sdvo , 1 ))
2974
2991
return false;
2975
2992
2976
2993
if (flags & SDVO_OUTPUT_LVDS0 )
2977
2994
if (!intel_sdvo_lvds_init (intel_sdvo , 0 ))
2978
2995
return false;
2979
2996
2980
- if (( flags & SDVO_LVDS_MASK ) == SDVO_LVDS_MASK )
2997
+ if (flags & SDVO_OUTPUT_LVDS1 )
2981
2998
if (!intel_sdvo_lvds_init (intel_sdvo , 1 ))
2982
2999
return false;
2983
3000
2984
- if (( flags & SDVO_OUTPUT_MASK ) == 0 ) {
3001
+ if (flags == 0 ) {
2985
3002
unsigned char bytes [2 ];
2986
3003
2987
3004
intel_sdvo -> controlled_output = 0 ;
0 commit comments