@@ -4163,6 +4163,30 @@ static int i9xx_misc_get_display_clock_speed(struct drm_device *dev)
4163
4163
return 200000 ;
4164
4164
}
4165
4165
4166
+ static int pnv_get_display_clock_speed (struct drm_device * dev )
4167
+ {
4168
+ u16 gcfgc = 0 ;
4169
+
4170
+ pci_read_config_word (dev -> pdev , GCFGC , & gcfgc );
4171
+
4172
+ switch (gcfgc & GC_DISPLAY_CLOCK_MASK ) {
4173
+ case GC_DISPLAY_CLOCK_267_MHZ_PNV :
4174
+ return 267000 ;
4175
+ case GC_DISPLAY_CLOCK_333_MHZ_PNV :
4176
+ return 333000 ;
4177
+ case GC_DISPLAY_CLOCK_444_MHZ_PNV :
4178
+ return 444000 ;
4179
+ case GC_DISPLAY_CLOCK_200_MHZ_PNV :
4180
+ return 200000 ;
4181
+ default :
4182
+ DRM_ERROR ("Unknown pnv display core clock 0x%04x\n" , gcfgc );
4183
+ case GC_DISPLAY_CLOCK_133_MHZ_PNV :
4184
+ return 133000 ;
4185
+ case GC_DISPLAY_CLOCK_167_MHZ_PNV :
4186
+ return 167000 ;
4187
+ }
4188
+ }
4189
+
4166
4190
static int i915gm_get_display_clock_speed (struct drm_device * dev )
4167
4191
{
4168
4192
u16 gcfgc = 0 ;
@@ -9605,9 +9629,12 @@ static void intel_init_display(struct drm_device *dev)
9605
9629
else if (IS_I915G (dev ))
9606
9630
dev_priv -> display .get_display_clock_speed =
9607
9631
i915_get_display_clock_speed ;
9608
- else if (IS_I945GM (dev ) || IS_845G (dev ) || IS_PINEVIEW_M ( dev ) )
9632
+ else if (IS_I945GM (dev ) || IS_845G (dev ))
9609
9633
dev_priv -> display .get_display_clock_speed =
9610
9634
i9xx_misc_get_display_clock_speed ;
9635
+ else if (IS_PINEVIEW (dev ))
9636
+ dev_priv -> display .get_display_clock_speed =
9637
+ pnv_get_display_clock_speed ;
9611
9638
else if (IS_I915GM (dev ))
9612
9639
dev_priv -> display .get_display_clock_speed =
9613
9640
i915gm_get_display_clock_speed ;
0 commit comments