Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pwr.h
Go to the documentation of this file.
1 /*
2  * pwr.h
3  *
4  * DSP-BIOS Bridge driver support functions for TI OMAP processors.
5  *
6  * Copyright (C) 2005-2006 Texas Instruments, Inc.
7  *
8  * This package is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  *
12  * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
13  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
14  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15  */
16 
17 #ifndef PWR_
18 #define PWR_
19 
20 #include <dspbridge/dbdefs.h>
21 #include <dspbridge/mbx_sh.h>
22 
23 /* valid sleep command codes that can be sent by GPP via mailbox: */
24 #define PWR_DEEPSLEEP MBX_PM_DSPIDLE
25 #define PWR_EMERGENCYDEEPSLEEP MBX_PM_EMERGENCYSLEEP
26 #define PWR_WAKEUP MBX_PM_DSPWAKEUP
27 
28 
29 /*
30  * ======== pwr_sleep_dsp ========
31  * Signal the DSP to go to sleep.
32  *
33  * Parameters:
34  * sleep_code: New sleep state for DSP. (Initially, valid codes
35  * are PWR_DEEPSLEEP or PWR_EMERGENCYDEEPSLEEP; both of
36  * these codes will simply put the DSP in deep sleep.)
37  *
38  * timeout: Maximum time (msec) that PWR should wait for
39  * confirmation that the DSP sleep state has been
40  * reached. If PWR should simply send the command to
41  * the DSP to go to sleep and then return (i.e.,
42  * asynchrounous sleep), the timeout should be
43  * specified as zero.
44  *
45  * Returns:
46  * 0: Success.
47  * 0: Success, but the DSP was already asleep.
48  * -EINVAL: The specified sleep_code is not supported.
49  * -ETIME: A timeout occurred while waiting for DSP sleep
50  * confirmation.
51  * -EPERM: General failure, unable to send sleep command to
52  * the DSP.
53  */
54 extern int pwr_sleep_dsp(const u32 sleep_code, const u32 timeout);
55 
56 /*
57  * ======== pwr_wake_dsp ========
58  * Signal the DSP to wake from sleep.
59  *
60  * Parameters:
61  * timeout: Maximum time (msec) that PWR should wait for
62  * confirmation that the DSP is awake. If PWR should
63  * simply send a command to the DSP to wake and then
64  * return (i.e., asynchrounous wake), timeout should
65  * be specified as zero.
66  *
67  * Returns:
68  * 0: Success.
69  * 0: Success, but the DSP was already awake.
70  * -ETIME: A timeout occurred while waiting for wake
71  * confirmation.
72  * -EPERM: General failure, unable to send wake command to
73  * the DSP.
74  */
75 extern int pwr_wake_dsp(const u32 timeout);
76 
77 /*
78  * ======== pwr_pm_pre_scale ========
79  * Prescale notification to DSP.
80  *
81  * Parameters:
82  * voltage_domain: The voltage domain for which notification is sent
83  * level: The level of voltage domain
84  *
85  * Returns:
86  * 0: Success.
87  * 0: Success, but the DSP was already awake.
88  * -ETIME: A timeout occurred while waiting for wake
89  * confirmation.
90  * -EPERM: General failure, unable to send wake command to
91  * the DSP.
92  */
93 extern int pwr_pm_pre_scale(u16 voltage_domain, u32 level);
94 
95 /*
96  * ======== pwr_pm_post_scale ========
97  * PostScale notification to DSP.
98  *
99  * Parameters:
100  * voltage_domain: The voltage domain for which notification is sent
101  * level: The level of voltage domain
102  *
103  * Returns:
104  * 0: Success.
105  * 0: Success, but the DSP was already awake.
106  * -ETIME: A timeout occurred while waiting for wake
107  * confirmation.
108  * -EPERM: General failure, unable to send wake command to
109  * the DSP.
110  */
111 extern int pwr_pm_post_scale(u16 voltage_domain, u32 level);
112 
113 #endif /* PWR_ */