@@ -7411,6 +7411,26 @@ static int i945_get_display_clock_speed(struct drm_i915_private *dev_priv)
7411
7411
return 400000 ;
7412
7412
}
7413
7413
7414
+ static int i945gm_get_display_clock_speed (struct drm_i915_private * dev_priv )
7415
+ {
7416
+ struct pci_dev * pdev = dev_priv -> drm .pdev ;
7417
+ u16 gcfgc = 0 ;
7418
+
7419
+ pci_read_config_word (pdev , GCFGC , & gcfgc );
7420
+
7421
+ if (gcfgc & GC_LOW_FREQUENCY_ENABLE )
7422
+ return 133333 ;
7423
+ else {
7424
+ switch (gcfgc & GC_DISPLAY_CLOCK_MASK ) {
7425
+ case GC_DISPLAY_CLOCK_333_320_MHZ :
7426
+ return 320000 ;
7427
+ default :
7428
+ case GC_DISPLAY_CLOCK_190_200_MHZ :
7429
+ return 200000 ;
7430
+ }
7431
+ }
7432
+ }
7433
+
7414
7434
static int i915_get_display_clock_speed (struct drm_i915_private * dev_priv )
7415
7435
{
7416
7436
return 333333 ;
@@ -7457,7 +7477,7 @@ static int i915gm_get_display_clock_speed(struct drm_i915_private *dev_priv)
7457
7477
return 133333 ;
7458
7478
else {
7459
7479
switch (gcfgc & GC_DISPLAY_CLOCK_MASK ) {
7460
- case GC_DISPLAY_CLOCK_333_MHZ :
7480
+ case GC_DISPLAY_CLOCK_333_320_MHZ :
7461
7481
return 333333 ;
7462
7482
default :
7463
7483
case GC_DISPLAY_CLOCK_190_200_MHZ :
@@ -16268,9 +16288,12 @@ void intel_init_display_hooks(struct drm_i915_private *dev_priv)
16268
16288
else if (IS_I915G (dev_priv ))
16269
16289
dev_priv -> display .get_display_clock_speed =
16270
16290
i915_get_display_clock_speed ;
16271
- else if (IS_I945GM ( dev_priv ) || IS_I845G (dev_priv ))
16291
+ else if (IS_I845G (dev_priv ))
16272
16292
dev_priv -> display .get_display_clock_speed =
16273
16293
i9xx_misc_get_display_clock_speed ;
16294
+ else if (IS_I945GM (dev_priv ))
16295
+ dev_priv -> display .get_display_clock_speed =
16296
+ i945gm_get_display_clock_speed ;
16274
16297
else if (IS_I915GM (dev_priv ))
16275
16298
dev_priv -> display .get_display_clock_speed =
16276
16299
i915gm_get_display_clock_speed ;
0 commit comments