@@ -1453,6 +1453,18 @@ static u8 tgl_calc_voltage_level(int cdclk)
1453
1453
return 0 ;
1454
1454
}
1455
1455
1456
+ static u8 rplu_calc_voltage_level (int cdclk )
1457
+ {
1458
+ if (cdclk > 556800 )
1459
+ return 3 ;
1460
+ else if (cdclk > 480000 )
1461
+ return 2 ;
1462
+ else if (cdclk > 312000 )
1463
+ return 1 ;
1464
+ else
1465
+ return 0 ;
1466
+ }
1467
+
1456
1468
static void icl_readout_refclk (struct drm_i915_private * dev_priv ,
1457
1469
struct intel_cdclk_config * cdclk_config )
1458
1470
{
@@ -3242,6 +3254,13 @@ static const struct intel_cdclk_funcs mtl_cdclk_funcs = {
3242
3254
.calc_voltage_level = tgl_calc_voltage_level ,
3243
3255
};
3244
3256
3257
+ static const struct intel_cdclk_funcs rplu_cdclk_funcs = {
3258
+ .get_cdclk = bxt_get_cdclk ,
3259
+ .set_cdclk = bxt_set_cdclk ,
3260
+ .modeset_calc_cdclk = bxt_modeset_calc_cdclk ,
3261
+ .calc_voltage_level = rplu_calc_voltage_level ,
3262
+ };
3263
+
3245
3264
static const struct intel_cdclk_funcs tgl_cdclk_funcs = {
3246
3265
.get_cdclk = bxt_get_cdclk ,
3247
3266
.set_cdclk = bxt_set_cdclk ,
@@ -3384,14 +3403,17 @@ void intel_init_cdclk_hooks(struct drm_i915_private *dev_priv)
3384
3403
dev_priv -> display .funcs .cdclk = & tgl_cdclk_funcs ;
3385
3404
dev_priv -> display .cdclk .table = dg2_cdclk_table ;
3386
3405
} else if (IS_ALDERLAKE_P (dev_priv )) {
3387
- dev_priv -> display .funcs .cdclk = & tgl_cdclk_funcs ;
3388
3406
/* Wa_22011320316:adl-p[a0] */
3389
- if (IS_ADLP_DISPLAY_STEP (dev_priv , STEP_A0 , STEP_B0 ))
3407
+ if (IS_ADLP_DISPLAY_STEP (dev_priv , STEP_A0 , STEP_B0 )) {
3390
3408
dev_priv -> display .cdclk .table = adlp_a_step_cdclk_table ;
3391
- else if (IS_ADLP_RPLU (dev_priv ))
3409
+ dev_priv -> display .funcs .cdclk = & tgl_cdclk_funcs ;
3410
+ } else if (IS_ADLP_RPLU (dev_priv )) {
3392
3411
dev_priv -> display .cdclk .table = rplu_cdclk_table ;
3393
- else
3412
+ dev_priv -> display .funcs .cdclk = & rplu_cdclk_funcs ;
3413
+ } else {
3394
3414
dev_priv -> display .cdclk .table = adlp_cdclk_table ;
3415
+ dev_priv -> display .funcs .cdclk = & tgl_cdclk_funcs ;
3416
+ }
3395
3417
} else if (IS_ROCKETLAKE (dev_priv )) {
3396
3418
dev_priv -> display .funcs .cdclk = & tgl_cdclk_funcs ;
3397
3419
dev_priv -> display .cdclk .table = rkl_cdclk_table ;
0 commit comments