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