@@ -1307,171 +1307,194 @@ intel_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
1307
1307
return ret ;
1308
1308
}
1309
1309
1310
- static enum port intel_aux_port (struct drm_i915_private * dev_priv ,
1311
- enum port port )
1310
+ static enum aux_ch intel_aux_ch (struct intel_dp * intel_dp )
1312
1311
{
1312
+ struct intel_encoder * encoder = & dp_to_dig_port (intel_dp )-> base ;
1313
+ struct drm_i915_private * dev_priv = to_i915 (encoder -> base .dev );
1314
+ enum port port = encoder -> port ;
1313
1315
const struct ddi_vbt_port_info * info =
1314
1316
& dev_priv -> vbt .ddi_port_info [port ];
1315
- enum port aux_port ;
1317
+ enum aux_ch aux_ch ;
1316
1318
1317
1319
if (!info -> alternate_aux_channel ) {
1320
+ aux_ch = (enum aux_ch ) port ;
1321
+
1318
1322
DRM_DEBUG_KMS ("using AUX %c for port %c (platform default)\n" ,
1319
- port_name ( port ), port_name (port ));
1320
- return port ;
1323
+ aux_ch_name ( aux_ch ), port_name (port ));
1324
+ return aux_ch ;
1321
1325
}
1322
1326
1323
1327
switch (info -> alternate_aux_channel ) {
1324
1328
case DP_AUX_A :
1325
- aux_port = PORT_A ;
1329
+ aux_ch = AUX_CH_A ;
1326
1330
break ;
1327
1331
case DP_AUX_B :
1328
- aux_port = PORT_B ;
1332
+ aux_ch = AUX_CH_B ;
1329
1333
break ;
1330
1334
case DP_AUX_C :
1331
- aux_port = PORT_C ;
1335
+ aux_ch = AUX_CH_C ;
1332
1336
break ;
1333
1337
case DP_AUX_D :
1334
- aux_port = PORT_D ;
1338
+ aux_ch = AUX_CH_D ;
1335
1339
break ;
1336
1340
case DP_AUX_F :
1337
- aux_port = PORT_F ;
1341
+ aux_ch = AUX_CH_F ;
1338
1342
break ;
1339
1343
default :
1340
1344
MISSING_CASE (info -> alternate_aux_channel );
1341
- aux_port = PORT_A ;
1345
+ aux_ch = AUX_CH_A ;
1342
1346
break ;
1343
1347
}
1344
1348
1345
1349
DRM_DEBUG_KMS ("using AUX %c for port %c (VBT)\n" ,
1346
- port_name ( aux_port ), port_name (port ));
1350
+ aux_ch_name ( aux_ch ), port_name (port ));
1347
1351
1348
- return aux_port ;
1352
+ return aux_ch ;
1353
+ }
1354
+
1355
+ static enum intel_display_power_domain
1356
+ intel_aux_power_domain (struct intel_dp * intel_dp )
1357
+ {
1358
+ switch (intel_dp -> aux_ch ) {
1359
+ case AUX_CH_A :
1360
+ return POWER_DOMAIN_AUX_A ;
1361
+ case AUX_CH_B :
1362
+ return POWER_DOMAIN_AUX_B ;
1363
+ case AUX_CH_C :
1364
+ return POWER_DOMAIN_AUX_C ;
1365
+ case AUX_CH_D :
1366
+ return POWER_DOMAIN_AUX_D ;
1367
+ case AUX_CH_F :
1368
+ return POWER_DOMAIN_AUX_F ;
1369
+ default :
1370
+ MISSING_CASE (intel_dp -> aux_ch );
1371
+ return POWER_DOMAIN_AUX_A ;
1372
+ }
1349
1373
}
1350
1374
1351
1375
static i915_reg_t g4x_aux_ctl_reg (struct drm_i915_private * dev_priv ,
1352
- enum port port )
1376
+ enum aux_ch aux_ch )
1353
1377
{
1354
- switch (port ) {
1355
- case PORT_B :
1356
- case PORT_C :
1357
- case PORT_D :
1358
- return DP_AUX_CH_CTL (port );
1378
+ switch (aux_ch ) {
1379
+ case AUX_CH_B :
1380
+ case AUX_CH_C :
1381
+ case AUX_CH_D :
1382
+ return DP_AUX_CH_CTL (aux_ch );
1359
1383
default :
1360
- MISSING_CASE (port );
1361
- return DP_AUX_CH_CTL (PORT_B );
1384
+ MISSING_CASE (aux_ch );
1385
+ return DP_AUX_CH_CTL (AUX_CH_B );
1362
1386
}
1363
1387
}
1364
1388
1365
1389
static i915_reg_t g4x_aux_data_reg (struct drm_i915_private * dev_priv ,
1366
- enum port port , int index )
1390
+ enum aux_ch aux_ch , int index )
1367
1391
{
1368
- switch (port ) {
1369
- case PORT_B :
1370
- case PORT_C :
1371
- case PORT_D :
1372
- return DP_AUX_CH_DATA (port , index );
1392
+ switch (aux_ch ) {
1393
+ case AUX_CH_B :
1394
+ case AUX_CH_C :
1395
+ case AUX_CH_D :
1396
+ return DP_AUX_CH_DATA (aux_ch , index );
1373
1397
default :
1374
- MISSING_CASE (port );
1375
- return DP_AUX_CH_DATA (PORT_B , index );
1398
+ MISSING_CASE (aux_ch );
1399
+ return DP_AUX_CH_DATA (AUX_CH_B , index );
1376
1400
}
1377
1401
}
1378
1402
1379
1403
static i915_reg_t ilk_aux_ctl_reg (struct drm_i915_private * dev_priv ,
1380
- enum port port )
1381
- {
1382
- switch (port ) {
1383
- case PORT_A :
1384
- return DP_AUX_CH_CTL (port );
1385
- case PORT_B :
1386
- case PORT_C :
1387
- case PORT_D :
1388
- return PCH_DP_AUX_CH_CTL (port );
1404
+ enum aux_ch aux_ch )
1405
+ {
1406
+ switch (aux_ch ) {
1407
+ case AUX_CH_A :
1408
+ return DP_AUX_CH_CTL (aux_ch );
1409
+ case AUX_CH_B :
1410
+ case AUX_CH_C :
1411
+ case AUX_CH_D :
1412
+ return PCH_DP_AUX_CH_CTL (aux_ch );
1389
1413
default :
1390
- MISSING_CASE (port );
1391
- return DP_AUX_CH_CTL (PORT_A );
1414
+ MISSING_CASE (aux_ch );
1415
+ return DP_AUX_CH_CTL (AUX_CH_A );
1392
1416
}
1393
1417
}
1394
1418
1395
1419
static i915_reg_t ilk_aux_data_reg (struct drm_i915_private * dev_priv ,
1396
- enum port port , int index )
1397
- {
1398
- switch (port ) {
1399
- case PORT_A :
1400
- return DP_AUX_CH_DATA (port , index );
1401
- case PORT_B :
1402
- case PORT_C :
1403
- case PORT_D :
1404
- return PCH_DP_AUX_CH_DATA (port , index );
1420
+ enum aux_ch aux_ch , int index )
1421
+ {
1422
+ switch (aux_ch ) {
1423
+ case AUX_CH_A :
1424
+ return DP_AUX_CH_DATA (aux_ch , index );
1425
+ case AUX_CH_B :
1426
+ case AUX_CH_C :
1427
+ case AUX_CH_D :
1428
+ return PCH_DP_AUX_CH_DATA (aux_ch , index );
1405
1429
default :
1406
- MISSING_CASE (port );
1407
- return DP_AUX_CH_DATA (PORT_A , index );
1430
+ MISSING_CASE (aux_ch );
1431
+ return DP_AUX_CH_DATA (AUX_CH_A , index );
1408
1432
}
1409
1433
}
1410
1434
1411
1435
static i915_reg_t skl_aux_ctl_reg (struct drm_i915_private * dev_priv ,
1412
- enum port port )
1413
- {
1414
- switch (port ) {
1415
- case PORT_A :
1416
- case PORT_B :
1417
- case PORT_C :
1418
- case PORT_D :
1419
- case PORT_F :
1420
- return DP_AUX_CH_CTL (port );
1436
+ enum aux_ch aux_ch )
1437
+ {
1438
+ switch (aux_ch ) {
1439
+ case AUX_CH_A :
1440
+ case AUX_CH_B :
1441
+ case AUX_CH_C :
1442
+ case AUX_CH_D :
1443
+ case AUX_CH_F :
1444
+ return DP_AUX_CH_CTL (aux_ch );
1421
1445
default :
1422
- MISSING_CASE (port );
1423
- return DP_AUX_CH_CTL (PORT_A );
1446
+ MISSING_CASE (aux_ch );
1447
+ return DP_AUX_CH_CTL (AUX_CH_A );
1424
1448
}
1425
1449
}
1426
1450
1427
1451
static i915_reg_t skl_aux_data_reg (struct drm_i915_private * dev_priv ,
1428
- enum port port , int index )
1429
- {
1430
- switch (port ) {
1431
- case PORT_A :
1432
- case PORT_B :
1433
- case PORT_C :
1434
- case PORT_D :
1435
- case PORT_F :
1436
- return DP_AUX_CH_DATA (port , index );
1452
+ enum aux_ch aux_ch , int index )
1453
+ {
1454
+ switch (aux_ch ) {
1455
+ case AUX_CH_A :
1456
+ case AUX_CH_B :
1457
+ case AUX_CH_C :
1458
+ case AUX_CH_D :
1459
+ case AUX_CH_F :
1460
+ return DP_AUX_CH_DATA (aux_ch , index );
1437
1461
default :
1438
- MISSING_CASE (port );
1439
- return DP_AUX_CH_DATA (PORT_A , index );
1462
+ MISSING_CASE (aux_ch );
1463
+ return DP_AUX_CH_DATA (AUX_CH_A , index );
1440
1464
}
1441
1465
}
1442
1466
1443
1467
static i915_reg_t intel_aux_ctl_reg (struct drm_i915_private * dev_priv ,
1444
- enum port port )
1468
+ enum aux_ch aux_ch )
1445
1469
{
1446
1470
if (INTEL_GEN (dev_priv ) >= 9 )
1447
- return skl_aux_ctl_reg (dev_priv , port );
1471
+ return skl_aux_ctl_reg (dev_priv , aux_ch );
1448
1472
else if (HAS_PCH_SPLIT (dev_priv ))
1449
- return ilk_aux_ctl_reg (dev_priv , port );
1473
+ return ilk_aux_ctl_reg (dev_priv , aux_ch );
1450
1474
else
1451
- return g4x_aux_ctl_reg (dev_priv , port );
1475
+ return g4x_aux_ctl_reg (dev_priv , aux_ch );
1452
1476
}
1453
1477
1454
1478
static i915_reg_t intel_aux_data_reg (struct drm_i915_private * dev_priv ,
1455
- enum port port , int index )
1479
+ enum aux_ch aux_ch , int index )
1456
1480
{
1457
1481
if (INTEL_GEN (dev_priv ) >= 9 )
1458
- return skl_aux_data_reg (dev_priv , port , index );
1482
+ return skl_aux_data_reg (dev_priv , aux_ch , index );
1459
1483
else if (HAS_PCH_SPLIT (dev_priv ))
1460
- return ilk_aux_data_reg (dev_priv , port , index );
1484
+ return ilk_aux_data_reg (dev_priv , aux_ch , index );
1461
1485
else
1462
- return g4x_aux_data_reg (dev_priv , port , index );
1486
+ return g4x_aux_data_reg (dev_priv , aux_ch , index );
1463
1487
}
1464
1488
1465
1489
static void intel_aux_reg_init (struct intel_dp * intel_dp )
1466
1490
{
1467
1491
struct drm_i915_private * dev_priv = to_i915 (intel_dp_to_dev (intel_dp ));
1468
- enum port port = intel_aux_port (dev_priv ,
1469
- dp_to_dig_port (intel_dp )-> base .port );
1492
+ enum aux_ch aux_ch = intel_dp -> aux_ch ;
1470
1493
int i ;
1471
1494
1472
- intel_dp -> aux_ch_ctl_reg = intel_aux_ctl_reg (dev_priv , port );
1495
+ intel_dp -> aux_ch_ctl_reg = intel_aux_ctl_reg (dev_priv , aux_ch );
1473
1496
for (i = 0 ; i < ARRAY_SIZE (intel_dp -> aux_ch_data_reg ); i ++ )
1474
- intel_dp -> aux_ch_data_reg [i ] = intel_aux_data_reg (dev_priv , port , i );
1497
+ intel_dp -> aux_ch_data_reg [i ] = intel_aux_data_reg (dev_priv , aux_ch , i );
1475
1498
}
1476
1499
1477
1500
static void
@@ -1483,14 +1506,17 @@ intel_dp_aux_fini(struct intel_dp *intel_dp)
1483
1506
static void
1484
1507
intel_dp_aux_init (struct intel_dp * intel_dp )
1485
1508
{
1486
- struct intel_digital_port * intel_dig_port = dp_to_dig_port (intel_dp );
1487
- enum port port = intel_dig_port -> base .port ;
1509
+ struct intel_encoder * encoder = & dp_to_dig_port (intel_dp )-> base ;
1510
+
1511
+ intel_dp -> aux_ch = intel_aux_ch (intel_dp );
1512
+ intel_dp -> aux_power_domain = intel_aux_power_domain (intel_dp );
1488
1513
1489
1514
intel_aux_reg_init (intel_dp );
1490
1515
drm_dp_aux_init (& intel_dp -> aux );
1491
1516
1492
1517
/* Failure to allocate our preferred name is not critical */
1493
- intel_dp -> aux .name = kasprintf (GFP_KERNEL , "DPDDC-%c" , port_name (port ));
1518
+ intel_dp -> aux .name = kasprintf (GFP_KERNEL , "DPDDC-%c" ,
1519
+ port_name (encoder -> port ));
1494
1520
intel_dp -> aux .transfer = intel_dp_aux_transfer ;
1495
1521
}
1496
1522
@@ -6009,38 +6035,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
6009
6035
return false;
6010
6036
}
6011
6037
6012
- /* Set up the hotplug pin and aux power domain. */
6013
- static void
6014
- intel_dp_init_connector_port_info (struct intel_digital_port * intel_dig_port )
6015
- {
6016
- struct intel_encoder * encoder = & intel_dig_port -> base ;
6017
- struct intel_dp * intel_dp = & intel_dig_port -> dp ;
6018
- struct intel_encoder * intel_encoder = & intel_dig_port -> base ;
6019
- struct drm_i915_private * dev_priv = to_i915 (intel_encoder -> base .dev );
6020
-
6021
- encoder -> hpd_pin = intel_hpd_pin_default (dev_priv , encoder -> port );
6022
-
6023
- switch (intel_aux_port (dev_priv , encoder -> port )) {
6024
- case PORT_A :
6025
- intel_dp -> aux_power_domain = POWER_DOMAIN_AUX_A ;
6026
- break ;
6027
- case PORT_B :
6028
- intel_dp -> aux_power_domain = POWER_DOMAIN_AUX_B ;
6029
- break ;
6030
- case PORT_C :
6031
- intel_dp -> aux_power_domain = POWER_DOMAIN_AUX_C ;
6032
- break ;
6033
- case PORT_D :
6034
- intel_dp -> aux_power_domain = POWER_DOMAIN_AUX_D ;
6035
- break ;
6036
- case PORT_F :
6037
- intel_dp -> aux_power_domain = POWER_DOMAIN_AUX_F ;
6038
- break ;
6039
- default :
6040
- MISSING_CASE (encoder -> port );
6041
- }
6042
- }
6043
-
6044
6038
static void intel_dp_modeset_retry_work_fn (struct work_struct * work )
6045
6039
{
6046
6040
struct intel_connector * intel_connector ;
@@ -6146,7 +6140,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
6146
6140
connector -> interlace_allowed = true;
6147
6141
connector -> doublescan_allowed = 0 ;
6148
6142
6149
- intel_dp_init_connector_port_info ( intel_dig_port );
6143
+ intel_encoder -> hpd_pin = intel_hpd_pin_default ( dev_priv , port );
6150
6144
6151
6145
intel_dp_aux_init (intel_dp );
6152
6146
0 commit comments