]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ACPI / LPSS: enable hard LLP for DMA
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 17 Nov 2016 14:30:06 +0000 (16:30 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 17 Nov 2016 15:11:35 +0000 (16:11 +0100)
Right now the DMA support of hard LLP (*) is fused. Enable it via specific
message sent to SoC at run time.

(*) Hard LLP stands for the multi-block transfer feature of DMA controller
supported by hardware.

Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpi_lpss.c

index 5520102881357e005361ffd879dc7a245d2fd253..c4712395020c88222fdf7e707bb61cd2ed974000 100644 (file)
@@ -724,13 +724,14 @@ static int acpi_lpss_resume_early(struct device *dev)
 #define LPSS_GPIODEF0_DMA1_D3          BIT(2)
 #define LPSS_GPIODEF0_DMA2_D3          BIT(3)
 #define LPSS_GPIODEF0_DMA_D3_MASK      GENMASK(3, 2)
+#define LPSS_GPIODEF0_DMA_LLP          BIT(13)
 
 static DEFINE_MUTEX(lpss_iosf_mutex);
 
 static void lpss_iosf_enter_d3_state(void)
 {
        u32 value1 = 0;
-       u32 mask1 = LPSS_GPIODEF0_DMA_D3_MASK;
+       u32 mask1 = LPSS_GPIODEF0_DMA_D3_MASK | LPSS_GPIODEF0_DMA_LLP;
        u32 value2 = LPSS_PMCSR_D3hot;
        u32 mask2 = LPSS_PMCSR_Dx_MASK;
        /*
@@ -774,8 +775,9 @@ exit:
 
 static void lpss_iosf_exit_d3_state(void)
 {
-       u32 value1 = LPSS_GPIODEF0_DMA1_D3 | LPSS_GPIODEF0_DMA2_D3;
-       u32 mask1 = LPSS_GPIODEF0_DMA_D3_MASK;
+       u32 value1 = LPSS_GPIODEF0_DMA1_D3 | LPSS_GPIODEF0_DMA2_D3 |
+                    LPSS_GPIODEF0_DMA_LLP;
+       u32 mask1 = LPSS_GPIODEF0_DMA_D3_MASK | LPSS_GPIODEF0_DMA_LLP;
        u32 value2 = LPSS_PMCSR_D0;
        u32 mask2 = LPSS_PMCSR_Dx_MASK;