[Sound-open-firmware] [PATCH 04/10] pm_runtime: add runtime power management initial implementation
Liam Girdwood
liam.r.girdwood at linux.intel.com
Thu Jun 21 12:12:02 CEST 2018
From: Tomasz Lauda <tomasz.lauda at linux.intel.com>
This patch adds initial empty implementation of runtime power management.
It is based on linux kernel implementation and will be developed
in the future.
Signed-off-by: Tomasz Lauda <tomasz.lauda at linux.intel.com>
---
Makefile.am | 5 ++
configure.ac | 5 ++
doc/sof_uapi.doxygen.in | 3 +-
src/drivers/hda-dma.c | 4 +
src/include/sof/Makefile.am | 3 +-
src/include/sof/pm_runtime.h | 77 +++++++++++++++++++
src/include/sof/trace.h | 2 +
src/init/init.c | 4 +
src/lib/Makefile.am | 3 +-
src/lib/pm_runtime.c | 74 ++++++++++++++++++
src/platform/Makefile.am | 14 ++--
src/platform/apollolake/Makefile.am | 3 +-
.../apollolake/include/platform/Makefile.am | 1 +
.../apollolake/include/platform/platform.h | 3 +
.../apollolake/include/platform/pm_runtime.h | 65 ++++++++++++++++
.../apollolake/include/platform/shim.h | 3 +
src/platform/apollolake/pm_runtime.c | 67 ++++++++++++++++
.../baytrail/include/platform/Makefile.am | 2 +-
.../baytrail/include/platform/pm_runtime.h | 60 +++++++++++++++
src/platform/cannonlake/Makefile.am | 3 +-
.../cannonlake/include/platform/Makefile.am | 1 +
.../cannonlake/include/platform/platform.h | 3 +
.../cannonlake/include/platform/pm_runtime.h | 65 ++++++++++++++++
.../cannonlake/include/platform/shim.h | 3 +
src/platform/cannonlake/pm_runtime.c | 67 ++++++++++++++++
.../haswell/include/platform/Makefile.am | 2 +-
.../haswell/include/platform/pm_runtime.h | 60 +++++++++++++++
src/platform/intel/Makefile.am | 1 +
src/platform/intel/include/Makefile.am | 1 +
.../intel/include/platform/Makefile.am | 3 +
.../intel/include/platform/cavs/Makefile.am | 2 +
.../intel/include/platform/cavs/pm_runtime.h | 66 ++++++++++++++++
test/cmocka/Makefile.am | 2 +-
33 files changed, 663 insertions(+), 14 deletions(-)
create mode 100644 src/include/sof/pm_runtime.h
create mode 100644 src/lib/pm_runtime.c
create mode 100644 src/platform/apollolake/include/platform/pm_runtime.h
create mode 100644 src/platform/apollolake/pm_runtime.c
create mode 100644 src/platform/baytrail/include/platform/pm_runtime.h
create mode 100644 src/platform/cannonlake/include/platform/pm_runtime.h
create mode 100644 src/platform/cannonlake/pm_runtime.c
create mode 100644 src/platform/haswell/include/platform/pm_runtime.h
create mode 100644 src/platform/intel/Makefile.am
create mode 100644 src/platform/intel/include/Makefile.am
create mode 100644 src/platform/intel/include/platform/Makefile.am
create mode 100644 src/platform/intel/include/platform/cavs/Makefile.am
create mode 100644 src/platform/intel/include/platform/cavs/pm_runtime.h
diff --git a/Makefile.am b/Makefile.am
index 701e8f2..d941047 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -33,6 +33,11 @@ export ARCH_INCDIR = \
PLATFORM_INCDIR = -I $(SRC_DIR)/platform/$(PLATFORM)/include
+if BUILD_CAVS
+PLATFORM_INCDIR += \
+ -I $(SRC_DIR)/platform/intel/include
+endif
+
if XCC
PLATFORM_INCDIR += \
-I $(ROOT_DIR)/arch/include
diff --git a/configure.ac b/configure.ac
index 2673d39..be89fc1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -283,6 +283,7 @@ AM_CONDITIONAL(BUILD_BROADWELL, test "$FW_NAME" = "bdw")
AM_CONDITIONAL(BUILD_APOLLOLAKE, test "$FW_NAME" = "apl")
AM_CONDITIONAL(BUILD_CANNONLAKE, test "$FW_NAME" = "cnl")
AM_CONDITIONAL(BUILD_BOOTLOADER, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
+AM_CONDITIONAL(BUILD_CAVS, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
AM_CONDITIONAL(BUILD_MODULE, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
AM_CONDITIONAL(BUILD_APL_SSP, test "$FW_NAME" = "apl" -o "$FW_NAME" = "cnl")
@@ -467,6 +468,10 @@ AC_CONFIG_FILES([
src/platform/cannonlake/include/arch/xtensa/Makefile
src/platform/cannonlake/include/arch/xtensa/config/Makefile
src/platform/cannonlake/include/platform/Makefile
+ src/platform/intel/Makefile
+ src/platform/intel/include/Makefile
+ src/platform/intel/include/platform/Makefile
+ src/platform/intel/include/platform/cavs/Makefile
test/Makefile
test/cmocka/Makefile
])
diff --git a/doc/sof_uapi.doxygen.in b/doc/sof_uapi.doxygen.in
index 74052f1..18444c9 100644
--- a/doc/sof_uapi.doxygen.in
+++ b/doc/sof_uapi.doxygen.in
@@ -6,7 +6,8 @@ GENERATE_MAN = NO
GENERATE_XML = YES
CASE_SENSE_NAMES = NO
-INPUT = @top_srcdir@/src/include/uapi
+INPUT = @top_srcdir@/src/include/uapi \
+ @top_srcdir@/src/include/sof
EXCLUDE =
RECURSIVE = YES
FILE_PATTERNS = *.c *.h
diff --git a/src/drivers/hda-dma.c b/src/drivers/hda-dma.c
index 974ee80..2d23576 100644
--- a/src/drivers/hda-dma.c
+++ b/src/drivers/hda-dma.c
@@ -42,6 +42,7 @@
#include <sof/dma.h>
#include <sof/io.h>
#include <sof/ipc.h>
+#include <sof/pm_runtime.h>
#include <sof/wait.h>
#include <platform/dma.h>
#include <arch/cache.h>
@@ -129,6 +130,9 @@ static int hda_dma_copy(struct dma *dma, int channel, int bytes)
host_dma_reg_write(dma, channel, DGLLPI, bytes);
host_dma_reg_write(dma, channel, DGLPIBI, bytes);
+ /* Force Host DMA to exit L1 */
+ pm_runtime_put(PM_RUNTIME_HOST_DMA_L1);
+
return 0;
}
diff --git a/src/include/sof/Makefile.am b/src/include/sof/Makefile.am
index b667459..7eaba9a 100644
--- a/src/include/sof/Makefile.am
+++ b/src/include/sof/Makefile.am
@@ -35,4 +35,5 @@ include_HEADERS = \
wait.h \
string.h \
hda-dma.h \
- work.h
+ work.h \
+ pm_runtime.h
diff --git a/src/include/sof/pm_runtime.h b/src/include/sof/pm_runtime.h
new file mode 100644
index 0000000..04e0fe1
--- /dev/null
+++ b/src/include/sof/pm_runtime.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file include/sof/pm_runtime.h
+ * \brief Runtime power management header file
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_PM_RUNTIME__
+#define __INCLUDE_PM_RUNTIME__
+
+#include <sof/lock.h>
+#include <sof/trace.h>
+
+/** \brief Power management trace function. */
+#define trace_pm(__e) trace_event_atomic(TRACE_CLASS_POWER, __e)
+
+/** \brief Power management trace value function. */
+#define trace_pm_value(__e) trace_value_atomic(__e)
+
+/** \brief Runtime power management context */
+enum pm_runtime_context {
+ PM_RUNTIME_HOST_DMA_L1 = 0, /**< Host DMA L1 Exit */
+};
+
+/** \brief Runtime power management data. */
+struct pm_runtime_data {
+ spinlock_t lock; /**< lock mechanism */
+ void *platform_data; /**< platform specific data */
+};
+
+/**
+ * \brief Initializes runtime power management.
+ */
+void pm_runtime_init(void);
+
+/**
+ * \brief Retrieves power management resource.
+ * \param[in] context Type of power management context.
+ */
+void pm_runtime_get(enum pm_runtime_context context);
+
+/**
+ * \brief Releases power management resource.
+ * \param[in] context Type of power management context.
+ */
+void pm_runtime_put(enum pm_runtime_context context);
+
+#endif /* __INCLUDE_PM_RUNTIME__ */
diff --git a/src/include/sof/trace.h b/src/include/sof/trace.h
index 0e339b5..d72ef68 100644
--- a/src/include/sof/trace.h
+++ b/src/include/sof/trace.h
@@ -62,6 +62,7 @@
#define TRACE_BOOT_SYS_HEAP (TRACE_BOOT_SYS + 0x300)
#define TRACE_BOOT_SYS_NOTE (TRACE_BOOT_SYS + 0x400)
#define TRACE_BOOT_SYS_SCHED (TRACE_BOOT_SYS + 0x500)
+#define TRACE_BOOT_SYS_POWER (TRACE_BOOT_SYS + 0x600)
/* platform/device specific codes */
#define TRACE_BOOT_PLATFORM_ENTRY (TRACE_BOOT_PLATFORM + 0x100)
@@ -99,6 +100,7 @@
#define TRACE_CLASS_EQ_IIR (20 << 24)
#define TRACE_CLASS_SA (21 << 24)
#define TRACE_CLASS_DMIC (22 << 24)
+#define TRACE_CLASS_POWER (23 << 24)
/* move to config.h */
#define TRACE 1
diff --git a/src/init/init.c b/src/init/init.c
index 73ba3be..b72fa1d 100644
--- a/src/init/init.c
+++ b/src/init/init.c
@@ -42,6 +42,7 @@
#include <sof/trace.h>
#include <sof/schedule.h>
#include <sof/dma-trace.h>
+#include <sof/pm_runtime.h>
#include <platform/platform.h>
/* main firmware context */
@@ -75,6 +76,9 @@ int main(int argc, char *argv[])
trace_point(TRACE_BOOT_SYS_SCHED);
scheduler_init(&sof);
+ trace_point(TRACE_BOOT_SYS_POWER);
+ pm_runtime_init();
+
/* init the platform */
err = platform_init(&sof);
if (err < 0)
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 874d2fb..3175079 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -9,7 +9,8 @@ libcore_a_SOURCES = \
schedule.c \
agent.c \
interrupt.c \
- dma-trace.c
+ dma-trace.c \
+ pm_runtime.c
libcore_a_CFLAGS = \
$(ARCH_CFLAGS) \
diff --git a/src/lib/pm_runtime.c b/src/lib/pm_runtime.c
new file mode 100644
index 0000000..b165f5f
--- /dev/null
+++ b/src/lib/pm_runtime.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file lib/pm_runtime.c
+ * \brief Runtime power management implementation
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#include <sof/pm_runtime.h>
+#include <sof/alloc.h>
+#include <platform/pm_runtime.h>
+
+/** \brief Runtime power management data pointer. */
+static struct pm_runtime_data *prd;
+
+void pm_runtime_init(void)
+{
+ trace_pm("ini");
+
+ prd = rzalloc(RZONE_SYS, SOF_MEM_CAPS_RAM, sizeof(*prd));
+ spinlock_init(&prd->lock);
+
+ platform_pm_runtime_init(prd);
+}
+
+void pm_runtime_get(enum pm_runtime_context context)
+{
+ trace_pm("get");
+
+ switch (context) {
+ default:
+ platform_pm_runtime_get(context);
+ break;
+ }
+}
+
+void pm_runtime_put(enum pm_runtime_context context)
+{
+ trace_pm("put");
+
+ switch (context) {
+ default:
+ platform_pm_runtime_put(context);
+ break;
+ }
+}
diff --git a/src/platform/Makefile.am b/src/platform/Makefile.am
index 93742b0..6a41c47 100644
--- a/src/platform/Makefile.am
+++ b/src/platform/Makefile.am
@@ -1,23 +1,25 @@
+SUBDIRS = intel
+
if BUILD_BAYTRAIL
-SUBDIRS = baytrail
+SUBDIRS += baytrail
endif
if BUILD_CHERRYTRAIL
-SUBDIRS = baytrail
+SUBDIRS += baytrail
endif
if BUILD_APOLLOLAKE
-SUBDIRS = apollolake
+SUBDIRS += apollolake
endif
if BUILD_HASWELL
-SUBDIRS = haswell
+SUBDIRS += haswell
endif
if BUILD_BROADWELL
-SUBDIRS = haswell
+SUBDIRS += haswell
endif
if BUILD_CANNONLAKE
-SUBDIRS = cannonlake
+SUBDIRS += cannonlake
endif
diff --git a/src/platform/apollolake/Makefile.am b/src/platform/apollolake/Makefile.am
index 417a13d..1732a6d 100644
--- a/src/platform/apollolake/Makefile.am
+++ b/src/platform/apollolake/Makefile.am
@@ -13,7 +13,8 @@ libplatform_a_SOURCES = \
clk.c \
timer.c \
interrupt.c \
- memory.c
+ memory.c \
+ pm_runtime.c
libplatform_a_CFLAGS = \
$(ARCH_CFLAGS) \
diff --git a/src/platform/apollolake/include/platform/Makefile.am b/src/platform/apollolake/include/platform/Makefile.am
index 4e4e20d..af8ef78 100644
--- a/src/platform/apollolake/include/platform/Makefile.am
+++ b/src/platform/apollolake/include/platform/Makefile.am
@@ -5,5 +5,6 @@ noinst_HEADERS = \
mailbox.h \
memory.h \
platform.h \
+ pm_runtime.h \
shim.h \
timer.h
diff --git a/src/platform/apollolake/include/platform/platform.h b/src/platform/apollolake/include/platform/platform.h
index 1cce0c7..39f8549 100644
--- a/src/platform/apollolake/include/platform/platform.h
+++ b/src/platform/apollolake/include/platform/platform.h
@@ -120,6 +120,9 @@ struct sof;
/* DSP default delay in cycles */
#define PLATFORM_DEFAULT_DELAY 12
+/* minimal L1 exit time in cycles */
+#define PLATFORM_FORCE_L1_EXIT_TIME 12288
+
/* Platform defined panic code */
static inline void platform_panic(uint32_t p)
{
diff --git a/src/platform/apollolake/include/platform/pm_runtime.h b/src/platform/apollolake/include/platform/pm_runtime.h
new file mode 100644
index 0000000..2758638
--- /dev/null
+++ b/src/platform/apollolake/include/platform/pm_runtime.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/apollolake/include/platform/pm_runtime.h
+ * \brief Runtime power management header file for Apollolake
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_PLATFORM_PM_RUNTIME__
+#define __INCLUDE_PLATFORM_PM_RUNTIME__
+
+#include <sof/pm_runtime.h>
+
+/** \brief Platform specific runtime power management data. */
+struct platform_pm_runtime_data {
+ /* TBD */
+};
+
+/**
+ * \brief Initializes platform specific runtime power management.
+ * \param[in,out] prd Runtime power management data.
+ */
+void platform_pm_runtime_init(struct pm_runtime_data *prd);
+
+/**
+ * \brief Retrieves platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+void platform_pm_runtime_get(enum pm_runtime_context context);
+
+/**
+ * \brief Releases platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+void platform_pm_runtime_put(enum pm_runtime_context context);
+
+#endif /* __INCLUDE_PLATFORM_PM_RUNTIME__ */
diff --git a/src/platform/apollolake/include/platform/shim.h b/src/platform/apollolake/include/platform/shim.h
index 92b6cf3..598f1c8 100644
--- a/src/platform/apollolake/include/platform/shim.h
+++ b/src/platform/apollolake/include/platform/shim.h
@@ -162,6 +162,9 @@
#define SHIM_L2_PREF_CFG (SHIM_BASE + 0x508)
#define SHIM_L2_CACHE_PREF (SHIM_BASE + 0x510)
+#define SHIM_SVCFG 0xF4
+#define SHIM_SVCFG_FORCE_L1_EXIT (0x1 << 1)
+
/* host windows */
#define DMWBA(x) (HOST_WIN_BASE(x) + 0x0)
diff --git a/src/platform/apollolake/pm_runtime.c b/src/platform/apollolake/pm_runtime.c
new file mode 100644
index 0000000..00f902d
--- /dev/null
+++ b/src/platform/apollolake/pm_runtime.c
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/apollolake/pm_runtime.c
+ * \brief Runtime power management implementation specific for Apollolake
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#include <sof/alloc.h>
+#include <platform/platform.h>
+#include <platform/pm_runtime.h>
+#include <platform/cavs/pm_runtime.h>
+
+/** \brief Runtime power management data pointer. */
+struct pm_runtime_data *_prd;
+
+void platform_pm_runtime_init(struct pm_runtime_data *prd)
+{
+ struct platform_pm_runtime_data *pprd;
+
+ _prd = prd;
+
+ pprd = rzalloc(RZONE_SYS, SOF_MEM_CAPS_RAM, sizeof(*pprd));
+ _prd->platform_data = pprd;
+}
+
+void platform_pm_runtime_get(enum pm_runtime_context context)
+{
+ /* Action based on context */
+}
+
+void platform_pm_runtime_put(enum pm_runtime_context context)
+{
+ switch (context) {
+ case PM_RUNTIME_HOST_DMA_L1:
+ cavs_pm_runtime_force_host_dma_l1_exit();
+ break;
+ }
+}
diff --git a/src/platform/baytrail/include/platform/Makefile.am b/src/platform/baytrail/include/platform/Makefile.am
index 5775230..48a7f5b 100644
--- a/src/platform/baytrail/include/platform/Makefile.am
+++ b/src/platform/baytrail/include/platform/Makefile.am
@@ -5,7 +5,7 @@ noinst_HEADERS = \
mailbox.h \
memory.h \
platform.h \
+ pm_runtime.h \
pmc.h \
shim.h \
timer.h
-
diff --git a/src/platform/baytrail/include/platform/pm_runtime.h b/src/platform/baytrail/include/platform/pm_runtime.h
new file mode 100644
index 0000000..6757e32
--- /dev/null
+++ b/src/platform/baytrail/include/platform/pm_runtime.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/baytrail/include/platform/pm_runtime.h
+ * \brief Runtime power management header file for Baytrail
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_PLATFORM_PM_RUNTIME__
+#define __INCLUDE_PLATFORM_PM_RUNTIME__
+
+#include <sof/pm_runtime.h>
+
+/**
+ * \brief Initializes platform specific runtime power management.
+ * \param[in,out] prd Runtime power management data.
+ */
+static inline void platform_pm_runtime_init(struct pm_runtime_data *prd) { }
+
+/**
+ * \brief Retrieves platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+static inline void platform_pm_runtime_get(enum pm_runtime_context context) { }
+
+/**
+ * \brief Releases platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+static inline void platform_pm_runtime_put(enum pm_runtime_context context) { }
+
+#endif /* __INCLUDE_PLATFORM_PM_RUNTIME__ */
diff --git a/src/platform/cannonlake/Makefile.am b/src/platform/cannonlake/Makefile.am
index 503271c..da7b4e9 100644
--- a/src/platform/cannonlake/Makefile.am
+++ b/src/platform/cannonlake/Makefile.am
@@ -13,7 +13,8 @@ libplatform_a_SOURCES = \
clk.c \
timer.c \
interrupt.c \
- memory.c
+ memory.c \
+ pm_runtime.c
libplatform_a_CFLAGS = \
$(ARCH_CFLAGS) \
diff --git a/src/platform/cannonlake/include/platform/Makefile.am b/src/platform/cannonlake/include/platform/Makefile.am
index 4e4e20d..af8ef78 100644
--- a/src/platform/cannonlake/include/platform/Makefile.am
+++ b/src/platform/cannonlake/include/platform/Makefile.am
@@ -5,5 +5,6 @@ noinst_HEADERS = \
mailbox.h \
memory.h \
platform.h \
+ pm_runtime.h \
shim.h \
timer.h
diff --git a/src/platform/cannonlake/include/platform/platform.h b/src/platform/cannonlake/include/platform/platform.h
index 36e4868..b3e5f74 100644
--- a/src/platform/cannonlake/include/platform/platform.h
+++ b/src/platform/cannonlake/include/platform/platform.h
@@ -117,6 +117,9 @@ struct sof;
/* DSP default delay in cycles */
#define PLATFORM_DEFAULT_DELAY 12
+/* minimal L1 exit time in cycles */
+#define PLATFORM_FORCE_L1_EXIT_TIME 8192
+
/* Platform defined trace code */
static inline void platform_panic(uint32_t p)
{
diff --git a/src/platform/cannonlake/include/platform/pm_runtime.h b/src/platform/cannonlake/include/platform/pm_runtime.h
new file mode 100644
index 0000000..3cf113d
--- /dev/null
+++ b/src/platform/cannonlake/include/platform/pm_runtime.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/cannonlake/include/platform/pm_runtime.h
+ * \brief Runtime power management header file for Cannonlake
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_PLATFORM_PM_RUNTIME__
+#define __INCLUDE_PLATFORM_PM_RUNTIME__
+
+#include <sof/pm_runtime.h>
+
+/** \brief Platform specific runtime power management data. */
+struct platform_pm_runtime_data {
+ /* TBD */
+};
+
+/**
+ * \brief Initializes platform specific runtime power management.
+ * \param[in,out] prd Runtime power management data.
+ */
+void platform_pm_runtime_init(struct pm_runtime_data *prd);
+
+/**
+ * \brief Retrieves platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+void platform_pm_runtime_get(enum pm_runtime_context context);
+
+/**
+ * \brief Releases platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+void platform_pm_runtime_put(enum pm_runtime_context context);
+
+#endif /* __INCLUDE_PLATFORM_PM_RUNTIME__ */
diff --git a/src/platform/cannonlake/include/platform/shim.h b/src/platform/cannonlake/include/platform/shim.h
index 82281f8..8615e7b 100644
--- a/src/platform/cannonlake/include/platform/shim.h
+++ b/src/platform/cannonlake/include/platform/shim.h
@@ -191,6 +191,9 @@
#define ALHO_CSO_FLAG (1 << 1)
#define ALHO_CFO_FLAG (1 << 2)
+#define SHIM_SVCFG 0xF4
+#define SHIM_SVCFG_FORCE_L1_EXIT (0x1 << 1)
+
/* host windows */
#define DMWBA(x) (HOST_WIN_BASE(x) + 0x0)
#define DMWLO(x) (HOST_WIN_BASE(x) + 0x4)
diff --git a/src/platform/cannonlake/pm_runtime.c b/src/platform/cannonlake/pm_runtime.c
new file mode 100644
index 0000000..e01c882
--- /dev/null
+++ b/src/platform/cannonlake/pm_runtime.c
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/cannonlake/pm_runtime.c
+ * \brief Runtime power management implementation specific for Cannonlake
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#include <sof/alloc.h>
+#include <platform/platform.h>
+#include <platform/pm_runtime.h>
+#include <platform/cavs/pm_runtime.h>
+
+/** \brief Runtime power management data pointer. */
+struct pm_runtime_data *_prd;
+
+void platform_pm_runtime_init(struct pm_runtime_data *prd)
+{
+ struct platform_pm_runtime_data *pprd;
+
+ _prd = prd;
+
+ pprd = rzalloc(RZONE_SYS, SOF_MEM_CAPS_RAM, sizeof(*pprd));
+ _prd->platform_data = pprd;
+}
+
+void platform_pm_runtime_get(enum pm_runtime_context context)
+{
+ /* Action based on context */
+}
+
+void platform_pm_runtime_put(enum pm_runtime_context context)
+{
+ switch (context) {
+ case PM_RUNTIME_HOST_DMA_L1:
+ cavs_pm_runtime_force_host_dma_l1_exit();
+ break;
+ }
+}
diff --git a/src/platform/haswell/include/platform/Makefile.am b/src/platform/haswell/include/platform/Makefile.am
index 8308e14..af8ef78 100644
--- a/src/platform/haswell/include/platform/Makefile.am
+++ b/src/platform/haswell/include/platform/Makefile.am
@@ -5,6 +5,6 @@ noinst_HEADERS = \
mailbox.h \
memory.h \
platform.h \
+ pm_runtime.h \
shim.h \
timer.h
-
diff --git a/src/platform/haswell/include/platform/pm_runtime.h b/src/platform/haswell/include/platform/pm_runtime.h
new file mode 100644
index 0000000..1475838
--- /dev/null
+++ b/src/platform/haswell/include/platform/pm_runtime.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/haswell/include/platform/pm_runtime.h
+ * \brief Runtime power management header file for Haswell
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_PLATFORM_PM_RUNTIME__
+#define __INCLUDE_PLATFORM_PM_RUNTIME__
+
+#include <sof/pm_runtime.h>
+
+/**
+ * \brief Initializes platform specific runtime power management.
+ * \param[in,out] prd Runtime power management data.
+ */
+static inline void platform_pm_runtime_init(struct pm_runtime_data *prd) { }
+
+/**
+ * \brief Retrieves platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+static inline void platform_pm_runtime_get(enum pm_runtime_context context) { }
+
+/**
+ * \brief Releases platform specific power management resource.
+ * \param[in] context Type of power management context.
+ */
+static inline void platform_pm_runtime_put(enum pm_runtime_context context) { }
+
+#endif /* __INCLUDE_PLATFORM_PM_RUNTIME__ */
diff --git a/src/platform/intel/Makefile.am b/src/platform/intel/Makefile.am
new file mode 100644
index 0000000..7b92e00
--- /dev/null
+++ b/src/platform/intel/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = include
diff --git a/src/platform/intel/include/Makefile.am b/src/platform/intel/include/Makefile.am
new file mode 100644
index 0000000..912728c
--- /dev/null
+++ b/src/platform/intel/include/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = platform
diff --git a/src/platform/intel/include/platform/Makefile.am b/src/platform/intel/include/platform/Makefile.am
new file mode 100644
index 0000000..13161e0
--- /dev/null
+++ b/src/platform/intel/include/platform/Makefile.am
@@ -0,0 +1,3 @@
+if BUILD_CAVS
+SUBDIRS = cavs
+endif
diff --git a/src/platform/intel/include/platform/cavs/Makefile.am b/src/platform/intel/include/platform/cavs/Makefile.am
new file mode 100644
index 0000000..712c197
--- /dev/null
+++ b/src/platform/intel/include/platform/cavs/Makefile.am
@@ -0,0 +1,2 @@
+noinst_HEADERS = \
+ pm_runtime.h
diff --git a/src/platform/intel/include/platform/cavs/pm_runtime.h b/src/platform/intel/include/platform/cavs/pm_runtime.h
new file mode 100644
index 0000000..486c119
--- /dev/null
+++ b/src/platform/intel/include/platform/cavs/pm_runtime.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2018, Intel Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Intel Corporation nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Author: Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+/**
+ * \file platform/intel/platform/cavs/include/pm_runtime.h
+ * \brief Runtime power management header file for cAVS
+ * \author Tomasz Lauda <tomasz.lauda at linux.intel.com>
+ */
+
+#ifndef __INCLUDE_CAVS_PM_RUNTIME__
+#define __INCLUDE_CAVS_PM_RUNTIME__
+
+#include <platform/pm_runtime.h>
+
+extern struct pm_runtime_data *_prd;
+
+/**
+ * \brief Forces Host DMAs to exit L1.
+ */
+static inline void cavs_pm_runtime_force_host_dma_l1_exit(void)
+{
+ uint32_t flags;
+
+ spin_lock_irq(&_prd->lock, flags);
+
+ if (!(shim_read(SHIM_SVCFG) & SHIM_SVCFG_FORCE_L1_EXIT)) {
+ shim_write(SHIM_SVCFG,
+ shim_read(SHIM_SVCFG) | SHIM_SVCFG_FORCE_L1_EXIT);
+
+ wait_delay(PLATFORM_FORCE_L1_EXIT_TIME);
+
+ shim_write(SHIM_SVCFG,
+ shim_read(SHIM_SVCFG) & ~(SHIM_SVCFG_FORCE_L1_EXIT));
+ }
+
+ spin_unlock_irq(&_prd->lock, flags);
+}
+
+#endif /* __INCLUDE_CAVS_PM_RUNTIME__ */
diff --git a/test/cmocka/Makefile.am b/test/cmocka/Makefile.am
index bca9f56..ff1ef19 100644
--- a/test/cmocka/Makefile.am
+++ b/test/cmocka/Makefile.am
@@ -75,4 +75,4 @@ sin_fixed_SOURCES = src/math/trig/sin_fixed.c
sin_fixed_LDADD = ../../src/math/libsof_math.a $(LDADD)
# all our binaries are test cases
-TESTS = $(check_PROGRAMS)
+TESTS = $(check_PROGRAMS)
\ No newline at end of file
--
2.17.0
More information about the Sound-open-firmware
mailing list