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