summaryrefslogtreecommitdiff
path: root/drivers/mfd/db5500-prcmu-regs.h
blob: 0428b5e95aeff5b7da6d0b3b5b0204de0cbe8a4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
 * Copyright (C) ST-Ericsson SA 2011
 *
 * License Terms: GNU General Public License v2
 */

#ifndef __MACH_PRCMU_REGS_DB5500_H
#define __MACH_PRCMU_REGS_DB5500_H

#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end))

#define PRCM_TCR		0x1C8
#define PRCM_TCR_TENSEL_MASK	BITS(0, 7)
#define PRCM_TCR_STOP_TIMERS	BIT(16)
#define PRCM_TCR_DOZE_MODE	BIT(17)

/* PRCMU HW semaphore */
#define PRCM_SEM 0x400
#define PRCM_SEM_PRCM_SEM BIT(0)

#define DB5500_PRCM_ACLK_MGT		0x004
#define DB5500_PRCM_SVACLK_MGT		0x008
#define DB5500_PRCM_SIACLK_MGT		0x00C
#define DB5500_PRCM_SGACLK_MGT		0x014
#define DB5500_PRCM_UARTCLK_MGT		0x018
#define DB5500_PRCM_MSP02CLK_MGT	0x01C
#define DB5500_PRCM_I2CCLK_MGT		0x020
#define DB5500_PRCM_SDMMCCLK_MGT	0x024
#define DB5500_PRCM_PER1CLK_MGT		0x02C
#define DB5500_PRCM_PER2CLK_MGT		0x030
#define DB5500_PRCM_PER3CLK_MGT		0x034
#define DB5500_PRCM_PER5CLK_MGT		0x038
#define DB5500_PRCM_PER6CLK_MGT		0x03C
#define DB5500_PRCM_IRDACLK_MGT		0x040
#define DB5500_PRCM_PWMCLK_MGT		0x044
#define DB5500_PRCM_SPARE1CLK_MGT	0x048
#define DB5500_PRCM_IRRCCLK_MGT		0x04C
#define DB5500_PRCM_HDMICLK_MGT		0x058
#define DB5500_PRCM_APEATCLK_MGT	0x05C
#define DB5500_PRCM_APETRACECLK_MGT	0x060
#define DB5500_PRCM_MCDECLK_MGT		0x064
#define DB5500_PRCM_DSIALTCLK_MGT	0x06C
#define DB5500_PRCM_DMACLK_MGT		0x074
#define DB5500_PRCM_B2R2CLK_MGT		0x078
#define DB5500_PRCM_TVCLK_MGT		0x07C
#define DB5500_PRCM_RNGCLK_MGT		0x284

#define PRCM_CLK_MGT_CLKPLLDIV_MASK	BITS(0, 4)
#define PRCM_CLK_MGT_CLKPLLDIV_SHIFT	0
#define PRCM_CLK_MGT_CLKPLLSW_MASK	BITS(5, 7)
#define PRCM_CLK_MGT_CLKEN		BIT(8)

#define PRCM_ARM_IT1_CLEAR 0x48C
#define PRCM_ARM_IT1_VAL 0x494

/* CPU mailbox registers */
#define PRCM_MBOX_CPU_VAL 0x0FC
#define PRCM_MBOX_CPU_SET 0x100

/* System reset register */
#define PRCM_APE_SOFTRST 0x228

/* PRCMU clock/PLL/reset registers */
#define PRCM_PLLDSI_FREQ	0x500
#define PRCM_PLLDSI_ENABLE	0x504
#define PRCM_PLLDSI_LOCKP	0x508
#define PRCM_DSI_PLLOUT_SEL	0x530
#define PRCM_DSITVCLK_DIV	0x52C
#define PRCM_APE_RESETN_SET	0x1E4
#define PRCM_APE_RESETN_CLR	0x1E8

/* CLKOUTx SEL0 settings */
#define CLKOUT_SEL0_REF_CLK  0x01 /* 0b 0001 */
#define CLKOUT_SEL0_RTC_CLK0 0x02 /* 0b 0010 */
#define CLKOUT_SEL0_ULP_CLK  0x04 /* 0b 0100 */
#define CLKOUT_SEL0_SEL_CLK  0x08 /* 0b 1000 */

