diff options
Diffstat (limited to 'drivers/acpi/acpi_lpss.c')
-rw-r--r-- | drivers/acpi/acpi_lpss.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c index 652fd5ce303c..cab13f2fc28e 100644 --- a/drivers/acpi/acpi_lpss.c +++ b/drivers/acpi/acpi_lpss.c | |||
@@ -164,15 +164,24 @@ static int acpi_lpss_create_device(struct acpi_device *adev, | |||
164 | if (dev_desc->clk_required) { | 164 | if (dev_desc->clk_required) { |
165 | ret = register_device_clock(adev, pdata); | 165 | ret = register_device_clock(adev, pdata); |
166 | if (ret) { | 166 | if (ret) { |
167 | /* | 167 | /* Skip the device, but continue the namespace scan. */ |
168 | * Skip the device, but don't terminate the namespace | 168 | ret = 0; |
169 | * scan. | 169 | goto err_out; |
170 | */ | ||
171 | kfree(pdata); | ||
172 | return 0; | ||
173 | } | 170 | } |
174 | } | 171 | } |
175 | 172 | ||
173 | /* | ||
174 | * This works around a known issue in ACPI tables where LPSS devices | ||
175 | * have _PS0 and _PS3 without _PSC (and no power resources), so | ||
176 | * acpi_bus_init_power() will assume that the BIOS has put them into D0. | ||
177 | */ | ||
178 | ret = acpi_device_fix_up_power(adev); | ||
179 | if (ret) { | ||
180 | /* Skip the device, but continue the namespace scan. */ | ||
181 | ret = 0; | ||
182 | goto err_out; | ||
183 | } | ||
184 | |||
176 | adev->driver_data = pdata; | 185 | adev->driver_data = pdata; |
177 | ret = acpi_create_platform_device(adev, id); | 186 | ret = acpi_create_platform_device(adev, id); |
178 | if (ret > 0) | 187 | if (ret > 0) |