bb4394e3b621fcf3124346dc66ea3dbff9b818b2
[pandora-kernel.git] / arch / arm / mach-omap2 / powerdomains2xxx_data.c
1 /*
2  * OMAP2XXX powerdomain definitions
3  *
4  * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc.
5  * Copyright (C) 2007-2011 Nokia Corporation
6  *
7  * Paul Walmsley, Jouni Högander
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12  */
13
14 #include <linux/kernel.h>
15 #include <linux/init.h>
16
17 #include "powerdomain.h"
18 #include "powerdomains2xxx_3xxx_data.h"
19
20 #include "prcm-common.h"
21 #include "prm2xxx_3xxx.h"
22 #include "prm-regbits-24xx.h"
23
24 /* 24XX powerdomains and dependencies */
25
26 /* Powerdomains */
27
28 static struct powerdomain dsp_pwrdm = {
29         .name             = "dsp_pwrdm",
30         .prcm_offs        = OMAP24XX_DSP_MOD,
31         .pwrsts           = PWRSTS_OFF_RET_ON,
32         .pwrsts_logic_ret = PWRSTS_RET,
33         .banks            = 1,
34         .pwrsts_mem_ret   = {
35                 [0] = PWRSTS_RET,
36         },
37         .pwrsts_mem_on    = {
38                 [0] = PWRSTS_ON,
39         },
40 };
41
42 static struct powerdomain mpu_24xx_pwrdm = {
43         .name             = "mpu_pwrdm",
44         .prcm_offs        = MPU_MOD,
45         .pwrsts           = PWRSTS_OFF_RET_ON,
46         .pwrsts_logic_ret = PWRSTS_OFF_RET,
47         .banks            = 1,
48         .pwrsts_mem_ret   = {
49                 [0] = PWRSTS_RET,
50         },
51         .pwrsts_mem_on    = {
52                 [0] = PWRSTS_ON,
53         },
54 };
55
56 static struct powerdomain core_24xx_pwrdm = {
57         .name             = "core_pwrdm",
58         .prcm_offs        = CORE_MOD,
59         .pwrsts           = PWRSTS_OFF_RET_ON,
60         .banks            = 3,
61         .pwrsts_mem_ret   = {
62                 [0] = PWRSTS_OFF_RET,    /* MEM1RETSTATE */
63                 [1] = PWRSTS_OFF_RET,    /* MEM2RETSTATE */
64                 [2] = PWRSTS_OFF_RET,    /* MEM3RETSTATE */
65         },
66         .pwrsts_mem_on    = {
67                 [0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
68                 [1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
69                 [2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */
70         },
71 };
72
73
74 /*
75  * 2430-specific powerdomains
76  */
77
78 /* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */
79
80 static struct powerdomain mdm_pwrdm = {
81         .name             = "mdm_pwrdm",
82         .prcm_offs        = OMAP2430_MDM_MOD,
83         .pwrsts           = PWRSTS_OFF_RET_ON,
84         .pwrsts_logic_ret = PWRSTS_RET,
85         .banks            = 1,
86         .pwrsts_mem_ret   = {
87                 [0] = PWRSTS_RET, /* MEMRETSTATE */
88         },
89         .pwrsts_mem_on    = {
90                 [0] = PWRSTS_ON,  /* MEMONSTATE */
91         },
92 };
93
94 /*
95  *
96  */
97
98 static struct powerdomain *powerdomains_omap24xx[] __initdata = {
99         &wkup_omap2_pwrdm,
100         &gfx_omap2_pwrdm,
101         &dsp_pwrdm,
102         &mpu_24xx_pwrdm,
103         &core_24xx_pwrdm,
104         NULL
105 };
106
107 static struct powerdomain *powerdomains_omap2430[] __initdata = {
108         &mdm_pwrdm,
109         NULL
110 };
111
112 void __init omap242x_powerdomains_init(void)
113 {
114         if (!cpu_is_omap2420())
115                 return;
116
117         pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
118         pwrdm_register_pwrdms(powerdomains_omap24xx);
119         pwrdm_complete_init();
120 }
121
122 void __init omap243x_powerdomains_init(void)
123 {
124         if (!cpu_is_omap2430())
125                 return;
126
127         pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
128         pwrdm_register_pwrdms(powerdomains_omap24xx);
129         pwrdm_register_pwrdms(powerdomains_omap2430);
130         pwrdm_complete_init();
131 }