Blame view

arch/arm/mach-omap2/powerdomains2xxx_data.c 2.91 KB
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
1
  /*
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
2
   * OMAP2XXX powerdomain definitions
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
3
   *
8179488a3   Paul Walmsley   OMAP: powerdomain...
4
   * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc.
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
5
   * Copyright (C) 2007-2011 Nokia Corporation
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
6
   *
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
7
   * Paul Walmsley, Jouni Högander
fe6a58f8f   Paul Walmsley   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   Paul Walmsley   OMAP2+: powerdoma...
13
14
  #include <linux/kernel.h>
  #include <linux/init.h>
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
15

72e06d087   Paul Walmsley   OMAP2+: powerdoma...
16
  #include "powerdomain.h"
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
17
  #include "powerdomains2xxx_3xxx_data.h"
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
18
19
  
  #include "prcm-common.h"
59fb659b0   Paul Walmsley   OMAP2/3: PRCM: sp...
20
  #include "prm2xxx_3xxx.h"
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
21
  #include "prm-regbits-24xx.h"
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
22
23
  
  /* 24XX powerdomains and dependencies */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
24
25
26
27
28
  /* Powerdomains */
  
  static struct powerdomain dsp_pwrdm = {
  	.name		  = "dsp_pwrdm",
  	.prcm_offs	  = OMAP24XX_DSP_MOD,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
29
  	.pwrsts		  = PWRSTS_OFF_RET_ON,
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
30
  	.pwrsts_logic_ret = PWRSTS_RET,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
31
32
  	.banks		  = 1,
  	.pwrsts_mem_ret	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
33
  		[0] = PWRSTS_RET,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
34
35
  	},
  	.pwrsts_mem_on	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
36
  		[0] = PWRSTS_ON,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
37
  	},
aae030fa3   Kevin Hilman   OMAP2: add voltag...
38
  	.voltdm           = { .name = "core" },
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
39
40
41
42
43
  };
  
  static struct powerdomain mpu_24xx_pwrdm = {
  	.name		  = "mpu_pwrdm",
  	.prcm_offs	  = MPU_MOD,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
44
45
46
47
  	.pwrsts		  = PWRSTS_OFF_RET_ON,
  	.pwrsts_logic_ret = PWRSTS_OFF_RET,
  	.banks		  = 1,
  	.pwrsts_mem_ret	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
48
  		[0] = PWRSTS_RET,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
49
50
  	},
  	.pwrsts_mem_on	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
51
  		[0] = PWRSTS_ON,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
52
  	},
aae030fa3   Kevin Hilman   OMAP2: add voltag...
53
  	.voltdm           = { .name = "core" },
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
54
55
56
57
58
  };
  
  static struct powerdomain core_24xx_pwrdm = {
  	.name		  = "core_pwrdm",
  	.prcm_offs	  = CORE_MOD,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
59
  	.pwrsts		  = PWRSTS_OFF_RET_ON,
fe6a58f8f   Paul Walmsley   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   Kevin Hilman   OMAP2: add voltag...
71
  	.voltdm           = { .name = "core" },
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
72
  };
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
73
74
75
76
  
  /*
   * 2430-specific powerdomains
   */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
77
  /* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
78
79
80
  static struct powerdomain mdm_pwrdm = {
  	.name		  = "mdm_pwrdm",
  	.prcm_offs	  = OMAP2430_MDM_MOD,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
81
  	.pwrsts		  = PWRSTS_OFF_RET_ON,
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
82
  	.pwrsts_logic_ret = PWRSTS_RET,
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
83
84
  	.banks		  = 1,
  	.pwrsts_mem_ret	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
85
  		[0] = PWRSTS_RET, /* MEMRETSTATE */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
86
87
  	},
  	.pwrsts_mem_on	  = {
4cb49fec1   Paul Walmsley   OMAP2+: powerdoma...
88
  		[0] = PWRSTS_ON,  /* MEMONSTATE */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
89
  	},
aae030fa3   Kevin Hilman   OMAP2: add voltag...
90
  	.voltdm           = { .name = "core" },
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
91
  };
8179488a3   Paul Walmsley   OMAP: powerdomain...
92
93
94
  /*
   *
   */
fe6a58f8f   Paul Walmsley   ARM: OMAP2: Power...
95

8179488a3   Paul Walmsley   OMAP: powerdomain...
96
  static struct powerdomain *powerdomains_omap24xx[] __initdata = {
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
97
98
  	&wkup_omap2_pwrdm,
  	&gfx_omap2_pwrdm,
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
99
100
101
  	&dsp_pwrdm,
  	&mpu_24xx_pwrdm,
  	&core_24xx_pwrdm,
8179488a3   Paul Walmsley   OMAP: powerdomain...
102
103
  	NULL
  };
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
104

8179488a3   Paul Walmsley   OMAP: powerdomain...
105
  static struct powerdomain *powerdomains_omap2430[] __initdata = {
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
106
  	&mdm_pwrdm,
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
107
108
  	NULL
  };
8179488a3   Paul Walmsley   OMAP: powerdomain...
109
  void __init omap242x_powerdomains_init(void)
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
110
  {
8179488a3   Paul Walmsley   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   Paul Walmsley   OMAP: powerdomain...
123
  	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
8179488a3   Paul Walmsley   OMAP: powerdomain...
124
125
  	pwrdm_register_pwrdms(powerdomains_omap24xx);
  	pwrdm_register_pwrdms(powerdomains_omap2430);
129c65ee6   Paul Walmsley   OMAP: powerdomain...
126
  	pwrdm_complete_init();
6e01478ae   Paul Walmsley   OMAP2+: powerdoma...
127
  }