-
Notifications
You must be signed in to change notification settings - Fork 321
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pm_runtime: add runtime power management initial implementation
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@linux.intel.com>
- Loading branch information
Showing
33 changed files
with
663 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,4 +35,5 @@ include_HEADERS = \ | |
wait.h \ | ||
string.h \ | ||
hda-dma.h \ | ||
work.h | ||
work.h \ | ||
pm_runtime.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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@linux.intel.com> | ||
*/ | ||
|
||
/** | ||
* \file include/sof/pm_runtime.h | ||
* \brief Runtime power management header file | ||
* \author Tomasz Lauda <tomasz.lauda@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__ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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@linux.intel.com> | ||
*/ | ||
|
||
/** | ||
* \file lib/pm_runtime.c | ||
* \brief Runtime power management implementation | ||
* \author Tomasz Lauda <tomasz.lauda@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; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,5 +5,6 @@ noinst_HEADERS = \ | |
mailbox.h \ | ||
memory.h \ | ||
platform.h \ | ||
pm_runtime.h \ | ||
shim.h \ | ||
timer.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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@linux.intel.com> | ||
*/ | ||
|
||
/** | ||
* \file platform/apollolake/include/platform/pm_runtime.h | ||
* \brief Runtime power management header file for Apollolake | ||
* \author Tomasz Lauda <tomasz.lauda@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__ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.