blob: a7d98a5da2e1030076077d63435de2bc4f297762 [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* SPDX-License-Identifier: GPL-2.0 */
David Brazdil0f672f62019-12-10 10:32:29 +00002/* Copyright (C) 2012-2019 ARM Limited (or its affiliates). */
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00003
4/* \file cc_pm.h
5 */
6
7#ifndef __CC_POWER_MGR_H__
8#define __CC_POWER_MGR_H__
9
10#include "cc_driver.h"
11
12#define CC_SUSPEND_TIMEOUT 3000
13
14#if defined(CONFIG_PM)
15
16extern const struct dev_pm_ops ccree_pm;
17
18int cc_pm_init(struct cc_drvdata *drvdata);
David Brazdil0f672f62019-12-10 10:32:29 +000019void cc_pm_go(struct cc_drvdata *drvdata);
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000020void cc_pm_fini(struct cc_drvdata *drvdata);
21int cc_pm_suspend(struct device *dev);
22int cc_pm_resume(struct device *dev);
23int cc_pm_get(struct device *dev);
24int cc_pm_put_suspend(struct device *dev);
David Brazdil0f672f62019-12-10 10:32:29 +000025bool cc_pm_is_dev_suspended(struct device *dev);
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000026
27#else
28
29static inline int cc_pm_init(struct cc_drvdata *drvdata)
30{
31 return 0;
32}
33
David Brazdil0f672f62019-12-10 10:32:29 +000034static inline void cc_pm_go(struct cc_drvdata *drvdata) {}
35
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000036static inline void cc_pm_fini(struct cc_drvdata *drvdata) {}
37
38static inline int cc_pm_suspend(struct device *dev)
39{
40 return 0;
41}
42
43static inline int cc_pm_resume(struct device *dev)
44{
45 return 0;
46}
47
48static inline int cc_pm_get(struct device *dev)
49{
50 return 0;
51}
52
53static inline int cc_pm_put_suspend(struct device *dev)
54{
55 return 0;
56}
57
David Brazdil0f672f62019-12-10 10:32:29 +000058static inline bool cc_pm_is_dev_suspended(struct device *dev)
59{
60 /* if PM not supported device is never suspend */
61 return false;
62}
63
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000064#endif
65
66#endif /*__POWER_MGR_H__*/