@@ -2466,6 +2466,22 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
2466
2466
dvo_port );
2467
2467
}
2468
2468
2469
+ static enum port
2470
+ dsi_dvo_port_to_port (struct drm_i915_private * i915 , u8 dvo_port )
2471
+ {
2472
+ switch (dvo_port ) {
2473
+ case DVO_PORT_MIPIA :
2474
+ return PORT_A ;
2475
+ case DVO_PORT_MIPIC :
2476
+ if (DISPLAY_VER (i915 ) >= 11 )
2477
+ return PORT_B ;
2478
+ else
2479
+ return PORT_C ;
2480
+ default :
2481
+ return PORT_NONE ;
2482
+ }
2483
+ }
2484
+
2469
2485
static int parse_bdb_230_dp_max_link_rate (const int vbt_max_link_rate )
2470
2486
{
2471
2487
switch (vbt_max_link_rate ) {
@@ -3414,19 +3430,16 @@ bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
3414
3430
3415
3431
dvo_port = child -> dvo_port ;
3416
3432
3417
- if (dvo_port == DVO_PORT_MIPIA ||
3418
- (dvo_port == DVO_PORT_MIPIB && DISPLAY_VER (i915 ) >= 11 ) ||
3419
- (dvo_port == DVO_PORT_MIPIC && DISPLAY_VER (i915 ) < 11 )) {
3420
- if (port )
3421
- * port = dvo_port - DVO_PORT_MIPIA ;
3422
- return true;
3423
- } else if (dvo_port == DVO_PORT_MIPIB ||
3424
- dvo_port == DVO_PORT_MIPIC ||
3425
- dvo_port == DVO_PORT_MIPID ) {
3433
+ if (dsi_dvo_port_to_port (i915 , dvo_port ) == PORT_NONE ) {
3426
3434
drm_dbg_kms (& i915 -> drm ,
3427
3435
"VBT has unsupported DSI port %c\n" ,
3428
3436
port_name (dvo_port - DVO_PORT_MIPIA ));
3437
+ continue ;
3429
3438
}
3439
+
3440
+ if (port )
3441
+ * port = dsi_dvo_port_to_port (i915 , dvo_port );
3442
+ return true;
3430
3443
}
3431
3444
3432
3445
return false;
@@ -3511,7 +3524,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
3511
3524
if (!(child -> device_type & DEVICE_TYPE_MIPI_OUTPUT ))
3512
3525
continue ;
3513
3526
3514
- if (child -> dvo_port - DVO_PORT_MIPIA == encoder -> port ) {
3527
+ if (dsi_dvo_port_to_port ( i915 , child -> dvo_port ) == encoder -> port ) {
3515
3528
if (!devdata -> dsc )
3516
3529
return false;
3517
3530
0 commit comments