Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pm+acpi-3.19-fin' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI power management fix from Rafael Wysocki:
"This is a revert of an ACPI Low-power Subsystem (LPSS) driver change
that was supposed to improve power management of the LPSS DMA
controller, but introduced more serious problems.

Since fixing them turns out to be non-trivial, it is better to revert
the commit in question at this point and try to fix the original issue
differently in the next cycle"

* tag 'pm+acpi-3.19-fin' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
Revert "ACPI / LPSS: introduce a 'proxy' device to power on LPSS for DMA"

+7 -28
+7 -28
drivers/acpi/acpi_lpss.c
··· 1 1 /* 2 2 * ACPI support for Intel Lynxpoint LPSS. 3 3 * 4 - * Copyright (C) 2013, 2014, Intel Corporation 4 + * Copyright (C) 2013, Intel Corporation 5 5 * Authors: Mika Westerberg <mika.westerberg@linux.intel.com> 6 6 * Rafael J. Wysocki <rafael.j.wysocki@intel.com> 7 7 * ··· 60 60 #define LPSS_CLK_DIVIDER BIT(2) 61 61 #define LPSS_LTR BIT(3) 62 62 #define LPSS_SAVE_CTX BIT(4) 63 - #define LPSS_DEV_PROXY BIT(5) 64 - #define LPSS_PROXY_REQ BIT(6) 65 63 66 64 struct lpss_private_data; 67 65 ··· 70 72 void (*setup)(struct lpss_private_data *pdata); 71 73 }; 72 74 73 - static struct device *proxy_device; 74 - 75 75 static struct lpss_device_desc lpss_dma_desc = { 76 - .flags = LPSS_CLK | LPSS_PROXY_REQ, 76 + .flags = LPSS_CLK, 77 77 }; 78 78 79 79 struct lpss_private_data { ··· 146 150 }; 147 151 148 152 static struct lpss_device_desc byt_uart_dev_desc = { 149 - .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX | 150 - LPSS_DEV_PROXY, 153 + .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX, 151 154 .prv_offset = 0x800, 152 155 .setup = lpss_uart_setup, 153 156 }; 154 157 155 158 static struct lpss_device_desc byt_spi_dev_desc = { 156 - .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX | 157 - LPSS_DEV_PROXY, 159 + .flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX, 158 160 .prv_offset = 0x400, 159 161 }; 160 162 161 163 static struct lpss_device_desc byt_sdio_dev_desc = { 162 - .flags = LPSS_CLK | LPSS_DEV_PROXY, 164 + .flags = LPSS_CLK, 163 165 }; 164 166 165 167 static struct lpss_device_desc byt_i2c_dev_desc = { 166 - .flags = LPSS_CLK | LPSS_SAVE_CTX | LPSS_DEV_PROXY, 168 + .flags = LPSS_CLK | LPSS_SAVE_CTX, 167 169 .prv_offset = 0x800, 168 170 .setup = byt_i2c_setup, 169 171 }; ··· 368 374 adev->driver_data = pdata; 369 375 pdev = acpi_create_platform_device(adev); 370 376 if (!IS_ERR_OR_NULL(pdev)) { 371 - if (!proxy_device && dev_desc->flags & LPSS_DEV_PROXY) 372 - proxy_device = &pdev->dev; 373 377 return 1; 374 378 } 375 379 ··· 592 600 if (pdata->dev_desc->flags & LPSS_SAVE_CTX) 593 601 acpi_lpss_save_ctx(dev, pdata); 594 602 595 - ret = acpi_dev_runtime_suspend(dev); 596 - if (ret) 597 - return ret; 598 - 599 - if (pdata->dev_desc->flags & LPSS_PROXY_REQ && proxy_device) 600 - return pm_runtime_put_sync_suspend(proxy_device); 601 - 602 - return 0; 603 + return acpi_dev_runtime_suspend(dev); 603 604 } 604 605 605 606 static int acpi_lpss_runtime_resume(struct device *dev) 606 607 { 607 608 struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); 608 609 int ret; 609 - 610 - if (pdata->dev_desc->flags & LPSS_PROXY_REQ && proxy_device) { 611 - ret = pm_runtime_get_sync(proxy_device); 612 - if (ret) 613 - return ret; 614 - } 615 610 616 611 ret = acpi_dev_runtime_resume(dev); 617 612 if (ret)