diff options
Diffstat (limited to 'drivers/acpi/bus.c')
-rw-r--r-- | drivers/acpi/bus.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 945cd2f2807d..e9b116d2b56d 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -112,21 +112,21 @@ int acpi_bus_get_status(struct acpi_device *device) | |||
112 | } | 112 | } |
113 | 113 | ||
114 | /* | 114 | /* |
115 | * Otherwise we assume the status of our parent (unless we don't | 115 | * According to ACPI spec some device can be present and functional |
116 | * have one, in which case status is implied). | 116 | * even if the parent is not present but functional. |
117 | * In such conditions the child device should not inherit the status | ||
118 | * from the parent. | ||
117 | */ | 119 | */ |
118 | else if (device->parent) | ||
119 | device->status = device->parent->status; | ||
120 | else | 120 | else |
121 | STRUCT_TO_INT(device->status) = | 121 | STRUCT_TO_INT(device->status) = |
122 | ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED | | 122 | ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED | |
123 | ACPI_STA_DEVICE_UI | ACPI_STA_DEVICE_FUNCTIONING; | 123 | ACPI_STA_DEVICE_UI | ACPI_STA_DEVICE_FUNCTIONING; |
124 | 124 | ||
125 | if (device->status.functional && !device->status.present) { | 125 | if (device->status.functional && !device->status.present) { |
126 | printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: " | 126 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]: " |
127 | "functional but not present; setting present\n", | 127 | "functional but not present;\n", |
128 | device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status)); | 128 | device->pnp.bus_id, |
129 | device->status.present = 1; | 129 | (u32) STRUCT_TO_INT(device->status))); |
130 | } | 130 | } |
131 | 131 | ||
132 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", | 132 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", |