@@ -906,7 +906,7 @@ acpi_status pci_acpi_add_pm_notifier(struct acpi_device *dev,
906
906
* choose highest power _SxD or any lower power
907
907
*/
908
908
909
- static pci_power_t acpi_pci_choose_state (struct pci_dev * pdev )
909
+ pci_power_t acpi_pci_choose_state (struct pci_dev * pdev )
910
910
{
911
911
int acpi_state , d_max ;
912
912
@@ -965,22 +965,20 @@ int pci_dev_acpi_reset(struct pci_dev *dev, bool probe)
965
965
return 0 ;
966
966
}
967
967
968
- static bool acpi_pci_power_manageable (struct pci_dev * dev )
968
+ bool acpi_pci_power_manageable (struct pci_dev * dev )
969
969
{
970
970
struct acpi_device * adev = ACPI_COMPANION (& dev -> dev );
971
971
972
- if (!adev )
973
- return false;
974
- return acpi_device_power_manageable (adev );
972
+ return adev && acpi_device_power_manageable (adev );
975
973
}
976
974
977
- static bool acpi_pci_bridge_d3 (struct pci_dev * dev )
975
+ bool acpi_pci_bridge_d3 (struct pci_dev * dev )
978
976
{
979
977
const union acpi_object * obj ;
980
978
struct acpi_device * adev ;
981
979
struct pci_dev * rpdev ;
982
980
983
- if (!dev -> is_hotplug_bridge )
981
+ if (acpi_pci_disabled || !dev -> is_hotplug_bridge )
984
982
return false;
985
983
986
984
/* Assume D3 support if the bridge is power-manageable by ACPI. */
@@ -1008,7 +1006,7 @@ static bool acpi_pci_bridge_d3(struct pci_dev *dev)
1008
1006
return obj -> integer .value == 1 ;
1009
1007
}
1010
1008
1011
- static int acpi_pci_set_power_state (struct pci_dev * dev , pci_power_t state )
1009
+ int acpi_pci_set_power_state (struct pci_dev * dev , pci_power_t state )
1012
1010
{
1013
1011
struct acpi_device * adev = ACPI_COMPANION (& dev -> dev );
1014
1012
static const u8 state_conv [] = {
@@ -1046,7 +1044,7 @@ static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state)
1046
1044
return error ;
1047
1045
}
1048
1046
1049
- static pci_power_t acpi_pci_get_power_state (struct pci_dev * dev )
1047
+ pci_power_t acpi_pci_get_power_state (struct pci_dev * dev )
1050
1048
{
1051
1049
struct acpi_device * adev = ACPI_COMPANION (& dev -> dev );
1052
1050
static const pci_power_t state_conv [] = {
@@ -1068,7 +1066,7 @@ static pci_power_t acpi_pci_get_power_state(struct pci_dev *dev)
1068
1066
return state_conv [state ];
1069
1067
}
1070
1068
1071
- static void acpi_pci_refresh_power_state (struct pci_dev * dev )
1069
+ void acpi_pci_refresh_power_state (struct pci_dev * dev )
1072
1070
{
1073
1071
struct acpi_device * adev = ACPI_COMPANION (& dev -> dev );
1074
1072
@@ -1093,17 +1091,23 @@ static int acpi_pci_propagate_wakeup(struct pci_bus *bus, bool enable)
1093
1091
return 0 ;
1094
1092
}
1095
1093
1096
- static int acpi_pci_wakeup (struct pci_dev * dev , bool enable )
1094
+ int acpi_pci_wakeup (struct pci_dev * dev , bool enable )
1097
1095
{
1096
+ if (acpi_pci_disabled )
1097
+ return 0 ;
1098
+
1098
1099
if (acpi_pm_device_can_wakeup (& dev -> dev ))
1099
1100
return acpi_pm_set_device_wakeup (& dev -> dev , enable );
1100
1101
1101
1102
return acpi_pci_propagate_wakeup (dev -> bus , enable );
1102
1103
}
1103
1104
1104
- static bool acpi_pci_need_resume (struct pci_dev * dev )
1105
+ bool acpi_pci_need_resume (struct pci_dev * dev )
1105
1106
{
1106
- struct acpi_device * adev = ACPI_COMPANION (& dev -> dev );
1107
+ struct acpi_device * adev ;
1108
+
1109
+ if (acpi_pci_disabled )
1110
+ return false;
1107
1111
1108
1112
/*
1109
1113
* In some cases (eg. Samsung 305V4A) leaving a bridge in suspend over
@@ -1115,6 +1119,7 @@ static bool acpi_pci_need_resume(struct pci_dev *dev)
1115
1119
if (pci_is_bridge (dev ) && acpi_target_system_state () != ACPI_STATE_S0 )
1116
1120
return true;
1117
1121
1122
+ adev = ACPI_COMPANION (& dev -> dev );
1118
1123
if (!adev || !acpi_device_power_manageable (adev ))
1119
1124
return false;
1120
1125
@@ -1128,17 +1133,6 @@ static bool acpi_pci_need_resume(struct pci_dev *dev)
1128
1133
return !!adev -> power .flags .dsw_present ;
1129
1134
}
1130
1135
1131
- static const struct pci_platform_pm_ops acpi_pci_platform_pm = {
1132
- .bridge_d3 = acpi_pci_bridge_d3 ,
1133
- .is_manageable = acpi_pci_power_manageable ,
1134
- .set_state = acpi_pci_set_power_state ,
1135
- .get_state = acpi_pci_get_power_state ,
1136
- .refresh_state = acpi_pci_refresh_power_state ,
1137
- .choose_state = acpi_pci_choose_state ,
1138
- .set_wakeup = acpi_pci_wakeup ,
1139
- .need_resume = acpi_pci_need_resume ,
1140
- };
1141
-
1142
1136
void acpi_pci_add_bus (struct pci_bus * bus )
1143
1137
{
1144
1138
union acpi_object * obj ;
@@ -1356,13 +1350,9 @@ static void pci_acpi_set_external_facing(struct pci_dev *dev)
1356
1350
dev -> external_facing = 1 ;
1357
1351
}
1358
1352
1359
- static void pci_acpi_setup (struct device * dev )
1353
+ void pci_acpi_setup (struct device * dev , struct acpi_device * adev )
1360
1354
{
1361
1355
struct pci_dev * pci_dev = to_pci_dev (dev );
1362
- struct acpi_device * adev = ACPI_COMPANION (dev );
1363
-
1364
- if (!adev )
1365
- return ;
1366
1356
1367
1357
pci_acpi_optimize_delay (pci_dev , adev -> handle );
1368
1358
pci_acpi_set_external_facing (pci_dev );
@@ -1386,14 +1376,10 @@ static void pci_acpi_setup(struct device *dev)
1386
1376
acpi_device_power_add_dependent (adev , dev );
1387
1377
}
1388
1378
1389
- static void pci_acpi_cleanup (struct device * dev )
1379
+ void pci_acpi_cleanup (struct device * dev , struct acpi_device * adev )
1390
1380
{
1391
- struct acpi_device * adev = ACPI_COMPANION (dev );
1392
1381
struct pci_dev * pci_dev = to_pci_dev (dev );
1393
1382
1394
- if (!adev )
1395
- return ;
1396
-
1397
1383
pci_acpi_remove_edr_notifier (pci_dev );
1398
1384
pci_acpi_remove_pm_notifier (adev );
1399
1385
if (adev -> wakeup .flags .valid ) {
@@ -1405,20 +1391,6 @@ static void pci_acpi_cleanup(struct device *dev)
1405
1391
}
1406
1392
}
1407
1393
1408
- static bool pci_acpi_bus_match (struct device * dev )
1409
- {
1410
- return dev_is_pci (dev );
1411
- }
1412
-
1413
- static struct acpi_bus_type acpi_pci_bus = {
1414
- .name = "PCI" ,
1415
- .match = pci_acpi_bus_match ,
1416
- .find_companion = acpi_pci_find_companion ,
1417
- .setup = pci_acpi_setup ,
1418
- .cleanup = pci_acpi_cleanup ,
1419
- };
1420
-
1421
-
1422
1394
static struct fwnode_handle * (* pci_msi_get_fwnode_cb )(struct device * dev );
1423
1395
1424
1396
/**
@@ -1460,8 +1432,6 @@ struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus)
1460
1432
1461
1433
static int __init acpi_pci_init (void )
1462
1434
{
1463
- int ret ;
1464
-
1465
1435
if (acpi_gbl_FADT .boot_flags & ACPI_FADT_NO_MSI ) {
1466
1436
pr_info ("ACPI FADT declares the system doesn't support MSI, so disable it\n" );
1467
1437
pci_no_msi ();
@@ -1472,11 +1442,9 @@ static int __init acpi_pci_init(void)
1472
1442
pcie_no_aspm ();
1473
1443
}
1474
1444
1475
- ret = register_acpi_bus_type (& acpi_pci_bus );
1476
- if (ret )
1445
+ if (acpi_pci_disabled )
1477
1446
return 0 ;
1478
1447
1479
- pci_set_platform_pm (& acpi_pci_platform_pm );
1480
1448
acpi_pci_slot_init ();
1481
1449
acpiphp_init ();
1482
1450
0 commit comments