arm: tegra: isomgr: init isomgr earlier than display.
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / isomgr.h
1 /*
2  * include/mach/isomgr.h
3  *
4  * Copyright (c) 2012, NVIDIA Corporation.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18  */
19
20 enum tegra_iso_client {
21         TEGRA_ISO_CLIENT_DISP_0,
22         TEGRA_ISO_CLIENT_DISP_1,
23         TEGRA_ISO_CLIENT_VI_0,
24         TEGRA_ISO_CLIENT_COUNT
25 };
26
27 /* handle to identify registered client */
28 #define tegra_isomgr_handle void *
29
30 /* callback to client to renegotiate ISO BW allocation */
31 typedef void (*tegra_isomgr_renegotiate)(void *priv);
32
33 #if defined(CONFIG_TEGRA_ISOMGR)
34 /* register an ISO BW client */
35 tegra_isomgr_handle tegra_isomgr_register(enum tegra_iso_client client,
36                                           u32 dedicated_bw,     /* KB/sec */
37                                           tegra_isomgr_renegotiate renegotiate,
38                                           void *priv);
39
40 /* unregister an ISO BW client */
41 void tegra_isomgr_unregister(tegra_isomgr_handle handle);
42
43 /* reserve ISO BW on behalf of client - don't apply, rval is dvfs thresh usec */
44 u32 tegra_isomgr_reserve(tegra_isomgr_handle handle,
45                          u32 bw,        /* KB/sec */
46                          u32 lt);       /* usec */
47
48 /* realize client reservation - apply settings, rval is dvfs thresh usec */
49 u32 tegra_isomgr_realize(tegra_isomgr_handle handle);
50
51 /* Initialize isomgr.
52  * This api would be called by .init_machine during boot.
53  * isomgr clients, don't call this api.
54  */
55 int __init isomgr_init(void);
56 #else
57 static inline tegra_isomgr_handle tegra_isomgr_register(
58                                           enum tegra_iso_client client,
59                                           u32 dedicated_bw,
60                                           tegra_isomgr_renegotiate renegotiate,
61                                           void *priv)
62 {
63         return NULL;
64 }
65
66 static inline void tegra_isomgr_unregister(tegra_isomgr_handle handle) {}
67
68 static inline u32 tegra_isomgr_reserve(tegra_isomgr_handle handle,
69                          u32 bw, u32 lt)
70 {
71         return 0;
72 }
73
74 static inline u32 tegra_isomgr_realize(tegra_isomgr_handle handle)
75 {
76         return 0;
77 }
78 static inline int isomgr_init(void)
79 {
80         return 0;
81 }
82 #endif