Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
clockdomain33xx.c
Go to the documentation of this file.
1 /*
2  * AM33XX clockdomain control
3  *
4  * Copyright (C) 2011-2012 Texas Instruments Incorporated - http://www.ti.com/
5  * Vaibhav Hiremath <[email protected]>
6  *
7  * Derived from mach-omap2/clockdomain44xx.c written by Rajendra Nayak
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation version 2.
12  *
13  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
14  * kind, whether express or implied; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */
18 
19 #include <linux/kernel.h>
20 
21 #include "clockdomain.h"
22 #include "cm33xx.h"
23 
24 
25 static int am33xx_clkdm_sleep(struct clockdomain *clkdm)
26 {
28  return 0;
29 }
30 
31 static int am33xx_clkdm_wakeup(struct clockdomain *clkdm)
32 {
34  return 0;
35 }
36 
37 static void am33xx_clkdm_allow_idle(struct clockdomain *clkdm)
38 {
40 }
41 
42 static void am33xx_clkdm_deny_idle(struct clockdomain *clkdm)
43 {
45 }
46 
47 static int am33xx_clkdm_clk_enable(struct clockdomain *clkdm)
48 {
49  if (clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)
50  return am33xx_clkdm_wakeup(clkdm);
51 
52  return 0;
53 }
54 
55 static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm)
56 {
57  bool hwsup = false;
58 
59  hwsup = am33xx_cm_is_clkdm_in_hwsup(clkdm->cm_inst, clkdm->clkdm_offs);
60 
61  if (!hwsup && (clkdm->flags & CLKDM_CAN_FORCE_SLEEP))
62  am33xx_clkdm_sleep(clkdm);
63 
64  return 0;
65 }
66 
68  .clkdm_sleep = am33xx_clkdm_sleep,
69  .clkdm_wakeup = am33xx_clkdm_wakeup,
70  .clkdm_allow_idle = am33xx_clkdm_allow_idle,
71  .clkdm_deny_idle = am33xx_clkdm_deny_idle,
72  .clkdm_clk_enable = am33xx_clkdm_clk_enable,
73  .clkdm_clk_disable = am33xx_clkdm_clk_disable,
74 };