/* CLKOUTx SEL settings */
#define CLKOUT_SEL_STATIC0     0x0001 /* 0b 00 0000 0001 */
#define CLKOUT_SEL_REFCLK      0x0002 /* 0b 00 0000 0010 */
#define CLKOUT_SEL_ULPCLK      0x0004 /* 0b 00 0000 0100 */
#define CLKOUT_SEL_ARMCLK      0x0008 /* 0b 00 0000 1000 */
#define CLKOUT_SEL_SYSACC0CLK  0x0010 /* 0b 00 0001 0000 */
#define CLKOUT_SEL_SOC0PLLCLK  0x0020 /* 0b 00 0010 0000 */
#define CLKOUT_SEL_SOC1PLLCLK  0x0040 /* 0b 00 0100 0000 */
#define CLKOUT_SEL_DDRPLLCLK   0x0080 /* 0b 00 1000 0000 */
#define CLKOUT_SEL_TVCLK       0x0100 /* 0b 01 0000 0000 */
#define CLKOUT_SEL_IRDACLK     0x0200 /* 0b 10 0000 0000 */

/* CLKOUTx dividers */
#define CLKOUT_DIV_2   0x00 /* 0b 000 */
#define CLKOUT_DIV_4   0x01 /* 0b 001 */
#define CLKOUT_DIV_8   0x02 /* 0b 010 */
#define CLKOUT_DIV_16  0x03 /* 0b 011 */
#define CLKOUT_DIV_32  0x04 /* 0b 100 */
#define CLKOUT_DIV_64  0x05 /* 0b 101 */
/* Values 0x06 and 0x07 will also set the CLKOUTx divider to 64. */

/* PRCM_CLKOCR CLKOUTx Control registers */
#define PRCM_CLKOCR  0x1CC
#define PRCM_CLKOCR_CLKOUT0_SEL0_SHIFT  0
#define PRCM_CLKOCR_CLKOUT0_SEL0_MASK   BITS(0, 3)
#define PRCM_CLKOCR_CLKOUT0_SEL_SHIFT   4
#define PRCM_CLKOCR_CLKOUT0_SEL_MASK    BITS(4, 13)
#define PRCM_CLKOCR_CLKOUT1_SEL0_SHIFT  16
#define PRCM_CLKOCR_CLKOUT1_SEL0_MASK   BITS(16, 19)
#define PRCM_CLKOCR_CLKOUT1_SEL_SHIFT   20
#define PRCM_CLKOCR_CLKOUT1_SEL_MASK    BITS(20, 29)

/* PRCM_CLKODIV CLKOUTx Dividers */
#define PRCM_CLKODIV  0x188
#define PRCM_CLKODIV_CLKOUT0_DIV_SHIFT  0
#define PRCM_CLKODIV_CLKOUT0_DIV_MASK   BITS(0, 2)
#define PRCM_CLKODIV_CLKOUT1_DIV_SHIFT  16
#define PRCM_CLKODIV_CLKOUT1_DIV_MASK   BITS(16, 18)

#define PRCM_MMIP_LS_CLAMP_SET 0x420
#define PRCM_MMIP_LS_CLAMP_CLR 0x424
#define PRCM_DDR_SUBSYS_APE_MINBW 0x438

/* Miscellaneous unit registers */
#define PRCM_DSI_SW_RESET 0x324
#define PRCM_RESOUTN_SET_OFFSET 0x214
#define PRCM_RESOUTN_CLR_OFFSET 0x218

/* APE - Modem Registers */
#define PRCM_HOSTACCESS_REQ	0x334
/* APE - Modem register bit maipulation */
#define PRCM_HOSTACCESS_REQ_BIT BIT(0)
#define PRCM_APE_ACK		0x49c
#define PRCM_APE_ACK_BIT	0x01

/* Watchdog - mtimer registers */
#define PRCM_TIMER0_RTOS_COMP1_OFFSET	0x4C
#define PRCM_TIMER0_RTOS_COUNTER_OFFSET	0x40
#define PRCM_TIMER0_IRQ_EN_SET_OFFSET	0x70
#define PRCM_TIMER0_IRQ_EN_CLR_OFFSET	0x6C
#define PRCM_TIMER0_IRQ_RTOS1_SET	0x08
#define PRCM_TIMER0_IRQ_RTOS1_CLR	0x08

#endif