aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/db8500-prcmu-regs.h
diff options
context:
space:
mode:
authorMattias Nilsson <mattias.i.nilsson@stericsson.com>2011-08-12 04:27:20 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2011-10-24 08:09:17 -0400
commitc553b3ca12046884af1a72ffb6e9d841a026adb9 (patch)
tree20463ba565e7d3f2ffa7dcafa725c6524cf46026 /drivers/mfd/db8500-prcmu-regs.h
parentc38d66ac924e84ea3606c408b117157415df07b3 (diff)
mfd: Refactor DB8500 PRCMU reg access
Instead of carrying around the __PRCMU_BASE in every read or write to the PRCMU registers, move it out to the register definition file and define registers along with their base offset so that the code gets easier to read. Signed-off-by: Mattias Nilsson <mattias.i.nilsson@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/db8500-prcmu-regs.h')
-rw-r--r--drivers/mfd/db8500-prcmu-regs.h266
1 files changed, 152 insertions, 114 deletions
diff --git a/drivers/mfd/db8500-prcmu-regs.h b/drivers/mfd/db8500-prcmu-regs.h
index 3bbf04d58043..ec22e9f15d32 100644
--- a/drivers/mfd/db8500-prcmu-regs.h
+++ b/drivers/mfd/db8500-prcmu-regs.h
@@ -9,99 +9,170 @@
9 * 9 *
10 * PRCM Unit registers 10 * PRCM Unit registers
11 */ 11 */
12
12#ifndef __DB8500_PRCMU_REGS_H 13#ifndef __DB8500_PRCMU_REGS_H
13#define __DB8500_PRCMU_REGS_H 14#define __DB8500_PRCMU_REGS_H
14 15
15#include <linux/bitops.h>
16#include <mach/hardware.h> 16#include <mach/hardware.h>
17 17
18#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end)) 18#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end))
19 19
20#define PRCM_ARM_PLLDIVPS 0x118 20#define PRCM_SVACLK_MGT_OFF 0x008
21#define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE BITS(0, 5) 21#define PRCM_SIACLK_MGT_OFF 0x00C
22#define PRCM_ARM_PLLDIVPS_MAX_MASK 0xF 22#define PRCM_SGACLK_MGT_OFF 0x014
23 23#define PRCM_UARTCLK_MGT_OFF 0x018
24#define PRCM_PLLARM_LOCKP 0x0A8 24#define PRCM_MSP02CLK_MGT_OFF 0x01C
25#define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 BIT(1) 25#define PRCM_I2CCLK_MGT_OFF 0x020
26 26#define PRCM_SDMMCCLK_MGT_OFF 0x024
27#define PRCM_ARM_CHGCLKREQ 0x114 27#define PRCM_SLIMCLK_MGT_OFF 0x028
28#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ BIT(0) 28#define PRCM_PER1CLK_MGT_OFF 0x02C
29 29#define PRCM_PER2CLK_MGT_OFF 0x030
30#define PRCM_PLLARM_ENABLE 0x98 30#define PRCM_PER3CLK_MGT_OFF 0x034
31#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE BIT(0) 31#define PRCM_PER5CLK_MGT_OFF 0x038
32#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON BIT(8) 32#define PRCM_PER6CLK_MGT_OFF 0x03C
33 33#define PRCM_PER7CLK_MGT_OFF 0x040
34#define PRCM_ARMCLKFIX_MGT 0x0 34#define PRCM_PWMCLK_MGT_OFF 0x044 /* for DB5500 */
35#define PRCM_A9_RESETN_CLR 0x1f4 35#define PRCM_IRDACLK_MGT_OFF 0x048 /* for DB5500 */
36#define PRCM_A9_RESETN_SET 0x1f0 36#define PRCM_IRRCCLK_MGT_OFF 0x04C /* for DB5500 */
37#define PRCM_ARM_LS_CLAMP 0x30C 37#define PRCM_LCDCLK_MGT_OFF 0x044
38#define PRCM_SRAM_A9 0x308 38#define PRCM_BMLCLK_MGT_OFF 0x04C
39#define PRCM_HSITXCLK_MGT_OFF 0x050
40#define PRCM_HSIRXCLK_MGT_OFF 0x054
41#define PRCM_HDMICLK_MGT_OFF 0x058
42#define PRCM_APEATCLK_MGT_OFF 0x05C
43#define PRCM_APETRACECLK_MGT_OFF 0x060
44#define PRCM_MCDECLK_MGT_OFF 0x064
45#define PRCM_IPI2CCLK_MGT_OFF 0x068
46#define PRCM_DSIALTCLK_MGT_OFF 0x06C
47#define PRCM_DMACLK_MGT_OFF 0x074
48#define PRCM_B2R2CLK_MGT_OFF 0x078
49#define PRCM_TVCLK_MGT_OFF 0x07C
50#define PRCM_UNIPROCLK_MGT_OFF 0x278
51#define PRCM_SSPCLK_MGT_OFF 0x280
52#define PRCM_RNGCLK_MGT_OFF 0x284
53#define PRCM_UICCCLK_MGT_OFF 0x27C
54#define PRCM_MSP1CLK_MGT_OFF 0x288
55
56#define PRCM_ARM_PLLDIVPS (_PRCMU_BASE + 0x118)
57#define PRCM_ARM_PLLDIVPS_ARM_BRM_RATE 0x3f
58#define PRCM_ARM_PLLDIVPS_MAX_MASK 0xf
59
60#define PRCM_PLLARM_LOCKP (_PRCMU_BASE + 0x0a8)
61#define PRCM_PLLARM_LOCKP_PRCM_PLLARM_LOCKP3 0x2
62
63#define PRCM_ARM_CHGCLKREQ (_PRCMU_BASE + 0x114)
64#define PRCM_ARM_CHGCLKREQ_PRCM_ARM_CHGCLKREQ 0x1
65
66#define PRCM_PLLARM_ENABLE (_PRCMU_BASE + 0x98)
67#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_ENABLE 0x1
68#define PRCM_PLLARM_ENABLE_PRCM_PLLARM_COUNTON 0x100
69
70#define PRCM_ARMCLKFIX_MGT (_PRCMU_BASE + 0x0)
71#define PRCM_A9PL_FORCE_CLKEN (_PRCMU_BASE + 0x19C)
72#define PRCM_A9_RESETN_CLR (_PRCMU_BASE + 0x1f4)
73#define PRCM_A9_RESETN_SET (_PRCMU_BASE + 0x1f0)
74#define PRCM_ARM_LS_CLAMP (_PRCMU_BASE + 0x30c)
75#define PRCM_SRAM_A9 (_PRCMU_BASE + 0x308)
76
77#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9PL_FORCE_CLKEN BIT(0)
78#define PRCM_A9PL_FORCE_CLKEN_PRCM_A9AXI_FORCE_CLKEN BIT(1)
39 79
40/* ARM WFI Standby signal register */ 80/* ARM WFI Standby signal register */
41#define PRCM_ARM_WFI_STANDBY 0x130 81#define PRCM_ARM_WFI_STANDBY (_PRCMU_BASE + 0x130)
42#define PRCM_IOCR 0x310 82#define PRCM_IOCR (_PRCMU_BASE + 0x310)
43#define PRCM_IOCR_IOFORCE BIT(0) 83#define PRCM_IOCR_IOFORCE 0x1
44 84
45/* CPU mailbox registers */ 85/* CPU mailbox registers */
46#define PRCM_MBOX_CPU_VAL 0x0FC 86#define PRCM_MBOX_CPU_VAL (_PRCMU_BASE + 0x0fc)
47#define PRCM_MBOX_CPU_SET 0x100 87#define PRCM_MBOX_CPU_SET (_PRCMU_BASE + 0x100)
88#define PRCM_MBOX_CPU_CLR (_PRCMU_BASE + 0x104)
48 89
49/* Dual A9 core interrupt management unit registers */ 90/* Dual A9 core interrupt management unit registers */
50#define PRCM_A9_MASK_REQ 0x328 91#define PRCM_A9_MASK_REQ (_PRCMU_BASE + 0x328)
51#define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ BIT(0) 92#define PRCM_A9_MASK_REQ_PRCM_A9_MASK_REQ 0x1
52 93
53#define PRCM_A9_MASK_ACK 0x32C 94#define PRCM_A9_MASK_ACK (_PRCMU_BASE + 0x32c)
54#define PRCM_ARMITMSK31TO0 0x11C 95#define PRCM_ARMITMSK31TO0 (_PRCMU_BASE + 0x11c)
55#define PRCM_ARMITMSK63TO32 0x120 96#define PRCM_ARMITMSK63TO32 (_PRCMU_BASE + 0x120)
56#define PRCM_ARMITMSK95TO64 0x124 97#define PRCM_ARMITMSK95TO64 (_PRCMU_BASE + 0x124)
57#define PRCM_ARMITMSK127TO96 0x128 98#define PRCM_ARMITMSK127TO96 (_PRCMU_BASE + 0x128)
58#define PRCM_POWER_STATE_VAL 0x25C 99#define PRCM_POWER_STATE_VAL (_PRCMU_BASE + 0x25C)
59#define PRCM_ARMITVAL31TO0 0x260 100#define PRCM_ARMITVAL31TO0 (_PRCMU_BASE + 0x260)
60#define PRCM_ARMITVAL63TO32 0x264 101#define PRCM_ARMITVAL63TO32 (_PRCMU_BASE + 0x264)
61#define PRCM_ARMITVAL95TO64 0x268 102#define PRCM_ARMITVAL95TO64 (_PRCMU_BASE + 0x268)
62#define PRCM_ARMITVAL127TO96 0x26C 103#define PRCM_ARMITVAL127TO96 (_PRCMU_BASE + 0x26C)
63 104
64#define PRCM_HOSTACCESS_REQ 0x334 105#define PRCM_HOSTACCESS_REQ (_PRCMU_BASE + 0x334)
65#define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ BIT(0) 106#define PRCM_HOSTACCESS_REQ_HOSTACCESS_REQ 0x1
66 107#define ARM_WAKEUP_MODEM 0x1
67#define PRCM_ARM_IT1_CLR 0x48C 108
68#define PRCM_ARM_IT1_VAL 0x494 109#define PRCM_ARM_IT1_CLR (_PRCMU_BASE + 0x48C)
69 110#define PRCM_ARM_IT1_VAL (_PRCMU_BASE + 0x494)
70#define PRCM_ITSTATUS0 0x148 111#define PRCM_HOLD_EVT (_PRCMU_BASE + 0x174)
71#define PRCM_ITSTATUS1 0x150 112
72#define PRCM_ITSTATUS2 0x158 113#define PRCM_MOD_AWAKE_STATUS (_PRCMU_BASE + 0x4A0)
73#define PRCM_ITSTATUS3 0x160 114#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_COREPD_AWAKE BIT(0)
74#define PRCM_ITSTATUS4 0x168 115#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_AAPD_AWAKE BIT(1)
75#define PRCM_ITSTATUS5 0x484 116#define PRCM_MOD_AWAKE_STATUS_PRCM_MOD_VMODEM_OFF_ISO BIT(2)
76#define PRCM_ITCLEAR5 0x488 117
77#define PRCM_ARMIT_MASKXP70_IT 0x1018 118#define PRCM_ITSTATUS0 (_PRCMU_BASE + 0x148)
119#define PRCM_ITSTATUS1 (_PRCMU_BASE + 0x150)
120#define PRCM_ITSTATUS2 (_PRCMU_BASE + 0x158)
121#define PRCM_ITSTATUS3 (_PRCMU_BASE + 0x160)
122#define PRCM_ITSTATUS4 (_PRCMU_BASE + 0x168)
123#define PRCM_ITSTATUS5 (_PRCMU_BASE + 0x484)
124#define PRCM_ITCLEAR5 (_PRCMU_BASE + 0x488)
125#define PRCM_ARMIT_MASKXP70_IT (_PRCMU_BASE + 0x1018)
78 126
79/* System reset register */ 127/* System reset register */
80#define PRCM_APE_SOFTRST 0x228 128#define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228)
81 129
82/* Level shifter and clamp control registers */ 130/* Level shifter and clamp control registers */
83#define PRCM_MMIP_LS_CLAMP_SET 0x420 131#define PRCM_MMIP_LS_CLAMP_SET (_PRCMU_BASE + 0x420)
84#define PRCM_MMIP_LS_CLAMP_CLR 0x424 132#define PRCM_MMIP_LS_CLAMP_CLR (_PRCMU_BASE + 0x424)
133
134/* PRCMU clock/PLL/reset registers */
135#define PRCM_PLLDSI_FREQ (_PRCMU_BASE + 0x500)
136#define PRCM_PLLDSI_ENABLE (_PRCMU_BASE + 0x504)
137#define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508)
138#define PRCM_LCDCLK_MGT (_PRCMU_BASE + PRCM_LCDCLK_MGT_OFF)
139#define PRCM_MCDECLK_MGT (_PRCMU_BASE + PRCM_MCDECLK_MGT_OFF)
140#define PRCM_HDMICLK_MGT (_PRCMU_BASE + PRCM_HDMICLK_MGT_OFF)
141#define PRCM_TVCLK_MGT (_PRCMU_BASE + PRCM_TVCLK_MGT_OFF)
142#define PRCM_DSI_PLLOUT_SEL (_PRCMU_BASE + 0x530)
143#define PRCM_DSITVCLK_DIV (_PRCMU_BASE + 0x52C)
144#define PRCM_PLLDSI_LOCKP (_PRCMU_BASE + 0x508)
145#define PRCM_APE_RESETN_SET (_PRCMU_BASE + 0x1E4)
146#define PRCM_APE_RESETN_CLR (_PRCMU_BASE + 0x1E8)
147
148#define PRCM_CLKOCR (_PRCMU_BASE + 0x1CC)
149#define PRCM_CLKOCR_CLKOUT0_REF_CLK (1 << 0)
150#define PRCM_CLKOCR_CLKOUT0_MASK BITS(0, 13)
151#define PRCM_CLKOCR_CLKOUT1_REF_CLK (1 << 16)
152#define PRCM_CLKOCR_CLKOUT1_MASK BITS(16, 29)
153
154/* ePOD and memory power signal control registers */
155#define PRCM_EPOD_C_SET (_PRCMU_BASE + 0x410)
156#define PRCM_SRAM_LS_SLEEP (_PRCMU_BASE + 0x304)
157
158/* Debug power control unit registers */
159#define PRCM_POWER_STATE_SET (_PRCMU_BASE + 0x254)
160
161/* Miscellaneous unit registers */
162#define PRCM_DSI_SW_RESET (_PRCMU_BASE + 0x324)
163#define PRCM_GPIOCR (_PRCMU_BASE + 0x138)
164#define PRCM_GPIOCR_DBG_STM_MOD_CMD1 0x800
165#define PRCM_GPIOCR_DBG_UARTMOD_CMD0 0x1
85 166
86/* PRCMU HW semaphore */ 167/* PRCMU HW semaphore */
87#define PRCM_SEM 0x400 168#define PRCM_SEM (_PRCMU_BASE + 0x400)
88#define PRCM_SEM_PRCM_SEM BIT(0) 169#define PRCM_SEM_PRCM_SEM BIT(0)
89 170
90/* PRCMU clock/PLL/reset registers */ 171#define PRCM_TCR (_PRCMU_BASE + 0x1C8)
91#define PRCM_PLLDSI_FREQ 0x500 172#define PRCM_TCR_TENSEL_MASK BITS(0, 7)
92#define PRCM_PLLDSI_ENABLE 0x504 173#define PRCM_TCR_STOP_TIMERS BIT(16)
93#define PRCM_PLLDSI_LOCKP 0x508 174#define PRCM_TCR_DOZE_MODE BIT(17)
94#define PRCM_DSI_PLLOUT_SEL 0x530 175
95#define PRCM_DSITVCLK_DIV 0x52C
96#define PRCM_APE_RESETN_SET 0x1E4
97#define PRCM_APE_RESETN_CLR 0x1E8
98
99#define PRCM_TCR 0x1C8
100#define PRCM_TCR_TENSEL_MASK BITS(0, 7)
101#define PRCM_TCR_STOP_TIMERS BIT(16)
102#define PRCM_TCR_DOZE_MODE BIT(17)
103
104#define PRCM_CLKOCR 0x1CC
105#define PRCM_CLKOCR_CLKODIV0_SHIFT 0 176#define PRCM_CLKOCR_CLKODIV0_SHIFT 0
106#define PRCM_CLKOCR_CLKODIV0_MASK BITS(0, 5) 177#define PRCM_CLKOCR_CLKODIV0_MASK BITS(0, 5)
107#define PRCM_CLKOCR_CLKOSEL0_SHIFT 6 178#define PRCM_CLKOCR_CLKOSEL0_SHIFT 6
@@ -112,55 +183,22 @@
112#define PRCM_CLKOCR_CLKOSEL1_MASK BITS(22, 24) 183#define PRCM_CLKOCR_CLKOSEL1_MASK BITS(22, 24)
113#define PRCM_CLKOCR_CLK1TYPE BIT(28) 184#define PRCM_CLKOCR_CLK1TYPE BIT(28)
114 185
115#define PRCM_SGACLK_MGT 0x014
116#define PRCM_UARTCLK_MGT 0x018
117#define PRCM_MSP02CLK_MGT 0x01C
118#define PRCM_MSP1CLK_MGT 0x288
119#define PRCM_I2CCLK_MGT 0x020
120#define PRCM_SDMMCCLK_MGT 0x024
121#define PRCM_SLIMCLK_MGT 0x028
122#define PRCM_PER1CLK_MGT 0x02C
123#define PRCM_PER2CLK_MGT 0x030
124#define PRCM_PER3CLK_MGT 0x034
125#define PRCM_PER5CLK_MGT 0x038
126#define PRCM_PER6CLK_MGT 0x03C
127#define PRCM_PER7CLK_MGT 0x040
128#define PRCM_LCDCLK_MGT 0x044
129#define PRCM_BMLCLK_MGT 0x04C
130#define PRCM_HSITXCLK_MGT 0x050
131#define PRCM_HSIRXCLK_MGT 0x054
132#define PRCM_HDMICLK_MGT 0x058
133#define PRCM_APEATCLK_MGT 0x05C
134#define PRCM_APETRACECLK_MGT 0x060
135#define PRCM_MCDECLK_MGT 0x064
136#define PRCM_IPI2CCLK_MGT 0x068
137#define PRCM_DSIALTCLK_MGT 0x06C
138#define PRCM_DMACLK_MGT 0x074
139#define PRCM_B2R2CLK_MGT 0x078
140#define PRCM_TVCLK_MGT 0x07C
141#define PRCM_UNIPROCLK_MGT 0x278
142#define PRCM_SSPCLK_MGT 0x280
143#define PRCM_RNGCLK_MGT 0x284
144#define PRCM_UICCCLK_MGT 0x27C
145
146#define PRCM_CLK_MGT_CLKPLLDIV_MASK BITS(0, 4) 186#define PRCM_CLK_MGT_CLKPLLDIV_MASK BITS(0, 4)
147#define PRCM_CLK_MGT_CLKPLLSW_MASK BITS(5, 7) 187#define PRCM_CLK_MGT_CLKPLLSW_MASK BITS(5, 7)
148#define PRCM_CLK_MGT_CLKEN BIT(8) 188#define PRCM_CLK_MGT_CLKEN BIT(8)
149 189
150/* ePOD and memory power signal control registers */ 190/* GPIOCR register */
151#define PRCM_EPOD_C_SET 0x410 191#define PRCM_GPIOCR_SPI2_SELECT BIT(23)
152#define PRCM_SRAM_LS_SLEEP 0x304
153 192
154/* Debug power control unit registers */ 193#define PRCM_DDR_SUBSYS_APE_MINBW (_PRCMU_BASE + 0x438)
155#define PRCM_POWER_STATE_SET 0x254 194#define PRCM_CGATING_BYPASS (_PRCMU_BASE + 0x134)
195#define PRCM_CGATING_BYPASS_ICN2 BIT(6)
156 196
157/* Miscellaneous unit registers */ 197/* Miscellaneous unit registers */
158#define PRCM_DSI_SW_RESET 0x324 198#define PRCM_RESOUTN_SET (_PRCMU_BASE + 0x214)
159#define PRCM_GPIOCR 0x138 199#define PRCM_RESOUTN_CLR (_PRCMU_BASE + 0x218)
160
161/* GPIOCR register */
162#define PRCM_GPIOCR_SPI2_SELECT BIT(23)
163 200
164#define PRCM_DDR_SUBSYS_APE_MINBW 0x438 201/* System reset register */
202#define PRCM_APE_SOFTRST (_PRCMU_BASE + 0x228)
165 203
166#endif /* __DB8500_PRCMU_REGS_H */ 204#endif /* __DB8500_PRCMU_REGS_H */