pm: EDP: Add governor framework
[linux-3.10.git] / drivers / edp / edp_internal.h
1 /*
2  * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 #ifndef _EDP_INTERNAL_H
18 #define _EDP_INTERNAL_H
19
20 #include <linux/kernel.h>
21 #include <linux/edp.h>
22
23 struct loan_client {
24         struct list_head link;
25         struct edp_client *client;
26         unsigned int size;
27 };
28
29 static inline unsigned int cur_level(struct edp_client *c)
30 {
31         return c->cur ? *c->cur : 0;
32 }
33
34 static inline unsigned int req_level(struct edp_client *c)
35 {
36         return c->req ? *c->req : 0;
37 }
38
39 static inline unsigned int e0_level(struct edp_client *c)
40 {
41         return c->states[c->e0_index];
42 }
43
44 static inline unsigned int cur_index(struct edp_client *c)
45 {
46         return c->cur ? c->cur - c->states : c->num_states;
47 }
48
49 static inline unsigned int req_index(struct edp_client *c)
50 {
51         return c->req ? c->req - c->states : c->num_states;
52 }
53
54 #endif