1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/* Copyright 2012 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Common interface to throttle the AP */
#ifndef __CROS_EC_THROTTLE_AP_H
#define __CROS_EC_THROTTLE_AP_H
/**
* Level of throttling desired.
*/
enum throttle_level {
THROTTLE_OFF = 0,
THROTTLE_ON,
};
/**
* Types of throttling desired. These are independent.
*/
enum throttle_type {
THROTTLE_SOFT = 0, /* for example, host events */
THROTTLE_HARD, /* for example, PROCHOT */
NUM_THROTTLE_TYPES
};
/**
* Possible sources for CPU throttling requests.
*/
enum throttle_sources {
THROTTLE_SRC_THERMAL = 0,
THROTTLE_SRC_BAT_DISCHG_CURRENT,
THROTTLE_SRC_BAT_VOLTAGE,
};
/**
* Enable/disable CPU throttling.
*
* This is a virtual "OR" operation. Any caller can enable CPU throttling of
* any type, but all callers must agree in order to disable that type.
*
* @param level Level of throttling desired
* @param type Type of throttling desired
* @param source Which task is requesting throttling
*/
#if defined(CONFIG_THROTTLE_AP) || \
defined(CONFIG_THROTTLE_AP_ON_BAT_DISCHG_CURRENT) || \
defined(CONFIG_THROTTLE_AP_ON_BAT_VOLTAGE)
void throttle_ap(enum throttle_level level,
enum throttle_type type,
enum throttle_sources source);
#else
static inline void throttle_ap(enum throttle_level level,
enum throttle_type type,
enum throttle_sources source)
{}
#endif
#endif /* __CROS_EC_THROTTLE_AP_H */
|