c3e7142ea4a6eb33377cbe71ea085583989c48db
[oweals/u-boot_mod.git] / u-boot / include / soc / qca_soc_common.h
1 /*
2  * Qualcomm/Atheros Wireless SOC common registers definitions
3  *
4  * Copyright (C) 2014 Piotr Dymacz <piotr@dymacz.pl>
5  * Copyright (C) 2008-2010 Atheros Communications Inc.
6  *
7  * Partially based on:
8  * Linux/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
9  *
10  * SPDX-License-Identifier:GPL-2.0
11  */
12
13 #ifndef _QCA_SOC_COMMON_H_
14 #define _QCA_SOC_COMMON_H_
15
16 #include <soc/soc_common.h>
17
18 /*
19  * Address map
20  */
21 #define QCA_APB_BASE_REG                        0x18000000
22 #define QCA_FLASH_BASE_REG                      0x1F000000
23
24 /*
25  * APB block
26  */
27 #define QCA_DDR_CTRL_BASE_REG           QCA_APB_BASE_REG + 0x00000000
28
29 #if (SOC_TYPE & QCA_AR933X_SOC)
30         #define QCA_HSUART_BASE_REG             QCA_APB_BASE_REG + 0x00020000
31 #else
32         #define QCA_LSUART_BASE_REG             QCA_APB_BASE_REG + 0x00020000
33         #define QCA_HSUART_BASE_REG             QCA_APB_BASE_REG + 0x00500000
34 #endif
35
36 #define QCA_USB_CFG_BASE_REG            QCA_APB_BASE_REG + 0x00030000
37 #define QCA_GPIO_BASE_REG                       QCA_APB_BASE_REG + 0x00040000
38 #define QCA_PLL_BASE_REG                        QCA_APB_BASE_REG + 0x00050000
39 #define QCA_RST_BASE_REG                        QCA_APB_BASE_REG + 0x00060000
40 #define QCA_GMAC_BASE_REG                       QCA_APB_BASE_REG + 0x00070000
41 #define QCA_RTC_BASE_REG                        QCA_APB_BASE_REG + 0x00107000
42 #define QCA_PLL_SRIF_BASE_REG           QCA_APB_BASE_REG + 0x00116000
43
44 #if (SOC_TYPE & QCA_AR933X_SOC)
45         #define QCA_SLIC_BASE_REG               QCA_APB_BASE_REG + 0x00090000
46 #elif (SOC_TYPE & QCA_AR934X_SOC) | \
47           (SOC_TYPE & QCA_AR955X_SOC)
48         #define QCA_SLIC_BASE_REG               QCA_APB_BASE_REG + 0x000A9000
49 #endif
50
51 /*
52  * DDR registers
53  */
54 #define QCA_DDR_CFG_REG                                                 QCA_DDR_CTRL_BASE_REG + 0x000
55 #define QCA_DDR_CFG2_REG                                                QCA_DDR_CTRL_BASE_REG + 0x004
56 #define QCA_DDR_MODE_REG                                                QCA_DDR_CTRL_BASE_REG + 0x008
57 #define QCA_DDR_EXTENDED_MODE_REG                               QCA_DDR_CTRL_BASE_REG + 0x00C
58 #define QCA_DDR_CTRL_REG                                                QCA_DDR_CTRL_BASE_REG + 0x010
59 #define QCA_DDR_REFRESH_REG                                             QCA_DDR_CTRL_BASE_REG + 0x014
60 #define QCA_DDR_RD_DATA_THIS_CYCLE_REG                  QCA_DDR_CTRL_BASE_REG + 0x018
61 #define QCA_DDR_TAP_CTRL_0_REG                                  QCA_DDR_CTRL_BASE_REG + 0x01C
62 #define QCA_DDR_TAP_CTRL_1_REG                                  QCA_DDR_CTRL_BASE_REG + 0x020
63
64 #if (SOC_TYPE & QCA_AR933X_SOC)
65         #define QCA_DDR_WB_FLUSH_GE0_REG                        QCA_DDR_CTRL_BASE_REG + 0x07C
66         #define QCA_DDR_WB_FLUSH_GE1_REG                        QCA_DDR_CTRL_BASE_REG + 0x080
67         #define QCA_DDR_WB_FLUSH_USB_REG                        QCA_DDR_CTRL_BASE_REG + 0x084
68 #else
69         #define QCA_DDR_WB_FLUSH_GE0_REG                        QCA_DDR_CTRL_BASE_REG + 0x09C
70         #define QCA_DDR_WB_FLUSH_GE1_REG                        QCA_DDR_CTRL_BASE_REG + 0x0A0
71         #define QCA_DDR_WB_FLUSH_USB_REG                        QCA_DDR_CTRL_BASE_REG + 0x0A4
72         #define QCA_DDR_WB_FLUSH_PCIE_REG                       QCA_DDR_CTRL_BASE_REG + 0x0A8
73         #define QCA_DDR_WB_FLUSH_WMAC_REG                       QCA_DDR_CTRL_BASE_REG + 0x0AC
74         #define QCA_DDR_WB_FLUSH_SRC1_REG                       QCA_DDR_CTRL_BASE_REG + 0x0B0
75         #define QCA_DDR_WB_FLUSH_SRC2_REG                       QCA_DDR_CTRL_BASE_REG + 0x0B4
76 #endif
77
78 #if (SOC_TYPE & QCA_AR933X_SOC)
79         #define QCA_DDR_DDR2_CFG_REG                            QCA_DDR_CTRL_BASE_REG + 0x08C
80         #define QCA_DDR_EMR2_REG                                        QCA_DDR_CTRL_BASE_REG + 0x090
81         #define QCA_DDR_EMR3_REG                                        QCA_DDR_CTRL_BASE_REG + 0x094
82         #define QCA_DDR_BURST_REG                                       QCA_DDR_CTRL_BASE_REG + 0x098
83         #define QCA_AHB_MASTER_TOUT_MAX_REG                     QCA_DDR_CTRL_BASE_REG + 0x09C
84         #define QCA_AHB_MASTER_TOUT_CURR_REG            QCA_DDR_CTRL_BASE_REG + 0x0A0
85         #define QCA_AHB_MASTER_TOUT_SLV_ADDR_REG        QCA_DDR_CTRL_BASE_REG + 0x0A4
86         #define QCA_SDR_CFG_REG                                         QCA_DDR_CTRL_BASE_REG + 0x0D8
87 #else
88         #define QCA_DDR_DDR2_CFG_REG                            QCA_DDR_CTRL_BASE_REG + 0x0B8
89         #define QCA_DDR_EMR2_REG                                        QCA_DDR_CTRL_BASE_REG + 0x0BC
90         #define QCA_DDR_EMR3_REG                                        QCA_DDR_CTRL_BASE_REG + 0x0C0
91         #define QCA_DDR_BURST_REG                                       QCA_DDR_CTRL_BASE_REG + 0x0C4
92         #define QCA_DDR_BURST2_REG                                      QCA_DDR_CTRL_BASE_REG + 0x0C8
93         #define QCA_AHB_MASTER_TOUT_MAX_REG                     QCA_DDR_CTRL_BASE_REG + 0x0CC
94         #define QCA_AHB_MASTER_TOUT_CURR_REG            QCA_DDR_CTRL_BASE_REG + 0x0D0
95         #define QCA_AHB_MASTER_TOUT_SLV_ADDR_REG        QCA_DDR_CTRL_BASE_REG + 0x0D4
96         #define QCA_DDR_CTRL_CFG_REG                            QCA_DDR_CTRL_BASE_REG + 0x108
97         #define QCA_DDR_SELF_REFRESH_CTRL_REG           QCA_DDR_CTRL_BASE_REG + 0x110
98         #define QCA_DDR_SELF_REFRESH_TIMER_REG          QCA_DDR_CTRL_BASE_REG + 0x114
99         #define QCA_DDR_WMAC_FLUSH_REG                          QCA_DDR_CTRL_BASE_REG + 0x128
100         #define QCA_DDR_CFG3_REG                                        QCA_DDR_CTRL_BASE_REG + 0x15C
101 #endif
102
103 /*
104  * Low-Speed UART registers
105  */
106 #define QCA_LSUART_RBR_REG              QCA_LSUART_BASE_REG + 0x00
107 #define QCA_LSUART_THR_REG              QCA_LSUART_BASE_REG + 0x00
108 #define QCA_LSUART_DLL_REG              QCA_LSUART_BASE_REG + 0x00
109 #define QCA_LSUART_DLH_REG              QCA_LSUART_BASE_REG + 0x04
110 #define QCA_LSUART_IER_REG              QCA_LSUART_BASE_REG + 0x04
111 #define QCA_LSUART_IIR_REG              QCA_LSUART_BASE_REG + 0x08
112 #define QCA_LSUART_FCR_REG              QCA_LSUART_BASE_REG + 0x08
113 #define QCA_LSUART_LCR_REG              QCA_LSUART_BASE_REG + 0x0C
114 #define QCA_LSUART_MCR_REG              QCA_LSUART_BASE_REG + 0x10
115 #define QCA_LSUART_LSR_REG              QCA_LSUART_BASE_REG + 0x14
116 #define QCA_LSUART_MSR_REG              QCA_LSUART_BASE_REG + 0x18
117
118 /*
119  * Low-Speed UART registers BIT fields
120  */
121
122 /* RBR register (Receive buffer) */
123 #define QCA_LSUART_RBR_RBR_SHIFT                                0
124 #define QCA_LSUART_RBR_RBR_MASK                                 BITS(QCA_LSUART_RBR_RBR_SHIFT, 8)
125
126 /* THR register (Transmit holding) */
127 #define QCA_LSUART_THR_THR_SHIFT                                0
128 #define QCA_LSUART_THR_THR_MASK                                 BITS(QCA_LSUART_THR_THR_SHIFT, 8)
129
130 /* DLL register (Divisor latch low) */
131 #define QCA_LSUART_DLL_DLL_SHIFT                                0
132 #define QCA_LSUART_DLL_DLL_MASK                                 BITS(QCA_LSUART_DLL_DLL_SHIFT, 8)
133
134 /* DLH register (Divisor latch high) */
135 #define QCA_LSUART_DLH_DLH_SHIFT                                0
136 #define QCA_LSUART_DLH_DLH_MASK                                 BITS(QCA_LSUART_DLH_DLH_SHIFT, 8)
137
138 /* IER register (Interrupt enable) */
139 #define QCA_LSUART_IER_ERBFI_SHIFT                              0
140 #define QCA_LSUART_IER_ERBFI_MASK                               (1 << QCA_LSUART_IER_ERBFI_SHIFT)
141 #define QCA_LSUART_IER_ETBEI_SHIFT                              1
142 #define QCA_LSUART_IER_ETBEI_MASK                               (1 << QCA_LSUART_IER_ETBEI_SHIFT)
143 #define QCA_LSUART_IER_ELSI_SHIFT                               2
144 #define QCA_LSUART_IER_ELSI_MASK                                (1 << QCA_LSUART_IER_ELSI_SHIFT)
145 #define QCA_LSUART_IER_EDDSI_SHIFT                              3
146 #define QCA_LSUART_IER_EDDSI_MASK                               (1 << QCA_LSUART_IER_EDDSI_SHIFT)
147
148 /* IIR register (Interrupt identity) */
149 #define QCA_LSUART_IIR_IID_SHIFT                                0
150 #define QCA_LSUART_IIR_IID_MASK                                 BITS(QCA_LSUART_IIR_IID_SHIFT, 4)
151 #define QCA_LSUART_IIR_FIFO_STATUS_SHIFT                6
152 #define QCA_LSUART_IIR_FIFO_STATUS_MASK                 BITS(QCA_LSUART_IIR_FIFO_STATUS_SHIFT, 2)
153
154 /* FCR register (FIFO control) */
155 #define QCA_LSUART_FCR_FIFO_EN_SHIFT                    0
156 #define QCA_LSUART_FCR_EDDSI_MASK                               (1 << QCA_LSUART_FCR_FIFO_EN_SHIFT)
157 #define QCA_LSUART_FCR_RCVR_FIFO_RST_SHIFT              1
158 #define QCA_LSUART_FCR_RCVR_FIFO_RST_MASK               (1 << QCA_LSUART_FCR_RCVR_FIFO_RST_SHIFT)
159 #define QCA_LSUART_FCR_XMIT_FIFO_RST_SHIFT              2
160 #define QCA_LSUART_FCR_XMIT_FIFO_RST_MASK               (1 << QCA_LSUART_FCR_XMIT_FIFO_RST_SHIFT)
161 #define QCA_LSUART_FCR_DMA_MODE_SHIFT                   3
162 #define QCA_LSUART_FCR_DMA_MODE_MASK                    (1 << QCA_LSUART_FCR_DMA_MODE_SHIFT)
163 #define QCA_LSUART_FCR_RCVR_TRIG_SHIFT                  6
164 #define QCA_LSUART_FCR_RCVR_TRIG_MASK                   BITS(QCA_LSUART_FCR_RCVR_TRIG_SHIFT, 2)
165
166 /* LCR register (Line control) */
167 #define QCA_LSUART_LCR_CLS_SHIFT                                0
168 #define QCA_LSUART_LCR_CLS_MASK                                 BITS(QCA_LSUART_LCR_CLS_SHIFT, 2)
169 #define QCA_LSUART_LCR_CLS_5BIT_VAL                             0x0
170 #define QCA_LSUART_LCR_CLS_6BIT_VAL                             0x1
171 #define QCA_LSUART_LCR_CLS_7BIT_VAL                             0x2
172 #define QCA_LSUART_LCR_CLS_8BIT_VAL                             0x3
173 #define QCA_LSUART_LCR_STOP_SHIFT                               2
174 #define QCA_LSUART_LCR_STOP_MASK                                (1 << QCA_LSUART_LCR_STOP_SHIFT)
175 #define QCA_LSUART_LCR_PEN_SHIFT                                3
176 #define QCA_LSUART_LCR_PEN_MASK                                 (1 << QCA_LSUART_LCR_PEN_SHIFT)
177 #define QCA_LSUART_LCR_EPS_SHIFT                                4
178 #define QCA_LSUART_LCR_EPS_MASK                                 (1 << QCA_LSUART_LCR_EPS_SHIFT)
179 #define QCA_LSUART_LCR_BREAK_SHIFT                              6
180 #define QCA_LSUART_LCR_BREAK_MASK                               (1 << QCA_LSUART_LCR_BREAK_SHIFT)
181 #define QCA_LSUART_LCR_DLAB_SHIFT                               7
182 #define QCA_LSUART_LCR_DLAB_MASK                                (1 << QCA_LSUART_LCR_DLAB_SHIFT)
183
184 /* MCR register (Modem control) */
185 #define QCA_LSUART_MCR_DTR_SHIFT                                0
186 #define QCA_LSUART_MCR_DTR_MASK                                 (1 << QCA_LSUART_MCR_DTR_SHIFT)
187 #define QCA_LSUART_MCR_RTS_SHIFT                                1
188 #define QCA_LSUART_MCR_RTS_MASK                                 (1 << QCA_LSUART_MCR_RTS_SHIFT)
189 #define QCA_LSUART_MCR_OUT1_SHIFT                               2
190 #define QCA_LSUART_MCR_OUT1_MASK                                (1 << QCA_LSUART_MCR_OUT1_SHIFT)
191 #define QCA_LSUART_MCR_OUT2_SHIFT                               3
192 #define QCA_LSUART_MCR_OUT2_MASK                                (1 << QCA_LSUART_MCR_OUT2_SHIFT)
193 #define QCA_LSUART_MCR_LOOPBACK_SHIFT                   5
194 #define QCA_LSUART_MCR_LOOPBACK_MASK                    (1 << QCA_LSUART_MCR_LOOPBACK_SHIFT)
195
196 /* LSR register (Line status) */
197 #define QCA_LSUART_LSR_DR_SHIFT                                 0
198 #define QCA_LSUART_LSR_DR_MASK                                  (1 << QCA_LSUART_LSR_DR_SHIFT)
199 #define QCA_LSUART_LSR_OE_SHIFT                                 1
200 #define QCA_LSUART_LSR_OE_MASK                                  (1 << QCA_LSUART_LSR_OE_SHIFT)
201 #define QCA_LSUART_LSR_PE_SHIFT                                 2
202 #define QCA_LSUART_LSR_PE_MASK                                  (1 << QCA_LSUART_LSR_PE_SHIFT)
203 #define QCA_LSUART_LSR_FE_SHIFT                                 3
204 #define QCA_LSUART_LSR_FE_MASK                                  (1 << QCA_LSUART_LSR_FE_SHIFT)
205 #define QCA_LSUART_LSR_BI_SHIFT                                 4
206 #define QCA_LSUART_LSR_BI_MASK                                  (1 << QCA_LSUART_LSR_BI_SHIFT)
207 #define QCA_LSUART_LSR_THRE_SHIFT                               5
208 #define QCA_LSUART_LSR_THRE_MASK                                (1 << QCA_LSUART_LSR_THRE_SHIFT)
209 #define QCA_LSUART_LSR_TEMT_SHIFT                               6
210 #define QCA_LSUART_LSR_TEMT_MASK                                (1 << QCA_LSUART_LSR_TEMT_SHIFT)
211 #define QCA_LSUART_LSR_FERR_SHIFT                               7
212 #define QCA_LSUART_LSR_FERR_MASK                                (1 << QCA_LSUART_LSR_FERR_SHIFT)
213
214 /* MCR register (Modem status) */
215 #define QCA_LSUART_MCR_DCTS_SHIFT                               0
216 #define QCA_LSUART_MCR_DCTS_MASK                                (1 << QCA_LSUART_MCR_DCTS_SHIFT)
217 #define QCA_LSUART_MCR_DDSR_SHIFT                               1
218 #define QCA_LSUART_MCR_DDSR_MASK                                (1 << QCA_LSUART_MCR_DDSR_SHIFT)
219 #define QCA_LSUART_MCR_TERI_SHIFT                               2
220 #define QCA_LSUART_MCR_TERI_MASK                                (1 << QCA_LSUART_MCR_TERI_SHIFT)
221 #define QCA_LSUART_MCR_DDCD_SHIFT                               3
222 #define QCA_LSUART_MCR_DDCD_MASK                                (1 << QCA_LSUART_MCR_DDCD_SHIFT)
223 #define QCA_LSUART_MCR_CTS_SHIFT                                4
224 #define QCA_LSUART_MCR_CTS_MASK                                 (1 << QCA_LSUART_MCR_CTS_SHIFT)
225 #define QCA_LSUART_MCR_DSR_SHIFT                                5
226 #define QCA_LSUART_MCR_DSR_MASK                                 (1 << QCA_LSUART_MCR_DSR_SHIFT)
227 #define QCA_LSUART_MCR_RI_SHIFT                                 6
228 #define QCA_LSUART_MCR_RI_MASK                                  (1 << QCA_LSUART_MCR_RI_SHIFT)
229 #define QCA_LSUART_MCR_DCD_SHIFT                                7
230 #define QCA_LSUART_MCR_DCD_MASK                                 (1 << QCA_LSUART_MCR_DCD_SHIFT)
231
232 /*
233  * High-Speed UART registers
234  */
235 #define QCA_HSUART_DATA_REG                                             QCA_HSUART_BASE_REG + 0x00
236 #define QCA_HSUART_CS_REG                                               QCA_HSUART_BASE_REG + 0x04
237 #define QCA_HSUART_CLK_REG                                              QCA_HSUART_BASE_REG + 0x08
238 #define QCA_HSUART_INT_REG                                              QCA_HSUART_BASE_REG + 0x0C
239 #define QCA_HSUART_INT_EN_REG                                   QCA_HSUART_BASE_REG + 0x10
240
241 /*
242  * High-Speed UART registers BIT fields
243  */
244
245 /* UART_DATA register (UART transmit and RX FIFO interface ) */
246 #define QCA_HSUART_DATA_TX_RX_DATA_SHIFT                0
247 #define QCA_HSUART_DATA_TX_RX_DATA_MASK                 BITS(QCA_HSUART_DATA_TX_RX_DATA_SHIFT, 8)
248 #define QCA_HSUART_DATA_RX_CSR_SHIFT                    8
249 #define QCA_HSUART_DATA_RX_CSR_MASK                             (1 << QCA_HSUART_DATA_RX_CSR_SHIFT)
250 #define QCA_HSUART_DATA_TX_CSR_SHIFT                    9
251 #define QCA_HSUART_DATA_TX_CSR_MASK                             (1 << QCA_HSUART_DATA_TX_CSR_SHIFT)
252
253 /* UART_CS register (UART configuration and status) */
254 #define QCA_HSUART_CS_PAR_MODE_SHIFT                    0
255 #define QCA_HSUART_CS_PAR_MODE_MASK                             BITS(QCA_HSUART_CS_PAR_MODE_SHIFT, 2)
256 #define QCA_HSUART_CS_PAR_MODE_NO_VAL                   0x0
257 #define QCA_HSUART_CS_PAR_MODE_ODD_VAL                  0x2
258 #define QCA_HSUART_CS_PAR_MODE_OVEN_VAL                 0x3
259 #define QCA_HSUART_CS_IFACE_MODE_SHIFT                  2
260 #define QCA_HSUART_CS_IFACE_MODE_MASK                   BITS(QCA_HSUART_CS_IFACE_MODE_SHIFT, 2)
261 #define QCA_HSUART_CS_IFACE_MODE_DISABLE_VAL    0x0
262 #define QCA_HSUART_CS_IFACE_MODE_DTE_VAL                0x1
263 #define QCA_HSUART_CS_IFACE_MODE_DCE_VAL                0x2
264 #define QCA_HSUART_CS_FLOW_MODE_SHIFT                   4
265 #define QCA_HSUART_CS_FLOW_MODE_MASK                    BITS(QCA_HSUART_CS_FLOW_MODE_SHIFT, 2)
266 #define QCA_HSUART_CS_FLOW_MODE_NO_VAL                  0x0
267 #define QCA_HSUART_CS_FLOW_MODE_HW_VAL                  0x2
268 #define QCA_HSUART_CS_FLOW_MODE_INV_VAL                 0x3
269 #define QCA_HSUART_CS_DMA_EN_SHIFT                              6
270 #define QCA_HSUART_CS_DMA_EN_MASK                               (1 << QCA_HSUART_CS_DMA_EN_SHIFT)
271 #define QCA_HSUART_CS_RX_READY_ORIDE_SHIFT              7
272 #define QCA_HSUART_CS_RX_READY_ORIDE_MASK               (1 << QCA_HSUART_CS_RX_READY_ORIDE_SHIFT)
273 #define QCA_HSUART_CS_TX_READY_ORIDE_SHIFT              8
274 #define QCA_HSUART_CS_TX_READY_ORIDE_MASK               (1 << QCA_HSUART_CS_TX_READY_ORIDE_SHIFT)
275 #define QCA_HSUART_CS_TX_READY_SHIFT                    9
276 #define QCA_HSUART_CS_TX_READY_MASK                             (1 << QCA_HSUART_CS_TX_READY_SHIFT)
277 #define QCA_HSUART_CS_RX_BREAK_SHIFT                    10
278 #define QCA_HSUART_CS_RX_BREAK_MASK                             (1 << QCA_HSUART_CS_RX_BREAK_SHIFT)
279 #define QCA_HSUART_CS_TX_BREAK_SHIFT                    11
280 #define QCA_HSUART_CS_TX_BREAK_MASK                             (1 << QCA_HSUART_CS_TX_BREAK_SHIFT)
281 #define QCA_HSUART_CS_HOST_INT_SHIFT                    12
282 #define QCA_HSUART_CS_HOST_INT_MASK                             (1 << QCA_HSUART_CS_HOST_INT_SHIFT)
283 #define QCA_HSUART_CS_HOST_INT_EN_SHIFT                 13
284 #define QCA_HSUART_CS_HOST_INT_EN_MASK                  (1 << QCA_HSUART_CS_HOST_INT_EN_SHIFT)
285 #define QCA_HSUART_CS_TX_BUSY_SHIFT                             14
286 #define QCA_HSUART_CS_TX_BUSY_MASK                              (1 << QCA_HSUART_CS_TX_BUSY_SHIFT)
287 #define QCA_HSUART_CS_RX_BUSY_SHIFT                             15
288 #define QCA_HSUART_CS_RX_BUSY_MASK                              (1 << QCA_HSUART_CS_RX_BUSY_SHIFT)
289
290 /* UART_CLOCK register (UART clock) */
291 #define QCA_HSUART_CLK_STEP_SHIFT                               0
292 #define QCA_HSUART_CLK_STEP_MASK                                BITS(QCA_HSUART_CLK_STEP_SHIFT, 16)
293 #define QCA_HSUART_CLK_STEP_MAX_VAL                             0x3333
294 #define QCA_HSUART_CLK_SCALE_SHIFT                              16
295 #define QCA_HSUART_CLK_SCALE_MASK                               BITS(QCA_HSUART_CLK_SCALE_SHIFT, 8)
296 #define QCA_HSUART_CLK_SCALE_MAX_VAL                    0xFF
297
298 /* UART_INT register (UART interrupt/control status) */
299 #define QCA_HSUART_INT_RX_VALID_SHIFT                   0
300 #define QCA_HSUART_INT_RX_VALID_MASK                    (1 << QCA_HSUART_INT_RX_VALID_SHIFT)
301 #define QCA_HSUART_INT_TX_READY_SHIFT                   1
302 #define QCA_HSUART_INT_TX_READY_MASK                    (1 << QCA_HSUART_INT_TX_READY_SHIFT)
303 #define QCA_HSUART_INT_RX_FRAMING_ERR_SHIFT             2
304 #define QCA_HSUART_INT_RX_FRAMING_ERR_MASK              (1 << QCA_HSUART_INT_RX_FRAMING_ERR_SHIFT)
305 #define QCA_HSUART_INT_RX_OVERFLOW_ERR_SHIFT    3
306 #define QCA_HSUART_INT_RX_OVERFLOW_ERR_MASK             (1 << QCA_HSUART_INT_RX_OVERFLOW_ERR_SHIFT)
307 #define QCA_HSUART_INT_TX_OVERFLOW_ERR_SHIFT    4
308 #define QCA_HSUART_INT_TX_OVERFLOW_ERR_MASK             (1 << QCA_HSUART_INT_TX_OVERFLOW_ERR_SHIFT)
309 #define QCA_HSUART_INT_RX_PARITY_ERR_SHIFT              5
310 #define QCA_HSUART_INT_RX_PARITY_ERR_MASK               (1 << QCA_HSUART_INT_RX_PARITY_ERR_SHIFT)
311 #define QCA_HSUART_INT_RX_BREAK_ON_SHIFT                6
312 #define QCA_HSUART_INT_RX_BREAK_ON_MASK                 (1 << QCA_HSUART_INT_RX_BREAK_ON_SHIFT)
313 #define QCA_HSUART_INT_RX_BREAK_OFF_SHIFT               7
314 #define QCA_HSUART_INT_RX_BREAK_OFF_MASK                (1 << QCA_HSUART_INT_RX_BREAK_OFF_SHIFT)
315 #define QCA_HSUART_INT_RX_FULL_SHIFT                    8
316 #define QCA_HSUART_INT_RX_FULL_MASK                             (1 << QCA_HSUART_INT_RX_FULL_SHIFT)
317 #define QCA_HSUART_INT_TX_EMPTY_SHIFT                   9
318 #define QCA_HSUART_INT_TX_EMPTY_MASK                    (1 << QCA_HSUART_INT_TX_EMPTY_SHIFT)
319
320 /* UART_INT_EN register (UART interrupt enable) */
321 #define QCA_HSUART_INT_EN_RX_VALID_SHIFT                0
322 #define QCA_HSUART_INT_EN_RX_VALID_MASK                 (1 << QCA_HSUART_INT_EN_RX_VALID_SHIFT)
323 #define QCA_HSUART_INT_EN_TX_READY_SHIFT                1
324 #define QCA_HSUART_INT_EN_TX_READY_MASK                 (1 << QCA_HSUART_INT_EN_TX_READY_SHIFT)
325 #define QCA_HSUART_INT_EN_RX_FRAMING_ERR_SHIFT  2
326 #define QCA_HSUART_INT_EN_RX_FRAMING_ERR_MASK   (1 << QCA_HSUART_INT_EN_RX_FRAMING_ERR_SHIFT)
327 #define QCA_HSUART_INT_EN_RX_OVERFLOW_ERR_SHIFT 3
328 #define QCA_HSUART_INT_EN_RX_OVERFLOW_ERR_MASK  (1 << QCA_HSUART_INT_EN_RX_OVERFLOW_ERR_SHIFT)
329 #define QCA_HSUART_INT_EN_TX_OVERFLOW_ERR_SHIFT 4
330 #define QCA_HSUART_INT_EN_TX_OVERFLOW_ERR_MASK  (1 << QCA_HSUART_INT_EN_TX_OVERFLOW_ERR_SHIFT)
331 #define QCA_HSUART_INT_EN_RX_PARITY_ERR_SHIFT   5
332 #define QCA_HSUART_INT_EN_RX_PARITY_ERR_MASK    (1 << QCA_HSUART_INT_EN_RX_PARITY_ERR_SHIFT)
333 #define QCA_HSUART_INT_EN_RX_BREAK_ON_SHIFT             6
334 #define QCA_HSUART_INT_EN_RX_BREAK_ON_MASK              (1 << QCA_HSUART_INT_EN_RX_BREAK_ON_SHIFT)
335 #define QCA_HSUART_INT_EN_RX_BREAK_OFF_SHIFT    7
336 #define QCA_HSUART_INT_EN_RX_BREAK_OFF_MASK             (1 << QCA_HSUART_INT_EN_RX_BREAK_OFF_SHIFT)
337 #define QCA_HSUART_INT_EN_RX_FULL_SHIFT                 8
338 #define QCA_HSUART_INT_EN_RX_FULL_MASK                  (1 << QCA_HSUART_INT_EN_RX_FULL_SHIFT)
339 #define QCA_HSUART_INT_EN_TX_EMPTY_SHIFT                9
340 #define QCA_HSUART_INT_EN_TX_EMPTY_MASK                 (1 << QCA_HSUART_INT_EN_TX_EMPTY_SHIFT)
341
342
343 /*
344  * GPIO registers
345  */
346 #if (SOC_TYPE & QCA_AR933X_SOC)
347         #define QCA_GPIO_COUNT                                          30
348 #elif (SOC_TYPE & QCA_AR934X_SOC)
349         #define QCA_GPIO_COUNT                                          23
350 #elif (SOC_TYPE & QCA_QCA953X_SOC)
351         #define QCA_GPIO_COUNT                                          18
352 #elif (SOC_TYPE & QCA_QCA955X_SOC)
353         #define QCA_GPIO_COUNT                                          24
354 #endif
355
356 #define QCA_GPIO_OE_REG                                                 QCA_GPIO_BASE_REG + 0x00
357 #define QCA_GPIO_IN_REG                                                 QCA_GPIO_BASE_REG + 0x04
358 #define QCA_GPIO_OUT_REG                                                QCA_GPIO_BASE_REG + 0x08
359 #define QCA_GPIO_SET_REG                                                QCA_GPIO_BASE_REG + 0x0C
360 #define QCA_GPIO_CLEAR_REG                                              QCA_GPIO_BASE_REG + 0x10
361 #define QCA_GPIO_INT_EN_REG                                             QCA_GPIO_BASE_REG + 0x14
362 #define QCA_GPIO_INT_TYPE_REG                                   QCA_GPIO_BASE_REG + 0x18
363 #define QCA_GPIO_INT_POLARITY_REG                               QCA_GPIO_BASE_REG + 0x1C
364 #define QCA_GPIO_INT_PENDING_REG                                QCA_GPIO_BASE_REG + 0x20
365 #define QCA_GPIO_INT_MASK_REG                                   QCA_GPIO_BASE_REG + 0x24
366
367 #if (SOC_TYPE & QCA_AR933X_SOC)
368         #define QCA_GPIO_FUNC_1_REG                                     QCA_GPIO_BASE_REG + 0x28
369         #define QCA_GPIO_IN_ETH_SWITCH_LED_REG          QCA_GPIO_BASE_REG + 0x2C
370         #define QCA_GPIO_FUNC_2_REG                                     QCA_GPIO_BASE_REG + 0x30
371         #define QCA_GPIO_WLAN_MUX_SET0_REG                      QCA_GPIO_BASE_REG + 0x34
372         #define QCA_GPIO_WLAN_MUX_SET1_REG                      QCA_GPIO_BASE_REG + 0x38
373         #define QCA_GPIO_WLAN_MUX_SET2_REG                      QCA_GPIO_BASE_REG + 0x3C
374         #define QCA_GPIO_WLAN_MUX_SET3_REG                      QCA_GPIO_BASE_REG + 0x40
375 #else
376         #if (SOC_TYPE & QCA_QCA955X_SOC)
377                 #define QCA_GPIO_SPARE_BITS_REG                 QCA_GPIO_BASE_REG + 0x28
378         #else
379                 #define QCA_GPIO_IN_ETH_SWITCH_LED_REG  QCA_GPIO_BASE_REG + 0x28
380         #endif
381
382         #define QCA_GPIO_OUT_FUNC0_REG                          QCA_GPIO_BASE_REG + 0x2C
383         #define QCA_GPIO_OUT_FUNC1_REG                          QCA_GPIO_BASE_REG + 0x30
384         #define QCA_GPIO_OUT_FUNC2_REG                          QCA_GPIO_BASE_REG + 0x34
385         #define QCA_GPIO_OUT_FUNC3_REG                          QCA_GPIO_BASE_REG + 0x38
386         #define QCA_GPIO_OUT_FUNC4_REG                          QCA_GPIO_BASE_REG + 0x3C
387         #define QCA_GPIO_OUT_FUNC5_REG                          QCA_GPIO_BASE_REG + 0x40
388         #define QCA_GPIO_IN_EN0_REG                                     QCA_GPIO_BASE_REG + 0x44
389         #define QCA_GPIO_IN_EN1_REG                                     QCA_GPIO_BASE_REG + 0x48
390         #define QCA_GPIO_IN_EN2_REG                                     QCA_GPIO_BASE_REG + 0x4C
391         #define QCA_GPIO_IN_EN3_REG                                     QCA_GPIO_BASE_REG + 0x50
392         #define QCA_GPIO_IN_EN4_REG                                     QCA_GPIO_BASE_REG + 0x54
393         #define QCA_GPIO_IN_EN9_REG                                     QCA_GPIO_BASE_REG + 0x68
394         #define QCA_GPIO_FUNC_REG                                       QCA_GPIO_BASE_REG + 0x6C
395 #endif
396
397 /*
398  * GPIO registers BIT fields
399  */
400
401 /* GPIO_FUNCTION_1 register (GPIO function) */
402 #if (SOC_TYPE & QCA_AR933X_SOC)
403         #define QCA_GPIO_FUNC_1_JTAG_DIS_SHIFT                  0
404         #define QCA_GPIO_FUNC_1_JTAG_DIS_MASK                   (1 << QCA_GPIO_FUNC_1_JTAG_DIS_SHIFT)
405         #define QCA_GPIO_FUNC_1_UART_EN_SHIFT                   1
406         #define QCA_GPIO_FUNC_1_UART_EN_MASK                    (1 << QCA_GPIO_FUNC_1_UART_EN_SHIFT)
407         #define QCA_GPIO_FUNC_1_UART_RTS_CTS_EN_SHIFT   2
408         #define QCA_GPIO_FUNC_1_UART_RTS_CTS_EN_MASK    (1 << QCA_GPIO_FUNC_1_UART_RTS_CTS_EN_SHIFT)
409         #define QCA_GPIO_FUNC_1_ETH_SW_LED0_EN_SHIFT    3
410         #define QCA_GPIO_FUNC_1_ETH_SW_LED0_EN_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED0_EN_SHIFT)
411         #define QCA_GPIO_FUNC_1_ETH_SW_LED1_EN_SHIFT    4
412         #define QCA_GPIO_FUNC_1_ETH_SW_LED1_EN_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED1_EN_SHIFT)
413         #define QCA_GPIO_FUNC_1_ETH_SW_LED2_EN_SHIFT    5
414         #define QCA_GPIO_FUNC_1_ETH_SW_LED2_EN_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED2_EN_SHIFT)
415         #define QCA_GPIO_FUNC_1_ETH_SW_LED3_EN_SHIFT    6
416         #define QCA_GPIO_FUNC_1_ETH_SW_LED3_EN_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED3_EN_SHIFT)
417         #define QCA_GPIO_FUNC_1_ETH_SW_LED4_EN_SHIFT    7
418         #define QCA_GPIO_FUNC_1_ETH_SW_LED4_EN_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED4_EN_SHIFT)
419         #define QCA_GPIO_FUNC_1_SPI_CS_EN1_SHIFT                13
420         #define QCA_GPIO_FUNC_1_SPI_CS_EN1_MASK                 (1 << QCA_GPIO_FUNC_1_SPI_CS_EN1_SHIFT)
421         #define QCA_GPIO_FUNC_1_SPI_CS_EN2_SHIFT                14
422         #define QCA_GPIO_FUNC_1_SPI_CS_EN2_MASK                 (1 << QCA_GPIO_FUNC_1_SPI_CS_EN2_SHIFT)
423         #define QCA_GPIO_FUNC_1_SPI_EN_SHIFT                    18
424         #define QCA_GPIO_FUNC_1_SPI_EN_MASK                             (1 << QCA_GPIO_FUNC_1_SPI_EN_SHIFT)
425         #define QCA_GPIO_FUNC_1_ETH_SW_LED_ACT_SHIFT    23
426         #define QCA_GPIO_FUNC_1_ETH_SW_LED_ACT_MASK             (1 << QCA_GPIO_FUNC_1_ETH_SW_LED_ACT_SHIFT)
427         #define QCA_GPIO_FUNC_1_ETH_SW_LED_COLL_SHIFT   24
428         #define QCA_GPIO_FUNC_1_ETH_SW_LED_COLL_MASK    (1 << QCA_GPIO_FUNC_1_ETH_SW_LED_COLL_SHIFT)
429         #define QCA_GPIO_FUNC_1_ETH_SW_LED_DUPL_SHIFT   25
430         #define QCA_GPIO_FUNC_1_ETH_SW_LED_DUPL_MASK    (1 << QCA_GPIO_FUNC_1_ETH_SW_LED_DUPL_SHIFT)
431         #define QCA_GPIO_FUNC_1_I2S_EN_SHIFT                    26
432         #define QCA_GPIO_FUNC_1_I2S_EN_MASK                             (1 << QCA_GPIO_FUNC_1_I2S_EN_SHIFT)
433         #define QCA_GPIO_FUNC_1_I2S_MCLK_EN_SHIFT               27
434         #define QCA_GPIO_FUNC_1_I2S_MCLK_EN_MASK                (1 << QCA_GPIO_FUNC_1_I2S_MCLK_EN_SHIFT)
435         #define QCA_GPIO_FUNC_1_I2S_22_18_EN_SHIFT              29
436         #define QCA_GPIO_FUNC_1_I2S_22_18_EN_MASK               (1 << QCA_GPIO_FUNC_1_I2S_22_18_EN_SHIFT)
437         #define QCA_GPIO_FUNC_1_SPDIF_EN_SHIFT                  30
438         #define QCA_GPIO_FUNC_1_SPDIF_EN_MASK                   (1 << QCA_GPIO_FUNC_1_SPDIF_EN_SHIFT)
439         #define QCA_GPIO_FUNC_1_SPDIF_TCK_EN_SHIFT              31
440         #define QCA_GPIO_FUNC_1_SPDIF_TCK_EN_MASK               (1 << QCA_GPIO_FUNC_1_SPDIF_TCK_EN_SHIFT)
441 #endif
442
443 /*
444  * GPIO MUX
445  */
446 #define QCA_GPIO_OUT_FUNCX_GPIOX_EN_SHIFT(_gpio)        ((_gpio % 4) * 8)
447 #define QCA_GPIO_OUT_FUNCX_GPIOX_EN_MASK(_gpio)         BIT(((_gpio % 4) * 8), 8)
448
449 #define QCA_GPIO_OUT_FUNCX_GPIO0_EN_SHIFT                       0
450 #define QCA_GPIO_OUT_FUNCX_GPIO4_EN_SHIFT                       0
451 #define QCA_GPIO_OUT_FUNCX_GPIO8_EN_SHIFT                       0
452 #define QCA_GPIO_OUT_FUNCX_GPIO12_EN_SHIFT                      0
453 #define QCA_GPIO_OUT_FUNCX_GPIO16_EN_SHIFT                      0
454 #define QCA_GPIO_OUT_FUNCX_GPIO20_EN_SHIFT                      0
455 #define QCA_GPIO_OUT_FUNCX_GPIO0_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO0_EN_SHIFT, 8)
456 #define QCA_GPIO_OUT_FUNCX_GPIO4_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO4_EN_SHIFT, 8)
457 #define QCA_GPIO_OUT_FUNCX_GPIO8_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO8_EN_SHIFT, 8)
458 #define QCA_GPIO_OUT_FUNCX_GPIO12_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO12_EN_SHIFT, 8)
459 #define QCA_GPIO_OUT_FUNCX_GPIO16_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO16_EN_SHIFT, 8)
460 #define QCA_GPIO_OUT_FUNCX_GPIO20_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO20_EN_SHIFT, 8)
461
462 #define QCA_GPIO_OUT_FUNCX_GPIO1_EN_SHIFT                       8
463 #define QCA_GPIO_OUT_FUNCX_GPIO5_EN_SHIFT                       8
464 #define QCA_GPIO_OUT_FUNCX_GPIO9_EN_SHIFT                       8
465 #define QCA_GPIO_OUT_FUNCX_GPIO13_EN_SHIFT                      8
466 #define QCA_GPIO_OUT_FUNCX_GPIO17_EN_SHIFT                      8
467 #define QCA_GPIO_OUT_FUNCX_GPIO21_EN_SHIFT                      8
468 #define QCA_GPIO_OUT_FUNCX_GPIO1_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO1_EN_SHIFT, 8)
469 #define QCA_GPIO_OUT_FUNCX_GPIO5_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO5_EN_SHIFT, 8)
470 #define QCA_GPIO_OUT_FUNCX_GPIO9_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO9_EN_SHIFT, 8)
471 #define QCA_GPIO_OUT_FUNCX_GPIO13_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO13_EN_SHIFT, 8)
472 #define QCA_GPIO_OUT_FUNCX_GPIO17_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO17_EN_SHIFT, 8)
473 #define QCA_GPIO_OUT_FUNCX_GPIO21_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO21_EN_SHIFT, 8)
474
475 #define QCA_GPIO_OUT_FUNCX_GPIO2_EN_SHIFT                       16
476 #define QCA_GPIO_OUT_FUNCX_GPIO6_EN_SHIFT                       16
477 #define QCA_GPIO_OUT_FUNCX_GPIO10_EN_SHIFT                      16
478 #define QCA_GPIO_OUT_FUNCX_GPIO14_EN_SHIFT                      16
479 #define QCA_GPIO_OUT_FUNCX_GPIO18_EN_SHIFT                      16
480 #define QCA_GPIO_OUT_FUNCX_GPIO22_EN_SHIFT                      16
481 #define QCA_GPIO_OUT_FUNCX_GPIO2_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO2_EN_SHIFT, 8)
482 #define QCA_GPIO_OUT_FUNCX_GPIO6_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO6_EN_SHIFT, 8)
483 #define QCA_GPIO_OUT_FUNCX_GPIO10_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO10_EN_SHIFT, 8)
484 #define QCA_GPIO_OUT_FUNCX_GPIO14_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO14_EN_SHIFT, 8)
485 #define QCA_GPIO_OUT_FUNCX_GPIO18_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO18_EN_SHIFT, 8)
486 #define QCA_GPIO_OUT_FUNCX_GPIO22_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO22_EN_SHIFT, 8)
487
488 #define QCA_GPIO_OUT_FUNCX_GPIO3_EN_SHIFT                       24
489 #define QCA_GPIO_OUT_FUNCX_GPIO7_EN_SHIFT                       24
490 #define QCA_GPIO_OUT_FUNCX_GPIO11_EN_SHIFT                      24
491 #define QCA_GPIO_OUT_FUNCX_GPIO15_EN_SHIFT                      24
492 #define QCA_GPIO_OUT_FUNCX_GPIO19_EN_SHIFT                      24
493 #define QCA_GPIO_OUT_FUNCX_GPIO23_EN_SHIFT                      24
494 #define QCA_GPIO_OUT_FUNCX_GPIO3_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO3_EN_SHIFT, 8)
495 #define QCA_GPIO_OUT_FUNCX_GPIO7_EN_MASK                        BITS(QCA_GPIO_OUT_FUNCX_GPIO7_EN_SHIFT, 8)
496 #define QCA_GPIO_OUT_FUNCX_GPIO11_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO11_EN_SHIFT, 8)
497 #define QCA_GPIO_OUT_FUNCX_GPIO15_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO15_EN_SHIFT, 8)
498 #define QCA_GPIO_OUT_FUNCX_GPIO19_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO19_EN_SHIFT, 8)
499 #define QCA_GPIO_OUT_FUNCX_GPIO23_EN_MASK                       BITS(QCA_GPIO_OUT_FUNCX_GPIO23_EN_SHIFT, 8)
500
501 /* GPIO output select values (for MUX) */
502 #define QCA_GPIO_OUT_MUX_GPIO_VAL                                                       0
503 #define QCA_GPIO_OUT_MUX_MII_EXT_MDI_VAL                                        1
504 #define QCA_GPIO_OUT_MUX_SYS_RST_L_VAL                                          1
505 #define QCA_GPIO_OUT_MUX_NAND_CS0_VAL                                           1
506 #define QCA_GPIO_OUT_MUX_BOOT_RXT_MDI_VAL                                       2
507 #define QCA_GPIO_OUT_MUX_SPI_CS0_VAL                                            9
508
509 /* 5-port ethernet switch activity LEDs */
510 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_ACTN1_VAL                           26
511 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_ACTN2_VAL                           27
512 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_ACTN3_VAL                           28
513 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_ACTN4_VAL                           29
514 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_ACTN5_VAL                           30
515
516 /* 5-port ethernet switch collision detect LEDs */
517 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_COLN1_VAL                           31
518 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_COLN2_VAL                           32
519 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_COLN3_VAL                           33
520 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_COLN4_VAL                           34
521 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_COLN5_VAL                           35
522
523 /* 5-port ethernet switch full/half duplex LEDs */
524 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_DUPN1_VAL                           36
525 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_DUPN2_VAL                           37
526 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_DUPN3_VAL                           38
527 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_DUPN4_VAL                           39
528 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_DUPN5_VAL                           40
529
530 /* 5-port ethernet switch link indicator LEDs */
531 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_LINK1_VAL                           41
532 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_LINK2_VAL                           42
533 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_LINK3_VAL                           43
534 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_LINK4_VAL                           44
535 #define QCA_GPIO_OUT_MUX_ETH_SW_LED_LINK5_VAL                           45
536
537 #if (SOC_TYPE & QCA_AR934X_SOC)
538         #define QCA_GPIO_OUT_MUX_SLIC_DATA_OUT_VAL                              4
539         #define QCA_GPIO_OUT_MUX_SLIC_PCM_FS_VAL                                5
540         #define QCA_GPIO_OUT_MUX_SLIC_PCM_CLK_VAL                               6
541         #define QCA_GPIO_OUT_MUX_SPI_CS1_VAL                                    7
542         #define QCA_GPIO_OUT_MUX_SPI_CS2_VAL                                    8
543         #define QCA_GPIO_OUT_MUX_SPI_CLK_VAL                                    10
544         #define QCA_GPIO_OUT_MUX_SPI_MOSI_VAL                                   11
545         #define QCA_GPIO_OUT_MUX_I2S_CLK_VAL                                    12
546         #define QCA_GPIO_OUT_MUX_I2S_WS_VAL                                             13
547         #define QCA_GPIO_OUT_MUX_I2S_SD_VAL                                             14
548         #define QCA_GPIO_OUT_MUX_I2S_MCLK_VAL                                   15
549         #define QCA_GPIO_OUT_MUX_CLK_OBS0_VAL                                   16
550         #define QCA_GPIO_OUT_MUX_CLK_OBS1_VAL                                   17
551         #define QCA_GPIO_OUT_MUX_CLK_OBS2_VAL                                   18
552         #define QCA_GPIO_OUT_MUX_CLK_OBS3_VAL                                   19
553         #define QCA_GPIO_OUT_MUX_CLK_OBS4_VAL                                   20
554         #define QCA_GPIO_OUT_MUX_CLK_OBS5_VAL                                   21
555         #define QCA_GPIO_OUT_MUX_CLK_OBS6_VAL                                   22
556         #define QCA_GPIO_OUT_MUX_CLK_OBS7_VAL                                   23
557         #define QCA_GPIO_OUT_MUX_LSUART_TXD_VAL                                 24
558         #define QCA_GPIO_OUT_MUX_SPDIF_OUT_VAL                                  25
559         #define QCA_GPIO_OUT_MUX_ATT_LED_VAL                                    46
560         #define QCA_GPIO_OUT_MUX_PWR_LED_VAL                                    47
561         #define QCA_GPIO_OUT_MUX_TX_FRAME_VAL                                   48
562         #define QCA_GPIO_OUT_MUX_RX_CLEAR_EXT_VAL                               49
563         #define QCA_GPIO_OUT_MUX_LED_NETWORK_EN_VAL                             50
564         #define QCA_GPIO_OUT_MUX_LED_POWER_EN_VAL                               51
565         #define QCA_GPIO_OUT_MUX_WMAC_GLUE_WOW_VAL                              72
566         #define QCA_GPIO_OUT_MUX_BT_ANT_VAL                                             73
567         #define QCA_GPIO_OUT_MUX_RX_CLEAR_EXTENSION_VAL                 74
568         #define QCA_GPIO_OUT_MUX_ETH_TX_ERR_VAL                                 78
569         #define QCA_GPIO_OUT_MUX_HSUART_TXD_VAL_VAL                             79
570         #define QCA_GPIO_OUT_MUX_HSUART_RTS_VAL_VAL                             80
571         #define QCA_GPIO_OUT_MUX_DDR_DQ_OE_VAL                                  84
572         #define QCA_GPIO_OUT_MUX_USB_SUSPEND_VAL                                87
573 #else
574         #define QCA_GPIO_OUT_MUX_SLIC_DATA_OUT_VAL                              3
575         #define QCA_GPIO_OUT_MUX_SLIC_PCM_FS_VAL                                4
576         #define QCA_GPIO_OUT_MUX_SLIC_PCM_CLK_VAL                               5
577         #define QCA_GPIO_OUT_MUX_SPI_CLK_VAL                                    8
578         #define QCA_GPIO_OUT_MUX_SPI_CS1_VAL                                    10
579         #define QCA_GPIO_OUT_MUX_SPI_CS2_VAL                                    11
580         #define QCA_GPIO_OUT_MUX_SPI_MOSI_VAL                                   12
581         #define QCA_GPIO_OUT_MUX_I2S_CLK_VAL                                    13
582         #define QCA_GPIO_OUT_MUX_I2S_WS_VAL                                             14
583         #define QCA_GPIO_OUT_MUX_I2S_SD_VAL                                             15
584         #define QCA_GPIO_OUT_MUX_I2S_MCLK_VAL                                   16
585         #define QCA_GPIO_OUT_MUX_SPDIF_OUT_VAL                                  17
586         #define QCA_GPIO_OUT_MUX_HSUART_TXD_VAL                                 18
587         #define QCA_GPIO_OUT_MUX_HSUART_RTS_VAL                                 19
588         #define QCA_GPIO_OUT_MUX_HSUART_RXD_VAL                                 20      /* TODO: RXD is INPUT, mistake in QCA9558 datasheet? */
589         #define QCA_GPIO_OUT_MUX_HSUART_CTS_VAL                                 21      /* TODO: CTS is INPUT, mistake in QCA9558 datasheet? */
590         #define QCA_GPIO_OUT_MUX_LSUART_TXD_VAL                                 22
591         #define QCA_GPIO_OUT_MUX_SRIF_OUT_VAL                                   23
592
593         #if (SOC_TYPE & QCA_QCA955X_SOC)
594                 #define QCA_GPIO_OUT_MUX_SGMII_LED_SPEED0_VAL           24
595                 #define QCA_GPIO_OUT_MUX_SGMII_LED_SPEED1_VAL           25
596                 #define QCA_GPIO_OUT_MUX_SGMII_LED_DUPLEX_VAL           26
597                 #define QCA_GPIO_OUT_MUX_SGMII_LED_LINKUP_VAL           27
598                 #define QCA_GPIO_OUT_MUX_SGMII_LED_SPEED0_INV_VAL       28
599                 #define QCA_GPIO_OUT_MUX_SGMII_LED_SPEED1_INV_VAL       29
600                 #define QCA_GPIO_OUT_MUX_SGMII_LED_DUPLEX_INV_VAL       30
601                 #define QCA_GPIO_OUT_MUX_SGMII_LED_LINKUP_INV_VAL       31
602                 #define QCA_GPIO_OUT_MUX_GE1_MII_MDO_VAL                        32
603                 #define QCA_GPIO_OUT_MUX_GE1_MII_MDC_VAL                        33
604                 #define QCA_GPIO_OUT_MUX_SWCOM2_VAL                                     38
605                 #define QCA_GPIO_OUT_MUX_SWCOM3_VAL                                     39
606                 #define QCA_GPIO_OUT_MUX_SMART_ANT_CTRL_BIT2_VAL        40
607                 #define QCA_GPIO_OUT_MUX_SMART_ANT_CTRL_BIT3_VAL        41
608                 #define QCA_GPIO_OUT_MUX_ATT_LED_VAL                            42
609                 #define QCA_GPIO_OUT_MUX_PWR_LED_VAL                            43
610                 #define QCA_GPIO_OUT_MUX_TX_FRAME_VAL                           44
611                 #define QCA_GPIO_OUT_MUX_RX_CLEAR_EXT_VAL                       45
612                 #define QCA_GPIO_OUT_MUX_LED_NETWORK_EN_VAL                     46
613                 #define QCA_GPIO_OUT_MUX_LED_POWER_EN_VAL                       47
614                 #define QCA_GPIO_OUT_MUX_WMAC_GLUE_WOW_VAL                      68
615                 #define QCA_GPIO_OUT_MUX_RX_CLEAR_EXTENSION_VAL         70
616                 #define QCA_GPIO_OUT_MUX_SMART_ANT_SHIFT_STROBE_VAL     71
617                 #define QCA_GPIO_OUT_MUX_SMART_ANT_SHIFT_DATA_VAL       72
618                 #define QCA_GPIO_OUT_MUX_NAND_CS1_VAL                           73
619                 #define QCA_GPIO_OUT_MUX_USB_SUSPEND_VAL                        74
620                 #define QCA_GPIO_OUT_MUX_ETH_TX_ERR_VAL                         75
621                 #define QCA_GPIO_OUT_MUX_DDR_DQ_OE_VAL                          76
622                 #define QCA_GPIO_OUT_MUX_CLK_REQ_N_EP_VAL                       77
623                 #define QCA_GPIO_OUT_MUX_CLK_REQ_N_RC_VAL                       78
624                 #define QCA_GPIO_OUT_MUX_CLK_OBS0_VAL                           79
625                 #define QCA_GPIO_OUT_MUX_CLK_OBS1_VAL                           80
626                 #define QCA_GPIO_OUT_MUX_CLK_OBS2_VAL                           81
627                 #define QCA_GPIO_OUT_MUX_CLK_OBS3_VAL                           82
628                 #define QCA_GPIO_OUT_MUX_CLK_OBS4_VAL                           83
629                 #define QCA_GPIO_OUT_MUX_CLK_OBS5_VAL                           84
630         #endif
631
632         #if (SOC_TYPE & QCA_QCA953X_SOC)
633                 #define QCA_GPIO_OUT_MUX_SMART_ANT_CTRL_BIT2_VAL        48
634                 #define QCA_GPIO_OUT_MUX_SMART_ANT_CTRL_BIT3_VAL        49
635                 #define QCA_GPIO_OUT_MUX_ATT_LED_VAL                            50
636                 #define QCA_GPIO_OUT_MUX_PWR_LED_VAL                            51
637                 #define QCA_GPIO_OUT_MUX_TX_FRAME_VAL                           52
638                 #define QCA_GPIO_OUT_MUX_RX_CLEAR_INT_VAL                       53
639                 #define QCA_GPIO_OUT_MUX_LED_NETWORK_EN_VAL                     54
640                 #define QCA_GPIO_OUT_MUX_LED_POWER_EN_VAL                       55
641                 #define QCA_GPIO_OUT_MUX_RX_CLEAR_EXTENSION_VAL         78
642                 #define QCA_GPIO_OUT_MUX_USB_SUSPEND_VAL                        86
643                 #define QCA_GPIO_OUT_MUX_DDR_DQ_OE_VAL                          88
644                 #define QCA_GPIO_OUT_MUX_CLK_REQ_N_RC_VAL                       89
645                 #define QCA_GPIO_OUT_MUX_CLK_OBS0_VAL                           90
646                 #define QCA_GPIO_OUT_MUX_CLK_OBS1_VAL                           91
647                 #define QCA_GPIO_OUT_MUX_CLK_OBS2_VAL                           92
648                 #define QCA_GPIO_OUT_MUX_CLK_OBS3_VAL                           93
649                 #define QCA_GPIO_OUT_MUX_CLK_OBS4_VAL                           94
650                 #define QCA_GPIO_OUT_MUX_CLK_OBS5_VAL                           95
651                 #define QCA_GPIO_OUT_MUX_CLK_OBS6_VAL                           96
652         #endif
653 #endif
654
655 /* GPIO_IN_ENABLE0 register (GPIO in signals 0) */
656 #define QCA_GPIO_IN_EN0_SPI_MISO_SHIFT                          0
657 #define QCA_GPIO_IN_EN0_SPI_MISO_MASK                           BITS(QCA_GPIO_IN_EN0_SPI_MISO_SHIFT, 8)
658 #define QCA_GPIO_IN_EN0_LSUART_RXD_SHIFT                        8
659 #define QCA_GPIO_IN_EN0_LSUART_RXD_MASK                         BITS(QCA_GPIO_IN_EN0_LSUART_RXD_SHIFT ,8)
660
661 /* GPIO_IN_ENABLE1 register (GPIO in signals 1) */
662 #define QCA_GPIO_IN_EN1_I2S_WS_SHIFT                            0
663 #define QCA_GPIO_IN_EN1_I2S_WS_MASK                                     BITS(QCA_GPIO_IN_EN1_I2S_WS_SHIFT ,8)
664 #define QCA_GPIO_IN_EN1_I2S_MIC_SD_SHIFT                        8
665 #define QCA_GPIO_IN_EN1_I2S_MIC_SD_MASK                         BITS(QCA_GPIO_IN_EN1_I2S_MIC_SD_SHIFT ,8)
666 #define QCA_GPIO_IN_EN1_I2S_CLK_SHIFT                           16
667 #define QCA_GPIO_IN_EN1_I2S_CLK_MASK                            BITS(QCA_GPIO_IN_EN1_I2S_CLK_SHIFT ,8)
668 #define QCA_GPIO_IN_EN1_I2S_MCLK_SHIFT                          24
669 #define QCA_GPIO_IN_EN1_I2S_MCLK_MASK                           BITS(QCA_GPIO_IN_EN1_I2S_MCLK_SHIFT ,8)
670
671 /* GPIO_IN_ENABLE9 register (GPIO in signals 9) */
672 #define QCA_GPIO_IN_EN9_HSUART_RXD_SHIFT                        16
673 #define QCA_GPIO_IN_EN9_HSUART_RXD_MASK                         BITS(QCA_GPIO_IN_EN9_HSUART_RXD_SHIFT ,8)
674 #define QCA_GPIO_IN_EN9_HSUART_CTS_SHIFT                        24
675 #define QCA_GPIO_IN_EN9_HSUART_CTS_MASK                         BITS(QCA_GPIO_IN_EN9_HSUART_CTS_SHIFT ,8)
676
677 /* GPIO_FUNCTION register (GPIO function) */
678 #define QCA_GPIO_FUNC_GPIO_SRIF_EN_SHIFT                        0
679 #define QCA_GPIO_FUNC_GPIO_SRIF_EN_MASK                         (1 << QCA_GPIO_FUNC_GPIO_SRIF_EN_SHIFT)
680 #define QCA_GPIO_FUNC_JTAG_DIS_SHIFT                            1
681 #define QCA_GPIO_FUNC_JTAG_DIS_MASK                                     (1 << QCA_GPIO_FUNC_JTAG_DIS_SHIFT)
682 #define QCA_GPIO_FUNC_CLK_OBS0_EN_SHIFT                         2
683 #define QCA_GPIO_FUNC_CLK_OBS0_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS0_EN_SHIFT)
684 #define QCA_GPIO_FUNC_CLK_OBS1_EN_SHIFT                         3
685 #define QCA_GPIO_FUNC_CLK_OBS1_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS1_EN_SHIFT)
686 #define QCA_GPIO_FUNC_CLK_OBS2_EN_SHIFT                         4
687 #define QCA_GPIO_FUNC_CLK_OBS2_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS2_EN_SHIFT)
688 #define QCA_GPIO_FUNC_CLK_OBS3_EN_SHIFT                         5
689 #define QCA_GPIO_FUNC_CLK_OBS3_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS3_EN_SHIFT)
690 #define QCA_GPIO_FUNC_CLK_OBS4_EN_SHIFT                         6
691 #define QCA_GPIO_FUNC_CLK_OBS4_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS4_EN_SHIFT)
692 #define QCA_GPIO_FUNC_CLK_OBS5_EN_SHIFT                         7
693 #define QCA_GPIO_FUNC_CLK_OBS5_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS5_EN_SHIFT)
694 #define QCA_GPIO_FUNC_CLK_OBS6_EN_SHIFT                         8
695 #define QCA_GPIO_FUNC_CLK_OBS6_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS6_EN_SHIFT)
696 #define QCA_GPIO_FUNC_CLK_OBS7_EN_SHIFT                         9
697 #define QCA_GPIO_FUNC_CLK_OBS7_EN_MASK                          (1 << QCA_GPIO_FUNC_CLK_OBS7_EN_SHIFT)
698
699 /*
700  * PLL control registers
701  */
702 #define QCA_PLL_CPU_PLL_CFG_REG                                                 QCA_PLL_BASE_REG + 0x00
703
704 #if (SOC_TYPE & QCA_AR933X_SOC)
705         #define QCA_PLL_CPU_PLL_CFG2_REG                                        QCA_PLL_BASE_REG + 0x04
706         #define QCA_PLL_CPU_CLK_CTRL_REG                                        QCA_PLL_BASE_REG + 0x08
707         #define QCA_PLL_PLL_DITHER_FRAC_REG                                     QCA_PLL_BASE_REG + 0x10
708         #define QCA_PLL_PLL_DITHER_REG                                          QCA_PLL_BASE_REG + 0x14
709         #define QCA_PLL_ETHSW_CLK_CTRL_REG                                      QCA_PLL_BASE_REG + 0x24
710         #define QCA_PLL_ETH_XMII_CTRL_REG                                       QCA_PLL_BASE_REG + 0x2C
711         #define QCA_PLL_USB_SUSPEND_REG                                         QCA_PLL_BASE_REG + 0x40
712         #define QCA_PLL_WLAN_CLK_CTRL_REG                                       QCA_PLL_BASE_REG + 0x44
713 #else
714         #define QCA_PLL_DDR_PLL_CFG_REG                                         QCA_PLL_BASE_REG + 0x04
715         #define QCA_PLL_CPU_DDR_CLK_CTRL_REG                            QCA_PLL_BASE_REG + 0x08
716
717         #if (SOC_TYPE & QCA_QCA955X_SOC)
718                 #define QCA_PLL_PCIE_PLL_CFG_REG                                QCA_PLL_BASE_REG + 0x0C
719                 #define QCA_PLL_PCIE_PLL_DITHER_DIV_MAX_REG             QCA_PLL_BASE_REG + 0x10
720                 #define QCA_PLL_PCIE_PLL_DITHER_DIV_MIN_REG             QCA_PLL_BASE_REG + 0x14
721                 #define QCA_PLL_PCIE_PLL_DITHER_STEP_REG                QCA_PLL_BASE_REG + 0x18
722                 #define QCA_PLL_LDO_POWER_CTRL_REG                              QCA_PLL_BASE_REG + 0x1C
723                 #define QCA_PLL_SWITCH_CLK_SPARE_REG                    QCA_PLL_BASE_REG + 0x20
724                 #define QCA_PLL_CURR_PCIE_PLL_DITHER_REG                QCA_PLL_BASE_REG + 0x24
725                 #define QCA_PLL_ETH_XMII_CTRL_REG                               QCA_PLL_BASE_REG + 0x28
726                 #define QCA_PLL_AUDIO_PLL_CFG_REG                               QCA_PLL_BASE_REG + 0x2C
727                 #define QCA_PLL_AUDIO_PLL_MODUL_REG                             QCA_PLL_BASE_REG + 0x30
728                 #define QCA_PLL_AUDIO_PLL_MODUL_STEP_REG                QCA_PLL_BASE_REG + 0x34
729                 #define QCA_PLL_CURR_AUDIO_PLL_MODUL_REG                QCA_PLL_BASE_REG + 0x38
730                 #define QCA_PLL_DDR_PLL_DITHER_REG                              QCA_PLL_BASE_REG + 0x40
731                 #define QCA_PLL_CPU_PLL_DITHER_REG                              QCA_PLL_BASE_REG + 0x44
732                 #define QCA_PLL_ETH_SGMII_CTRL_REG                              QCA_PLL_BASE_REG + 0x48
733                 #define QCA_PLL_ETH_SGMII_SERDES_REG                    QCA_PLL_BASE_REG + 0x4C
734                 #define QCA_PLL_SLIC_PWM_DIV_REG                                QCA_PLL_BASE_REG + 0x50
735         #else
736                 #define QCA_PLL_CPU_SYNC_REG                                    QCA_PLL_BASE_REG + 0x0C
737                 #define QCA_PLL_PCIE_PLL_CFG_REG                                QCA_PLL_BASE_REG + 0x10
738                 #define QCA_PLL_PCIE_PLL_DITHER_DIV_MAX_REG             QCA_PLL_BASE_REG + 0x14
739                 #define QCA_PLL_PCIE_PLL_DITHER_DIV_MIN_REG             QCA_PLL_BASE_REG + 0x18
740                 #define QCA_PLL_PCIE_PLL_DITHER_STEP_REG                QCA_PLL_BASE_REG + 0x1C
741                 #define QCA_PLL_LDO_POWER_CTRL_REG                              QCA_PLL_BASE_REG + 0x20
742                 #define QCA_PLL_SWITCH_CLK_CTRL_REG                             QCA_PLL_BASE_REG + 0x24
743
744         #if (SOC_TYPE & QCA_AR9344_SOC)
745                 #define QCA_PLL_CURR_PCIE_PLL_DITHER_REG                QCA_PLL_BASE_REG + 0x28
746         #else
747                 #define QCA_PLL_CURR_PLL_DITHER_REG                             QCA_PLL_BASE_REG + 0x28
748         #endif
749
750                 #define QCA_PLL_ETH_XMII_CTRL_REG                               QCA_PLL_BASE_REG + 0x2C
751                 #define QCA_PLL_AUDIO_PLL_CFG_REG                               QCA_PLL_BASE_REG + 0x30
752                 #define QCA_PLL_AUDIO_PLL_MODUL_REG                             QCA_PLL_BASE_REG + 0x34
753                 #define QCA_PLL_AUDIO_PLL_MODUL_STEP_REG                QCA_PLL_BASE_REG + 0x38
754                 #define QCA_PLL_CURR_AUDIO_PLL_MODUL_REG                QCA_PLL_BASE_REG + 0x3C
755                 #define QCA_PLL_BB_PLL_CFG_REG                                  QCA_PLL_BASE_REG + 0x40
756                 #define QCA_PLL_DDR_PLL_DITHER_REG                              QCA_PLL_BASE_REG + 0x44
757                 #define QCA_PLL_CPU_PLL_DITHER_REG                              QCA_PLL_BASE_REG + 0x48
758         #endif
759 #endif
760
761 /*
762  * PLL control registers BIT fields
763  */
764
765 /* CPU_PLL_CONFIG register (CPU phase lock loop configuration) */
766 #if (SOC_TYPE & QCA_AR933X_SOC)
767         #define QCA_PLL_CPU_PLL_CFG_NFRAC_SHIFT                                 0
768         #define QCA_PLL_CPU_PLL_CFG_NFRAC_MASK                                  BITS(QCA_PLL_CPU_PLL_CFG_NFRAC_SHIFT, 10)
769         #define QCA_PLL_CPU_PLL_CFG_NINT_SHIFT                                  10
770         #define QCA_PLL_CPU_PLL_CFG_NINT_MASK                                   BITS(QCA_PLL_CPU_PLL_CFG_NINT_SHIFT, 6)
771         #define QCA_PLL_CPU_PLL_CFG_REFDIV_SHIFT                                16
772         #define QCA_PLL_CPU_PLL_CFG_REFDIV_MASK                                 BITS(QCA_PLL_CPU_PLL_CFG_REFDIV_SHIFT, 5)
773         #define QCA_PLL_CPU_PLL_CFG_RANGE_SHIFT                                 21
774         #define QCA_PLL_CPU_PLL_CFG_RANGE_MASK                                  (1 << QCA_PLL_CPU_PLL_CFG_RANGE_SHIFT)
775         #define QCA_PLL_CPU_PLL_CFG_OUTDIV_SHIFT                                23
776         #define QCA_PLL_CPU_PLL_CFG_OUTDIV_MASK                                 BITS(QCA_PLL_CPU_PLL_CFG_OUTDIV_SHIFT, 3)
777 #else
778         #define QCA_PLL_CPU_PLL_CFG_NFRAC_SHIFT                                 0
779         #define QCA_PLL_CPU_PLL_CFG_NFRAC_MASK                                  BITS(QCA_PLL_CPU_PLL_CFG_NFRAC_SHIFT, 6)
780         #define QCA_PLL_CPU_PLL_CFG_NINT_SHIFT                                  6
781         #define QCA_PLL_CPU_PLL_CFG_NINT_MASK                                   BITS(QCA_PLL_CPU_PLL_CFG_NINT_SHIFT, 6)
782         #define QCA_PLL_CPU_PLL_CFG_REFDIV_SHIFT                                12
783         #define QCA_PLL_CPU_PLL_CFG_REFDIV_MASK                                 BITS(QCA_PLL_CPU_PLL_CFG_REFDIV_SHIFT, 5)
784         #define QCA_PLL_CPU_PLL_CFG_RANGE_SHIFT                                 17
785         #define QCA_PLL_CPU_PLL_CFG_RANGE_MASK                                  BITS(QCA_PLL_CPU_PLL_CFG_RANGE_SHIFT, 2)
786         #define QCA_PLL_CPU_PLL_CFG_OUTDIV_SHIFT                                19
787         #define QCA_PLL_CPU_PLL_CFG_OUTDIV_MASK                                 BITS(QCA_PLL_CPU_PLL_CFG_OUTDIV_SHIFT, 3)
788 #endif
789
790 #define QCA_PLL_CPU_PLL_CFG_PLLPWD_SHIFT                                        30
791 #define QCA_PLL_CPU_PLL_CFG_PLLPWD_MASK                                         (1 << QCA_PLL_CPU_PLL_CFG_PLLPWD_SHIFT)
792 #define QCA_PLL_CPU_PLL_CFG_UPDATING_SHIFT                                      31
793 #define QCA_PLL_CPU_PLL_CFG_UPDATING_MASK                                       (1 << QCA_PLL_CPU_PLL_CFG_UPDATING_SHIFT)
794
795 /* CPU_PLL_CONFIG2 register (CPU phase lock loop configuration, AR933x only) */
796 #define QCA_PLL_CPU_PLL_CFG2_SETTLE_TIME_SHIFT                          0
797 #define QCA_PLL_CPU_PLL_CFG2_SETTLE_TIME_MASK                           BITS(QCA_PLL_CPU_PLL_CFG2_SETTLE_TIME_SHIFT, 12)
798
799 /* CPU_CLOCK_CONTROL register (CPU clock control, AR933x only) */
800 #define QCA_PLL_CPU_CLK_CTRL_BYPASS_SHIFT                                       2
801 #define QCA_PLL_CPU_CLK_CTRL_BYPASS_MASK                                        (1 << QCA_PLL_CPU_CLK_CTRL_BYPASS_SHIFT)
802 #define QCA_PLL_CPU_CLK_CTRL_CPU_POST_DIV_SHIFT                         5
803 #define QCA_PLL_CPU_CLK_CTRL_CPU_POST_DIV_MASK                          BITS(QCA_PLL_CPU_CLK_CTRL_CPU_POST_DIV_SHIFT, 2)
804 #define QCA_PLL_CPU_CLK_CTRL_DDR_POST_DIV_SHIFT                         10
805 #define QCA_PLL_CPU_CLK_CTRL_DDR_POST_DIV_MASK                          BITS(QCA_PLL_CPU_CLK_CTRL_DDR_POST_DIV_SHIFT, 2)
806 #define QCA_PLL_CPU_CLK_CTRL_AHB_POST_DIV_SHIFT                         15
807 #define QCA_PLL_CPU_CLK_CTRL_AHB_POST_DIV_MASK                          BITS(QCA_PLL_CPU_CLK_CTRL_AHB_POST_DIV_SHIFT, 2)
808
809 /* PLL_DITHER_FRAC register (CPU PLL dither FRAC, AR933x only) */
810 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_MAX_SHIFT                         0
811 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_MAX_MASK                          BITS(QCA_PLL_PLL_DITHER_FRAC_NFRAC_MAX_SHIFT, 10)
812 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_MIN_SHIFT                         10
813 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_MIN_MASK                          BITS(QCA_PLL_PLL_DITHER_FRAC_NFRAC_MIN_SHIFT, 10)
814 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_STEP_SHIFT                        10
815 #define QCA_PLL_PLL_DITHER_FRAC_NFRAC_STEP_MASK                         BITS(QCA_PLL_PLL_DITHER_FRAC_NFRAC_STEP_SHIFT, 20)
816
817 /* PLL_DITHER register (CPU PLL dither, AR933x only) */
818 #define QCA_PLL_PLL_DITHER_UPDATE_CNT_SHIFT                                     0
819 #define QCA_PLL_PLL_DITHER_UPDATE_CNT_MASK                                      BITS(QCA_PLL_PLL_DITHER_UPDATE_CNT_SHIFT, 14)
820 #define QCA_PLL_PLL_DITHER_DITHER_EN_SHIFT                                      31
821 #define QCA_PLL_PLL_DITHER_DITHER_EN_MASK                                       (1 << QCA_PLL_PLL_DITHER_DITHER_EN_SHIFT)
822
823 /* ETHSW_CLOCK_CONTROL register (Ethernet switch clock control, AR933x only) */
824 #define QCA_PLL_ETHSW_CLK_CTRL_CORE_PLLPWD_SHIFT                        3
825 #define QCA_PLL_ETHSW_CLK_CTRL_CORE_PLLPWD_MASK                         (1 << QCA_PLL_ETHSW_CLK_CTRL_CORE_PLLPWD_SHIFT)
826 #define QCA_PLL_ETHSW_CLK_CTRL_CORE_BIAS_EN_SHIFT                       4
827 #define QCA_PLL_ETHSW_CLK_CTRL_CORE_BIAS_EN_MASK                        (1 << QCA_PLL_ETHSW_CLK_CTRL_CORE_BIAS_EN_SHIFT)
828
829 /* ETH_XMII_CONTROL register (Ethernet XMII control) */
830 #define QCA_PLL_ETH_XMII_CTRL_PHASE0_CNT_SHIFT                          0
831 #define QCA_PLL_ETH_XMII_CTRL_PHASE0_CNT_MASK                           BITS(QCA_PLL_ETH_XMII_CTRL_PHASE0_CNT_SHIFT, 8)
832 #define QCA_PLL_ETH_XMII_CTRL_PHASE1_CNT_SHIFT                          8
833 #define QCA_PLL_ETH_XMII_CTRL_PHASE1_CNT_MASK                           BITS(QCA_PLL_ETH_XMII_CTRL_PHASE1_CNT_SHIFT, 8)
834 #define QCA_PLL_ETH_XMII_CTRL_OFFSET_CNT_SHIFT                          16
835 #define QCA_PLL_ETH_XMII_CTRL_OFFSET_CNT_MASK                           BITS(QCA_PLL_ETH_XMII_CTRL_OFFSET_CNT_SHIFT, 8)
836 #define QCA_PLL_ETH_XMII_CTRL_OFFSET_PHASE_SHIFT                        24
837 #define QCA_PLL_ETH_XMII_CTRL_OFFSET_PHASE_MASK                         (1 << QCA_PLL_ETH_XMII_CTRL_OFFSET_PHASE_SHIFT)
838 #define QCA_PLL_ETH_XMII_CTRL_GIGE_SHIFT                                        25
839 #define QCA_PLL_ETH_XMII_CTRL_GIGE_MASK                                         (1 << QCA_PLL_ETH_XMII_CTRL_GIGE_SHIFT)
840 #define QCA_PLL_ETH_XMII_CTRL_TX_DELAY_SHIFT                            26
841 #define QCA_PLL_ETH_XMII_CTRL_TX_DELAY_MASK                                     BITS(QCA_PLL_ETH_XMII_CTRL_TX_DELAY_SHIFT, 2)
842 #define QCA_PLL_ETH_XMII_CTRL_RX_DELAY_SHIFT                            28
843 #define QCA_PLL_ETH_XMII_CTRL_RX_DELAY_MASK                                     BITS(QCA_PLL_ETH_XMII_CTRL_RX_DELAY_SHIFT, 2)
844 #define QCA_PLL_ETH_XMII_CTRL_GIGE_QUAD_SHIFT                           30
845 #define QCA_PLL_ETH_XMII_CTRL_GIGE_QUAD_MASK                            (1 << QCA_PLL_ETH_XMII_CTRL_GIGE_QUAD_SHIFT)
846 #define QCA_PLL_ETH_XMII_CTRL_TX_INVERT_SHIFT                           31
847 #define QCA_PLL_ETH_XMII_CTRL_TX_INVERT_MASK                            (1 << QCA_PLL_ETH_XMII_CTRL_TX_INVERT_SHIFT)
848
849 /* SUSPEND register (USB suspend, AR933x only) */
850 #define QCA_PLL_USB_SUSPEND_EN_SHIFT                                            0
851 #define QCA_PLL_USB_SUSPEND_EN_MASK                                                     (1 << QCA_PLL_USB_SUSPEND_EN_SHIFT)
852 #define QCA_PLL_USB_SUSPEND_RESTART_TIME_SHIFT                          8
853 #define QCA_PLL_USB_SUSPEND_RESTART_TIME_MASK                           BITS(QCA_PLL_USB_SUSPEND_RESTART_TIME_SHIFT, 20)
854
855 /* WLAN_CLOCK_CONTROL register (WLAN clock control, AR933x only) */
856 #define QCA_PLL_WLAN_CLK_CTRL_CLK_CTL_MASK_SHIFT                        0
857 #define QCA_PLL_WLAN_CLK_CTRL_CLK_CTL_MASK_MASK                         (1 << QCA_PLL_WLAN_CLK_CTRL_CLK_CTL_MASK_SHIFT)
858 #define QCA_PLL_WLAN_CLK_CTRL_PWDN_CTL_SHIFT                            1
859 #define QCA_PLL_WLAN_CLK_CTRL_PWDN_CTL_MASK                                     (1 << QCA_PLL_WLAN_CLK_CTRL_PWDN_CTL_SHIFT)
860 #define QCA_PLL_WLAN_CLK_CTRL_CLKIN_CTL_SHIFT                           2
861 #define QCA_PLL_WLAN_CLK_CTRL_CLKIN_CTL_MASK                            (1 << QCA_PLL_WLAN_CLK_CTRL_CLKIN_CTL_SHIFT)
862 #define QCA_PLL_WLAN_CLK_CTRL_PLLPWD_CTL_SHIFT                          3
863 #define QCA_PLL_WLAN_CLK_CTRL_PLLPWD_CTL_MASK                           (1 << QCA_PLL_WLAN_CLK_CTRL_PLLPWD_CTL_SHIFT)
864 #define QCA_PLL_WLAN_CLK_CTRL_GLBL_CLK_EN_SHIFT                         4
865 #define QCA_PLL_WLAN_CLK_CTRL_GLBL_CLK_EN_MASK                          (1 << QCA_PLL_WLAN_CLK_CTRL_GLBL_CLK_EN_SHIFT)
866 #define QCA_PLL_WLAN_CLK_CTRL_WLANRST_CTL_MASK_SHIFT            8
867 #define QCA_PLL_WLAN_CLK_CTRL_WLANRST_CTL_MASK_MASK                     (1 << QCA_PLL_WLAN_CLK_CTRL_WLANRST_CTL_MASK_SHIFT)
868 #define QCA_PLL_WLAN_CLK_CTRL_CLKGEN_COLD_RST_CTL_SHIFT         9
869 #define QCA_PLL_WLAN_CLK_CTRL_CLKGEN_COLD_RST_CTL_MASK          (1 << QCA_PLL_WLAN_CLK_CTRL_CLKGEN_COLD_RST_CTL_SHIFT)
870 #define QCA_PLL_WLAN_CLK_CTRL_RADIO_COLD_RST_CTL_SHIFT          10
871 #define QCA_PLL_WLAN_CLK_CTRL_RADIO_COLD_RST_CTL_MASK           (1 << QCA_PLL_WLAN_CLK_CTRL_RADIO_COLD_RST_CTL_SHIFT)
872 #define QCA_PLL_WLAN_CLK_CTRL_UART_CLK88_SHIFT                          12
873 #define QCA_PLL_WLAN_CLK_CTRL_UART_CLK88_MASK                           (1 << QCA_PLL_WLAN_CLK_CTRL_UART_CLK88_SHIFT)
874
875 /* DDR_PLL_CONFIG register (DDR PLL configuration) */
876 #define QCA_PLL_DDR_PLL_CFG_NFRAC_SHIFT                                         0
877 #define QCA_PLL_DDR_PLL_CFG_NFRAC_MASK                                          BITS(QCA_PLL_DDR_PLL_CFG_NFRAC_SHIFT, 10)
878 #define QCA_PLL_DDR_PLL_CFG_NINT_SHIFT                                          10
879 #define QCA_PLL_DDR_PLL_CFG_NINT_MASK                                           BITS(QCA_PLL_DDR_PLL_CFG_NINT_SHIFT, 6)
880 #define QCA_PLL_DDR_PLL_CFG_REFDIV_SHIFT                                        16
881 #define QCA_PLL_DDR_PLL_CFG_REFDIV_MASK                                         BITS(QCA_PLL_DDR_PLL_CFG_REFDIV_SHIFT, 5)
882 #define QCA_PLL_DDR_PLL_CFG_RANGE_SHIFT                                         21
883 #define QCA_PLL_DDR_PLL_CFG_RANGE_MASK                                          BITS(QCA_PLL_DDR_PLL_CFG_RANGE_SHIFT, 2)
884 #define QCA_PLL_DDR_PLL_CFG_OUTDIV_SHIFT                                        23
885 #define QCA_PLL_DDR_PLL_CFG_OUTDIV_MASK                                         BITS(QCA_PLL_DDR_PLL_CFG_OUTDIV_SHIFT, 3)
886 #define QCA_PLL_DDR_PLL_CFG_PLLPWD_SHIFT                                        30
887 #define QCA_PLL_DDR_PLL_CFG_PLLPWD_MASK                                         (1 << QCA_PLL_DDR_PLL_CFG_PLLPWD_SHIFT)
888 #define QCA_PLL_DDR_PLL_CFG_UPDATING_SHIFT                                      31
889 #define QCA_PLL_DDR_PLL_CFG_UPDATING_MASK                                       (1 << QCA_PLL_DDR_PLL_CFG_UPDATING_SHIFT)
890
891 /* CPU_DDR_CLOCK_CONTROL register (CPU DDR clock control) */
892 #define QCA_PLL_CPU_DDR_CLK_CTRL_RST_SWITCH_SHIFT                       1
893 #define QCA_PLL_CPU_DDR_CLK_CTRL_RST_SWITCH_MASK                        (1 << QCA_PLL_CPU_DDR_CLK_CTRL_RST_SWITCH_SHIFT)
894 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_PLL_BYPASS_SHIFT           2
895 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_PLL_BYPASS_MASK            (1 << QCA_PLL_CPU_DDR_CLK_CTRL_CPU_PLL_BYPASS_SHIFT)
896 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDR_PLL_BYPASS_SHIFT           3
897 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDR_PLL_BYPASS_MASK            (1 << QCA_PLL_CPU_DDR_CLK_CTRL_DDR_PLL_BYPASS_SHIFT)
898 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHB_PLL_BYPASS_SHIFT           4
899 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHB_PLL_BYPASS_MASK            (1 << QCA_PLL_CPU_DDR_CLK_CTRL_AHB_PLL_BYPASS_SHIFT)
900 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_SHIFT                     5
901 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_MASK                      BITS(QCA_PLL_CPU_DDR_CLK_CTRL_CPU_POST_DIV_SHIFT, 5)
902 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_SHIFT                     10
903 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_MASK                      BITS(QCA_PLL_CPU_DDR_CLK_CTRL_DDR_POST_DIV_SHIFT, 5)
904 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_SHIFT                     15
905 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_MASK                      BITS(QCA_PLL_CPU_DDR_CLK_CTRL_AHB_POST_DIV_SHIFT, 5)
906 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPUCLK_FROM_CPUPLL_SHIFT       20
907 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPUCLK_FROM_CPUPLL_MASK        (1 << QCA_PLL_CPU_DDR_CLK_CTRL_CPUCLK_FROM_CPUPLL_SHIFT)
908 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL_SHIFT       21
909 #define QCA_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL_MASK        (1 << QCA_PLL_CPU_DDR_CLK_CTRL_DDRCLK_FROM_DDRPLL_SHIFT)
910 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_ASRT_SHIFT       22
911 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_ASRT_MASK        (1 << QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_ASRT_SHIFT)
912 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_DEASRT_SHIFT     23
913 #define QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_DEASRT_MASK      (1 << QCA_PLL_CPU_DDR_CLK_CTRL_CPU_RST_EN_BP_DEASRT_SHIFT)
914 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL_SHIFT       24
915 #define QCA_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL_MASK        (1 << QCA_PLL_CPU_DDR_CLK_CTRL_AHBCLK_FROM_DDRPLL_SHIFT)
916
917 /* DDR_PLL_DITHER register (DDR PLL dither parameter) */
918 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_MAX_SHIFT                          0
919 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_MAX_MASK                           BITS(QCA_PLL_DDR_PLL_DITHER_NFRAC_MAX_SHIFT, 10)
920 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_MIN_SHIFT                          10
921 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_MIN_MASK                           BITS(QCA_PLL_DDR_PLL_DITHER_NFRAC_MIN_SHIFT, 10)
922 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_STEP_SHIFT                         20
923 #define QCA_PLL_DDR_PLL_DITHER_NFRAC_STEP_MASK                          BITS(QCA_PLL_DDR_PLL_DITHER_NFRAC_MIN_SHIFT, 7)
924 #define QCA_PLL_DDR_PLL_DITHER_UPDATE_CNT_SHIFT                         27
925 #define QCA_PLL_DDR_PLL_DITHER_UPDATE_CNT_MASK                          BITS(QCA_PLL_DDR_PLL_DITHER_UPDATE_CNT_SHIFT, 4)
926 #define QCA_PLL_DDR_PLL_DITHER_DITHER_EN_SHIFT                          31
927 #define QCA_PLL_DDR_PLL_DITHER_DITHER_EN_MASK                           (1 << QCA_PLL_DDR_PLL_DITHER_DITHER_EN_SHIFT)
928
929 #if (SOC_TYPE & QCA_AR933X_SOC)
930         /* PLL_DITHER_FRAC register (CPU PLL dither FRAC) */
931         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_SHIFT                  0
932         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_MASK                   BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_SHIFT, 10)
933         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT                  10
934         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_MASK                   BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT, 10)
935         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_STEP_SHIFT                 20
936         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_STEP_MASK                  BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT, 10)
937
938         /* PLL_DITHER register (CPU PLL dither) */
939         #define QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_SHIFT                 0
940         #define QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_MASK                  BITS(QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_SHIFT, 14)
941         #define QCA_PLL_CPU_PLL_DITHER_DITHER_EN_SHIFT                  31
942         #define QCA_PLL_CPU_PLL_DITHER_DITHER_EN_MASK                   (1 << QCA_PLL_CPU_PLL_DITHER_DITHER_EN_SHIFT)
943 #else
944         /* CPU_PLL_DITHER register (CPU PLL dither parameter) */
945         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_SHIFT                  0
946         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_MASK                   BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MAX_SHIFT, 6)
947         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT                  6
948         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_MASK                   BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT, 6)
949         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_STEP_SHIFT                 12
950         #define QCA_PLL_CPU_PLL_DITHER_NFRAC_STEP_MASK                  BITS(QCA_PLL_CPU_PLL_DITHER_NFRAC_MIN_SHIFT, 6)
951         #define QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_SHIFT                 18
952         #define QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_MASK                  BITS(QCA_PLL_CPU_PLL_DITHER_UPDATE_CNT_SHIFT, 6)
953         #define QCA_PLL_CPU_PLL_DITHER_DITHER_EN_SHIFT                  31
954         #define QCA_PLL_CPU_PLL_DITHER_DITHER_EN_MASK                   (1 << QCA_PLL_CPU_PLL_DITHER_DITHER_EN_SHIFT)
955 #endif
956
957 /*
958  * PLL SRIF registers (not available in AR933x)
959  */
960 #define QCA_PLL_SRIF_CPU_DPLL1_REG                              QCA_PLL_SRIF_BASE_REG + 0x1C0
961 #define QCA_PLL_SRIF_CPU_DPLL2_REG                              QCA_PLL_SRIF_BASE_REG + 0x1C4
962 #define QCA_PLL_SRIF_CPU_DPLL3_REG                              QCA_PLL_SRIF_BASE_REG + 0x1C8
963 #define QCA_PLL_SRIF_AUD_DPLL1_REG                              QCA_PLL_SRIF_BASE_REG + 0x200
964 #define QCA_PLL_SRIF_AUD_DPLL2_REG                              QCA_PLL_SRIF_BASE_REG + 0x204
965 #define QCA_PLL_SRIF_AUD_DPLL3_REG                              QCA_PLL_SRIF_BASE_REG + 0x208
966 #define QCA_PLL_SRIF_DDR_DPLL1_REG                              QCA_PLL_SRIF_BASE_REG + 0x240
967 #define QCA_PLL_SRIF_DDR_DPLL2_REG                              QCA_PLL_SRIF_BASE_REG + 0x244
968 #define QCA_PLL_SRIF_DDR_DPLL3_REG                              QCA_PLL_SRIF_BASE_REG + 0x248
969 #define QCA_PLL_SRIF_PCIE_DPLL1_REG                             QCA_PLL_SRIF_BASE_REG + 0xC00
970 #define QCA_PLL_SRIF_PCIE_DPLL2_REG                             QCA_PLL_SRIF_BASE_REG + 0xC04
971 #define QCA_PLL_SRIF_PCIE_DPLL3_REG                             QCA_PLL_SRIF_BASE_REG + 0xC08
972
973 /*
974  * PLL SRIF registers BIT fields (not available in AR933x)
975  */
976
977 /* DPLL1 (common for CPU, AUD, DDR and PCIE) */
978 #define QCA_PLL_SRIF_DPLL1_NFRAC_SHIFT                  0
979 #define QCA_PLL_SRIF_DPLL1_NFRAC_MASK                   BITS(QCA_PLL_SRIF_DPLL1_NFRAC_SHIFT, 18)
980 #define QCA_PLL_SRIF_DPLL1_NINT_SHIFT                   18
981 #define QCA_PLL_SRIF_DPLL1_NINT_MASK                    BITS(QCA_PLL_SRIF_DPLL1_NINT_SHIFT, 9)
982 #define QCA_PLL_SRIF_DPLL1_REFDIV_SHIFT                 27
983 #define QCA_PLL_SRIF_DPLL1_REFDIV_MASK                  BITS(QCA_PLL_SRIF_DPLL1_REFDIV_SHIFT, 5)
984
985 /* DPLL2 (common for CPU, AUD, DDR and PCIE) */
986 #if (SOC_TYPE & QCA_QCA953X_SOC)
987         #define QCA_PLL_SRIF_DPLL2_RST_TEST_SHIFT               0
988         #define QCA_PLL_SRIF_DPLL2_RST_TEST_MASK                (1 << QCA_PLL_SRIF_DPLL2_RST_TEST_SHIFT)
989         #define QCA_PLL_SRIF_DPLL2_SEL_CNT_SHIFT                1
990         #define QCA_PLL_SRIF_DPLL2_SEL_CNT_MASK                 (1 << QCA_PLL_SRIF_DPLL2_SEL_CNT_SHIFT)
991         #define QCA_PLL_SRIF_DPLL2_TEST_IN_SHIFT                2
992         #define QCA_PLL_SRIF_DPLL2_TEST_IN_MASK                 BITS(QCA_PLL_SRIF_DPLL2_TEST_IN_SHIFT, 10)
993         #define QCA_PLL_SRIF_DPLL2_PHASE_SHIFT_SHIFT    12
994         #define QCA_PLL_SRIF_DPLL2_PHASE_SHIFT_MASK             BITS(QCA_PLL_SRIF_DPLL2_PHASE_SHIFT_SHIFT, 7)
995         #define QCA_PLL_SRIF_DPLL2_OUTDIV_SHIFT                 19
996         #define QCA_PLL_SRIF_DPLL2_OUTDIV_MASK                  BITS(QCA_PLL_SRIF_DPLL2_OUTDIV_SHIFT, 3)
997         #define QCA_PLL_SRIF_DPLL2_PLLPWD_SHIFT                 22
998         #define QCA_PLL_SRIF_DPLL2_PLLPWD_MASK                  (1 << QCA_PLL_SRIF_DPLL2_PLLPWD_SHIFT)
999         #define QCA_PLL_SRIF_DPLL2_SEL_1SDM_SHIFT               23
1000         #define QCA_PLL_SRIF_DPLL2_SEL_1SDM_MASK                (1 << QCA_PLL_SRIF_DPLL2_SEL_1SDM_SHIFT)
1001         #define QCA_PLL_SRIF_DPLL2_NEGTRIG_EN_SHIFT             24
1002         #define QCA_PLL_SRIF_DPLL2_NEGTRIG_EN_MASK              (1 << QCA_PLL_SRIF_DPLL2_NEGTRIG_EN_SHIFT)
1003         #define QCA_PLL_SRIF_DPLL2_KD_SHIFT                             25
1004         #define QCA_PLL_SRIF_DPLL2_KD_MASK                              BITS(QCA_PLL_SRIF_DPLL2_KD_SHIFT, 4)
1005         #define QCA_PLL_SRIF_DPLL2_KI_SHIFT                             29
1006         #define QCA_PLL_SRIF_DPLL2_KI_MASK                              BITS(QCA_PLL_SRIF_DPLL2_KD_SHIFT, 2)
1007         #define QCA_PLL_SRIF_DPLL2_LOCAL_PLL_SHIFT              31
1008         #define QCA_PLL_SRIF_DPLL2_LOCAL_PLL_MASK               (1 << QCA_PLL_SRIF_DPLL2_LOCAL_PLL_SHIFT)
1009 #else
1010         #define QCA_PLL_SRIF_DPLL2_OUTDIV_SHIFT                 13
1011         #define QCA_PLL_SRIF_DPLL2_OUTDIV_MASK                  BITS(QCA_PLL_SRIF_DPLL2_OUTDIV_SHIFT, 2)
1012         #define QCA_PLL_SRIF_DPLL2_PLLPWD_SHIFT                 16
1013         #define QCA_PLL_SRIF_DPLL2_PLLPWD_MASK                  (1 << QCA_PLL_SRIF_DPLL2_PLLPWD_SHIFT)
1014         #define QCA_PLL_SRIF_DPLL2_KD_SHIFT                             19
1015         #define QCA_PLL_SRIF_DPLL2_KD_MASK                              BITS(QCA_PLL_SRIF_DPLL2_KD_SHIFT, 7)
1016         #define QCA_PLL_SRIF_DPLL2_KI_SHIFT                             26
1017         #define QCA_PLL_SRIF_DPLL2_KI_MASK                              BITS(QCA_PLL_SRIF_DPLL2_KI_SHIFT, 4)
1018         #define QCA_PLL_SRIF_DPLL2_LOCAL_PLL_SHIFT              30
1019         #define QCA_PLL_SRIF_DPLL2_LOCAL_PLL_MASK               (1 << QCA_PLL_SRIF_DPLL2_LOCAL_PLL_SHIFT)
1020         #define QCA_PLL_SRIF_DPLL2_RANGE_SHIFT                  31
1021         #define QCA_PLL_SRIF_DPLL2_RANGE_MASK                   (1 << QCA_PLL_SRIF_DPLL2_RANGE_SHIFT)
1022 #endif
1023
1024 /* DPLL3 (common for CPU, AUD, DDR and PCIE) */
1025 #define QCA_PLL_SRIF_DPLL3_PHASE_SHIFT_SHIFT    23
1026 #define QCA_PLL_SRIF_DPLL3_PHASE_SHIFT_MASK             BITS(QCA_PLL_SRIF_DPLL3_PHASE_SHIFT_SHIFT, 7)
1027
1028 /*
1029  * Reset control registers
1030  */
1031 #define QCA_RST_GENERAL_TIMER1_REG                              QCA_RST_BASE_REG + 0x00
1032 #define QCA_RST_GENERAL_TIMER1_RELOAD_REG               QCA_RST_BASE_REG + 0x04
1033 #define QCA_RST_WATCHDOG_TIMER_CTRL_REG                 QCA_RST_BASE_REG + 0x08
1034 #define QCA_RST_WATCHDOG_TIMER_REG                              QCA_RST_BASE_REG + 0x0C
1035 #define QCA_RST_MISC_INTERRUPT_STATUS_REG               QCA_RST_BASE_REG + 0x10
1036 #define QCA_RST_MISC_INTERRUPT_MASK_REG                 QCA_RST_BASE_REG + 0x14
1037 #define QCA_RST_GLOBALINTERRUPT_STATUS_REG              QCA_RST_BASE_REG + 0x18
1038 #define QCA_RST_RST_REG                                                 QCA_RST_BASE_REG + 0x1C
1039 #define QCA_RST_REVISION_ID_REG                                 QCA_RST_BASE_REG + 0x90
1040 #define QCA_RST_GENERAL_TIMER2_REG                              QCA_RST_BASE_REG + 0x94
1041 #define QCA_RST_GENERAL_TIMER2_RELOAD_REG               QCA_RST_BASE_REG + 0x98
1042 #define QCA_RST_GENERAL_TIMER3_REG                              QCA_RST_BASE_REG + 0x9C
1043 #define QCA_RST_GENERAL_TIMER3_RELOAD_REG               QCA_RST_BASE_REG + 0xA0
1044 #define QCA_RST_GENERAL_TIMER4_REG                              QCA_RST_BASE_REG + 0xA4
1045 #define QCA_RST_GENERAL_TIMER4_RELOAD_REG               QCA_RST_BASE_REG + 0xA8
1046
1047 #if (SOC_TYPE & QCA_AR933X_SOC)
1048         #define QCA_RST_BOOTSTRAP_REG                           QCA_RST_BASE_REG + 0xAC
1049 #else
1050         #define QCA_RST_BOOTSTRAP_REG                           QCA_RST_BASE_REG + 0xB0
1051 #endif
1052
1053 /*
1054  * Reset control registers BIT fields
1055  */
1056
1057 /* RST_BOOTSTRAP (Reset bootstrap) */
1058 #if (SOC_TYPE & QCA_AR933X_SOC)
1059         #define QCA_RST_BOOTSTRAP_REF_CLK_SHIFT                 0
1060 #else
1061         #define QCA_RST_BOOTSTRAP_REF_CLK_SHIFT                 4
1062 #endif
1063 #define QCA_RST_BOOTSTRAP_REF_CLK_MASK                          (1 << QCA_RST_BOOTSTRAP_REF_CLK_SHIFT)
1064 #define QCA_RST_BOOTSTRAP_REF_CLK_25M_VAL                       0x0
1065 #define QCA_RST_BOOTSTRAP_REF_CLK_40M_VAL                       0x1
1066
1067 #if (SOC_TYPE & QCA_AR933X_SOC)
1068         #define QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT                12
1069         #define QCA_RST_BOOTSTRAP_MEM_TYPE_MASK                 BITS(QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT, 2)
1070         #define QCA_RST_BOOTSTRAP_MEM_TYPE_SDR_VAL              0
1071         #define QCA_RST_BOOTSTRAP_MEM_TYPE_DDR1_VAL             1
1072         #define QCA_RST_BOOTSTRAP_MEM_TYPE_DDR2_VAL             2
1073         #define QCA_RST_BOOTSTRAP_MDIO_GPIO_EN_SHIFT    18
1074         #define QCA_RST_BOOTSTRAP_MDIO_GPIO_EN_MASK             (1 << QCA_RST_BOOTSTRAP_MDIO_GPIO_EN_SHIFT)
1075 #else
1076         #define QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT                0
1077
1078         /* v2 does not support SDR, but we can read reserved bit and make it universal */
1079         #if (SOC_TYPE & QCA_QCA953X_SOC)
1080                 #define QCA_RST_BOOTSTRAP_MEM_TYPE_MASK         BITS(QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT, 2)
1081         #else
1082                 #define QCA_RST_BOOTSTRAP_MEM_TYPE_MASK         (1 << QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT)
1083         #endif
1084
1085         #define QCA_RST_BOOTSTRAP_MEM_TYPE_SDR_VAL              3
1086         #define QCA_RST_BOOTSTRAP_MEM_TYPE_DDR1_VAL             1
1087         #define QCA_RST_BOOTSTRAP_MEM_TYPE_DDR2_VAL             0
1088 #endif
1089
1090 /* RST_RESET */
1091 #define QCA_RST_RESET_I2C_RST_SHIFT                                             0
1092 #define QCA_RST_RESET_I2C_RST_MASK                                              (1 << QCA_RST_RESET_I2C_RST_SHIFT)
1093 #define QCA_RST_RESET_MBOX_RST_SHIFT                                    1
1094 #define QCA_RST_RESET_MBOX_RST_MASK                                             (1 << QCA_RST_RESET_MBOX_RST_SHIFT)
1095 #define QCA_RST_RESET_LUT_RST_SHIFT                                             2
1096 #define QCA_RST_RESET_LUT_RST_MASK                                              (1 << QCA_RST_RESET_LUT_RST_SHIFT)
1097 #define QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_SHIFT               3
1098 #define QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_MASK                (1 << QCA_RST_RESET_USB_PHY_SUSPEND_ORIDE_SHIFT)
1099 #define QCA_RST_RESET_USB_PHY_RST_SHIFT                                 4
1100 #define QCA_RST_RESET_USB_PHY_RST_MASK                                  (1 << QCA_RST_RESET_USB_PHY_RST_SHIFT)
1101 #define QCA_RST_RESET_USB_HOST_RST_SHIFT                                5
1102 #define QCA_RST_RESET_USB_HOST_RST_MASK                                 (1 << QCA_RST_RESET_USB_HOST_RST_SHIFT)
1103
1104 #if (SOC_TYPE & QCA_AR933X_SOC)
1105         #define QCA_RST_RESET_SLIC_RST_SHIFT                            6
1106         #define QCA_RST_RESET_SLIC_RST_MASK                                     (1 << QCA_RST_RESET_SLIC_RST_SHIFT)
1107 #else
1108         #define QCA_RST_RESET_PCIE_RST_SHIFT                            6
1109         #define QCA_RST_RESET_PCIE_RST_MASK                                     (1 << QCA_RST_RESET_PCIE_RST_SHIFT)
1110         #define QCA_RST_RESET_SLIC_RST_SHIFT                            30
1111         #define QCA_RST_RESET_SLIC_RST_MASK                                     (1 << QCA_RST_RESET_SLIC_RST_SHIFT)
1112 #endif
1113
1114 #define QCA_RST_RESET_PCIE_PHY_RST_SHIFT                                7
1115 #define QCA_RST_RESET_PCIE_PHY_RST_MASK                                 (1 << QCA_RST_RESET_PCIE_PHY_RST_SHIFT)
1116
1117 #if (SOC_TYPE & QCA_QCA955X_SOC)
1118         #define QCA_RST_RESET_ETH_SGMII_RST_SHIFT                       8
1119         #define QCA_RST_RESET_ETH_SGMII_RST_MASK                        (1 << QCA_RST_RESET_ETH_SGMII_RST_SHIFT)
1120 #else
1121         #define QCA_RST_RESET_ETH_SWITCH_RST_SHIFT                      8
1122         #define QCA_RST_RESET_ETH_SWITCH_RST_MASK                       (1 << QCA_RST_RESET_ETH_SWITCH_RST_SHIFT)
1123 #endif
1124
1125 #define QCA_RST_RESET_GE0_MAC_RST_SHIFT                                 9
1126 #define QCA_RST_RESET_GE0_MAC_RST_MASK                                  (1 << QCA_RST_RESET_GE0_MAC_RST_SHIFT)
1127 #define QCA_RST_RESET_HOST_DMA_INT_SHIFT                                10
1128 #define QCA_RST_RESET_HOST_DMA_INT_MASK                                 (1 << QCA_RST_RESET_HOST_DMA_INT_SHIFT)
1129
1130 #if (SOC_TYPE & QCA_AR933X_SOC)
1131         #define QCA_RST_RESET_WLAN_RST_SHIFT                            11
1132         #define QCA_RST_RESET_WLAN_RST_MASK                                     (1 << QCA_RST_RESET_WLAN_RST_SHIFT)
1133 #else
1134         #define QCA_RST_RESET_USB_PHY_ARST_SHIFT                        11
1135         #define QCA_RST_RESET_USB_PHY_ARST_MASK                         (1 << QCA_RST_RESET_USB_PHY_ARST_SHIFT)
1136 #endif
1137
1138 #if (SOC_TYPE & QCA_AR933X_SOC)
1139         #define QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT                     14
1140         #define QCA_RST_RESET_ETH_SWITCH_ARST_MASK                      (1 << QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT)
1141 #else
1142         #if (SOC_TYPE & QCA_QCA955X_SOC)
1143                 #define QCA_RST_RESET_ETH_SGMII_ARST_SHIFT              12
1144                 #define QCA_RST_RESET_ETH_SGMII_ARST_MASK               (1 << QCA_RST_RESET_ETH_SGMII_ARST_SHIFT)
1145         #else
1146                 #define QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT             12
1147                 #define QCA_RST_RESET_ETH_SWITCH_ARST_MASK              (1 << QCA_RST_RESET_ETH_SWITCH_ARST_SHIFT)
1148         #endif
1149
1150         #define QCA_RST_RESET_NANDF_RST_SHIFT                           14
1151         #define QCA_RST_RESET_NANDF_RST_MASK                            (1 << QCA_RST_RESET_NANDF_RST_SHIFT)
1152 #endif
1153
1154 #define QCA_RST_RESET_GE1_MAC_RST_SHIFT                                 13
1155 #define QCA_RST_RESET_GE1_MAC_RST_MASK                                  (1 << QCA_RST_RESET_GE1_MAC_RST_SHIFT)
1156 #define QCA_RST_RESET_USB_PHY_PLLPWD_EXT_SHIFT                  15
1157 #define QCA_RST_RESET_USB_PHY_PLLPWD_EXT_MASK                   (1 << QCA_RST_RESET_USB_PHY_PLLPWD_EXT_SHIFT)
1158 #define QCA_RST_RESET_DDR_RST_SHIFT                                             16
1159 #define QCA_RST_RESET_DDR_RST_MASK                                              (1 << QCA_RST_RESET_DDR_RST_SHIFT)
1160 #define QCA_RST_RESET_HSUART_RST_SHIFT                                  17
1161 #define QCA_RST_RESET_HSUART_RST_MASK                                   (1 << QCA_RST_RESET_HSUART_RST_SHIFT)
1162 #define QCA_RST_RESET_PCIEEP_RST_SHIFT                                  18
1163 #define QCA_RST_RESET_PCIEEP_RST_MASK                                   (1 << QCA_RST_RESET_PCIEEP_RST_SHIFT)
1164 #define QCA_RST_RESET_HOST_DMA_RST_INT_SHIFT                    19
1165 #define QCA_RST_RESET_HOST_DMA_RST_INT_MASK                             (1 << QCA_RST_RESET_HOST_DMA_RST_INT_SHIFT)
1166 #define QCA_RST_RESET_CPU_COLD_RST_SHIFT                                20
1167 #define QCA_RST_RESET_CPU_COLD_RST_MASK                                 (1 << QCA_RST_RESET_CPU_COLD_RST_SHIFT)
1168 #define QCA_RST_RESET_CPU_NMI_SHIFT                                             21
1169 #define QCA_RST_RESET_CPU_NMI_MASK                                              (1 << QCA_RST_RESET_CPU_NMI_SHIFT)
1170 #define QCA_RST_RESET_GE0_MDIO_RST_SHIFT                                22
1171 #define QCA_RST_RESET_GE0_MDIO_RST_MASK                                 (1 << QCA_RST_RESET_GE0_MDIO_RST_SHIFT)
1172 #define QCA_RST_RESET_GE1_MDIO_RST_SHIFT                                23
1173 #define QCA_RST_RESET_GE1_MDIO_RST_MASK                                 (1 << QCA_RST_RESET_GE1_MDIO_RST_SHIFT)
1174 #define QCA_RST_RESET_FULL_CHIP_RST_SHIFT                               24
1175 #define QCA_RST_RESET_FULL_CHIP_RST_MASK                                (1 << QCA_RST_RESET_FULL_CHIP_RST_SHIFT)
1176 #define QCA_RST_RESET_CHECKSUM_ACC_RST_SHIFT                    25
1177 #define QCA_RST_RESET_CHECKSUM_ACC_RST_MASK                             (1 << QCA_RST_RESET_CHECKSUM_ACC_RST_SHIFT)
1178 #define QCA_RST_RESET_PCIEEP_RST_INT_SHIFT                              26
1179 #define QCA_RST_RESET_PCIEEP_RST_INT_MASK                               (1 << QCA_RST_RESET_PCIEEP_RST_INT_SHIFT)
1180 #define QCA_RST_RESET_RTC_RST_SHIFT                                             27
1181 #define QCA_RST_RESET_RTC_RST_MASK                                              (1 << QCA_RST_RESET_RTC_RST_SHIFT)
1182 #define QCA_RST_RESET_EXT_RST_SHIFT                                             28
1183 #define QCA_RST_RESET_EXT_RST_MASK                                              (1 << QCA_RST_RESET_EXT_RST_SHIFT)
1184
1185 #if (SOC_TYPE & QCA_AR934X_SOC) | \
1186         (SOC_TYPE & QCA_QCA955X_SOC)
1187         #define QCA_RST_RESET_HOST_DMA_RST_SHIFT                        29
1188         #define QCA_RST_RESET_HOST_DMA_RST_MASK                         (1 << QCA_RST_RESET_HOST_DMA_RST_SHIFT)
1189 #else
1190         #define QCA_RST_RESET_USB_EXT_PWR_SHIFT                         29
1191         #define QCA_RST_RESET_USB_EXT_PWR_MASK                          (1 << QCA_RST_RESET_USB_EXT_PWR_SHIFT)
1192 #endif
1193
1194 #define QCA_RST_RESET_HOST_DMA_RST_STATUS_SHIFT                 31
1195 #define QCA_RST_RESET_HOST_DMA_RST_STATUS_MASK                  (1 << QCA_RST_RESET_HOST_DMA_RST_STATUS_SHIFT)
1196
1197 /* RST_REVISION_ID (Chip revision ID) */
1198 #define QCA_RST_REVISION_ID_MAJOR_SHIFT                         4
1199 #define QCA_RST_REVISION_ID_MAJOR_MASK                          BITS(QCA_RST_REVISION_ID_MAJOR_SHIFT, 12)
1200
1201 #if (SOC_TYPE & QCA_AR933X_SOC)
1202         #define QCA_RST_REVISION_ID_REV_SHIFT                   0
1203         #define QCA_RST_REVISION_ID_REV_MASK                    BITS(QCA_RST_REVISION_ID_REV_SHIFT, 2)
1204 #else
1205         #define QCA_RST_REVISION_ID_REV_SHIFT                   0
1206         #define QCA_RST_REVISION_ID_REV_MASK                    BITS(QCA_RST_REVISION_ID_REV_SHIFT, 4)
1207 #endif
1208
1209 #define QCA_RST_REVISION_ID_MAJOR_AR9330_VAL            0x0110
1210 #define QCA_RST_REVISION_ID_MAJOR_AR9331_VAL            0x1110
1211 #define QCA_RST_REVISION_ID_MAJOR_AR9341_VAL            0x0120
1212 #define QCA_RST_REVISION_ID_MAJOR_AR9344_VAL            0x2120
1213 #define QCA_RST_REVISION_ID_MAJOR_QCA953X_VAL           0x0140
1214 #define QCA_RST_REVISION_ID_MAJOR_QCA953X_V2_VAL        0x0160
1215 #define QCA_RST_REVISION_ID_MAJOR_QCA9558_VAL           0x1130
1216
1217 /*
1218  * RTC registers
1219  */
1220 #define QCA_RTC_RST_CTRL_REG                                    QCA_RTC_BASE_REG + 0x00
1221 #define QCA_RTC_XTAL_CTRL_REG                                   QCA_RTC_BASE_REG + 0x04
1222 #define QCA_RTC_WLAN_PLL_CTRL_REG                               QCA_RTC_BASE_REG + 0x14
1223 #define QCA_RTC_PLL_SETTLE_REG                                  QCA_RTC_BASE_REG + 0x18
1224 #define QCA_RTC_XTAL_SETTLE_REG                                 QCA_RTC_BASE_REG + 0x1C
1225 #define QCA_RTC_CLK_OUT_REG                                             QCA_RTC_BASE_REG + 0x20
1226 #define QCA_RTC_RST_CAUSE_REG                                   QCA_RTC_BASE_REG + 0x28
1227 #define QCA_RTC_SYS_SLEEP_REG                                   QCA_RTC_BASE_REG + 0x2C
1228 #define QCA_RTC_KEEP_AWAKE_REG                                  QCA_RTC_BASE_REG + 0x34
1229 #define QCA_RTC_DERIVED_RTC_CLK_REG                             QCA_RTC_BASE_REG + 0x38
1230 #define QCA_RTC_PLL_CTRL2_REG                                   QCA_RTC_BASE_REG + 0x3C
1231 #define QCA_RTC_SYNC_RST_REG                                    QCA_RTC_BASE_REG + 0x40
1232 #define QCA_RTC_SYNC_STATUS_REG                                 QCA_RTC_BASE_REG + 0x44
1233 #define QCA_RTC_SYNC_DERIVED_REG                                QCA_RTC_BASE_REG + 0x48
1234 #define QCA_RTC_FORCE_WAKE_REG                                  QCA_RTC_BASE_REG + 0x4C
1235 #define QCA_RTC_INTERRUPT_CAUSE_REG                             QCA_RTC_BASE_REG + 0x50
1236 #define QCA_RTC_INTERRUPT_EN_REG                                QCA_RTC_BASE_REG + 0x54
1237 #define QCA_RTC_INTERRUPT_MASK_REG                              QCA_RTC_BASE_REG + 0x58
1238
1239 /*
1240  * RTC registers BIT fields
1241  */
1242
1243 /* RESET_CONTROL register (RTC reset control) */
1244 #define QCA_RTC_RST_CTRL_MAC_WARM_RST_SHIFT             0
1245 #define QCA_RTC_RST_CTRL_MAC_WARM_RST_MASK              (1 << QCA_RTC_RST_CTRL_MAC_WARM_RST_SHIFT)
1246 #define QCA_RTC_RST_CTRL_MAC_COLD_RST_SHIFT             1
1247 #define QCA_RTC_RST_CTRL_MAC_COLD_RST_MASK              (1 << QCA_RTC_RST_CTRL_MAC_COLD_RST_SHIFT)
1248 #define QCA_RTC_RST_CTRL_WARM_RST_SHIFT                 2
1249 #define QCA_RTC_RST_CTRL_WARM_RST_MASK                  (1 << QCA_RTC_RST_CTRL_WARM_RST_SHIFT)
1250 #define QCA_RTC_RST_CTRL_COLD_RST_SHIFT                 3
1251 #define QCA_RTC_RST_CTRL_COLD_RST_MASK                  (1 << QCA_RTC_RST_CTRL_COLD_RST_SHIFT)
1252
1253 /* RESET_CAUSE register (Reset cause) */
1254 #define QCA_RTC_RST_CAUSE_LAST_SHIFT                    0
1255 #define QCA_RTC_RST_CAUSE_LAST_MASK                             BITS(QCA_RTC_RST_CAUSE_LAST_SHIFT, 2)
1256
1257 #define QCA_RTC_RST_CAUSE_LAST_HARD_VAL                 0
1258 #define QCA_RTC_RST_CAUSE_LAST_COLD_VAL                 1
1259 #define QCA_RTC_RST_CAUSE_LAST_WARM_VAL                 2
1260
1261 /* RTC_SYNC_REGISTER register (RTC reset, force sleep and force wakeup) */
1262 #define QCA_RTC_SYNC_RST_RESET_SHIFT                    0
1263 #define QCA_RTC_SYNC_RST_RESET_MASK                             (1 << QCA_RTC_SYNC_RST_RESET_SHIFT)
1264
1265 /* RTC_SYNC_STATUS register (RTC sync/sleep status) */
1266 #define QCA_RTC_SYNC_STATUS_SHUTDOWN_SHIFT              0
1267 #define QCA_RTC_SYNC_STATUS_SHUTDOWN_MASK               (1 << QCA_RTC_SYNC_STATUS_SHUTDOWN_SHIFT)
1268 #define QCA_RTC_SYNC_STATUS_ON_SHIFT                    1
1269 #define QCA_RTC_SYNC_STATUS_ON_MASK                             (1 << QCA_RTC_SYNC_STATUS_ON_SHIFT)
1270 #define QCA_RTC_SYNC_STATUS_SLEEP_SHIFT                 2
1271 #define QCA_RTC_SYNC_STATUS_SLEEP_MASK                  (1 << QCA_RTC_SYNC_STATUS_SLEEP_SHIFT)
1272 #define QCA_RTC_SYNC_STATUS_WAKEUP_SHIFT                3
1273 #define QCA_RTC_SYNC_STATUS_WAKEUP_MASK                 (1 << QCA_RTC_SYNC_STATUS_WAKEUP_SHIFT)
1274 #define QCA_RTC_SYNC_STATUS_WRESET_SHIFT                4
1275 #define QCA_RTC_SYNC_STATUS_WRESET_MASK                 (1 << QCA_RTC_SYNC_STATUS_WRESET_SHIFT)
1276 #define QCA_RTC_SYNC_STATUS_PLL_CHANGING_SHIFT  5
1277 #define QCA_RTC_SYNC_STATUS_PLL_CHANGING_MASK   (1 << QCA_RTC_SYNC_STATUS_PLL_CHANGING_SHIFT)
1278
1279 /*
1280  * SPI serial flash registers
1281  */
1282 #define QCA_SPI_FUNC_SEL_REG                            QCA_FLASH_BASE_REG + 0x00
1283 #define QCA_SPI_CTRL_REG                                        QCA_FLASH_BASE_REG + 0x04
1284 #define QCA_SPI_IO_CTRL_REG                                     QCA_FLASH_BASE_REG + 0x08
1285 #define QCA_SPI_READ_DATA_REG                           QCA_FLASH_BASE_REG + 0x0C
1286 #define QCA_SPI_SHIFT_DATAOUT_REG                       QCA_FLASH_BASE_REG + 0x10
1287 #define QCA_SPI_SHIFT_CNT_REG                           QCA_FLASH_BASE_REG + 0x14
1288 #define QCA_SPI_SHIFT_DATAIN_REG                        QCA_FLASH_BASE_REG + 0x18
1289
1290 /*
1291  * SPI serial flash registers BIT fields
1292  */
1293
1294 /* SPI_FUNC_SELECT register (SPI function select) */
1295 #define QCA_SPI_FUNC_SEL_FUNC_SEL_SHIFT         0
1296 #define QCA_SPI_FUNC_SEL_FUNC_SEL_MASK          (1 << QCA_SPI_FUNC_SEL_FUNC_SEL_SHIFT)
1297
1298 /* SPI_CONTROL register (SPI control) */
1299 #define QCA_SPI_CTRL_CLK_DIV_SHIFT                      0
1300 #define QCA_SPI_CTRL_CLK_DIV_MASK                       BITS(QCA_SPI_CTRL_CLK_DIV_SHIFT, 6)
1301 #define QCA_SPI_CTRL_REMAP_DIS_SHIFT            6
1302 #define QCA_SPI_CTRL_REMAP_DIS_MASK                     (1 << QCA_SPI_CTRL_REMAP_DIS_SHIFT)
1303 #define QCA_SPI_CTRL_SPI_RELOCATE_SHIFT         7
1304 #define QCA_SPI_CTRL_SPI_RELOCATE_MASK          (1 << QCA_SPI_CTRL_SPI_RELOCATE_SHIFT)
1305 #define QCA_SPI_CTRL_TSHSL_CNT_SHIFT            8
1306 #define QCA_SPI_CTRL_TSHSL_CNT_MASK                     BITS(QCA_SPI_CTRL_TSHSL_CNT_SHIFT, 6)
1307
1308 /* SPI_IO_CONTROL register (SPI I/O control) */
1309 #define QCA_SPI_IO_CTRL_IO_DO_SHIFT                     0
1310 #define QCA_SPI_IO_CTRL_IO_DO_MASK                      (1 << QCA_SPI_IO_CTRL_IO_DO_SHIFT)
1311 #define QCA_SPI_IO_CTRL_IO_CLK_SHIFT            8
1312 #define QCA_SPI_IO_CTRL_IO_CLK_MASK                     (1 << QCA_SPI_IO_CTRL_IO_CLK_SHIFT)
1313 #define QCA_SPI_IO_CTRL_IO_CS0_SHIFT            16
1314 #define QCA_SPI_IO_CTRL_IO_CS0_MASK                     (1 << QCA_SPI_IO_CTRL_IO_CS0_SHIFT)
1315 #define QCA_SPI_IO_CTRL_IO_CS1_SHIFT            17
1316 #define QCA_SPI_IO_CTRL_IO_CS1_MASK                     (1 << QCA_SPI_IO_CTRL_IO_CS1_SHIFT)
1317 #define QCA_SPI_IO_CTRL_IO_CS2_SHIFT            18
1318 #define QCA_SPI_IO_CTRL_IO_CS2_MASK                     (1 << QCA_SPI_IO_CTRL_IO_CS2_SHIFT)
1319
1320 /* SPI_SHIFT_CNT_ADDR register (SPI content to shift out or in) */
1321 #define QCA_SPI_SHIFT_CNT_BITS_CNT_SHIFT                0
1322 #define QCA_SPI_SHIFT_CNT_BITS_CNT_MASK                 BITS(QCA_SPI_SHIFT_CNT_BITS_CNT_SHIFT, 7)
1323 #define QCA_SPI_SHIFT_CNT_TERMINATE_SHIFT               26
1324 #define QCA_SPI_SHIFT_CNT_TERMINATE_MASK                (1 << QCA_SPI_SHIFT_CNT_TERMINATE_SHIFT)
1325 #define QCA_SPI_SHIFT_CNT_CLKOUT_INIT_SHIFT             27
1326 #define QCA_SPI_SHIFT_CNT_CLKOUT_INIT_MASK              (1 << QCA_SPI_SHIFT_CNT_CLKOUT_INIT_SHIFT)
1327 #define QCA_SPI_SHIFT_CNT_CHNL_CS0_SHIFT                28
1328 #define QCA_SPI_SHIFT_CNT_CHNL_CS0_MASK                 (1 << QCA_SPI_SHIFT_CNT_CHNL_CS0_SHIFT)
1329 #define QCA_SPI_SHIFT_CNT_CHNL_CS1_SHIFT                29
1330 #define QCA_SPI_SHIFT_CNT_CHNL_CS1_MASK                 (1 << QCA_SPI_SHIFT_CNT_CHNL_CS1_SHIFT)
1331 #define QCA_SPI_SHIFT_CNT_CHNL_CS2_SHIFT                30
1332 #define QCA_SPI_SHIFT_CNT_CHNL_CS2_MASK                 (1 << QCA_SPI_SHIFT_CNT_CHNL_CS2_SHIFT)
1333 #define QCA_SPI_SHIFT_CNT_SHIFT_EN_SHIFT                31
1334 #define QCA_SPI_SHIFT_CNT_SHIFT_EN_MASK                 (1 << QCA_SPI_SHIFT_CNT_SHIFT_EN_SHIFT)
1335
1336 /*
1337  * Other useful defines
1338  */
1339
1340 /* Magic flag for indication that PLL/clocks config is stored in FLASH */
1341 #define QCA_PLL_IN_FLASH_MAGIC          0x504C4C73
1342
1343 /*
1344  * Functions
1345  */
1346 #ifndef __ASSEMBLY__
1347 inline u32 qca_xtal_is_40mhz(void);
1348 inline u32 qca_mem_type(void);
1349 void   qca_soc_name_rev(char *buf);
1350 void   qca_full_chip_reset(void);
1351 void   qca_sys_clocks(u32 *cpu_clk, u32 *ddr_clk, u32 *ahb_clk, u32 *spi_clk, u32 *ref_clk);
1352 void   qca_sf_bulk_erase(u32 bank);
1353 void   qca_sf_write_page(u32 bank, u32 address, u32 length, u8 *data);
1354 u32    qca_sf_sect_erase(u32 bank, u32 address, u32 sect_size, u8 erase_cmd);
1355 u32    qca_sf_sfdp_info(u32 bank, u32 *flash_size, u32 *sector_size, u8 *erase_cmd);
1356 u32    qca_sf_jedec_id(u32 bank);
1357 #endif /* !__ASSEMBLY__ */
1358
1359 /*
1360  * Read, write, set and clear macros
1361  */
1362 #define qca_soc_reg_read(_addr)                 *(volatile unsigned int *)(KSEG1ADDR(_addr))
1363 #define qca_soc_reg_write(_addr, _val)  ((*(volatile unsigned int *)KSEG1ADDR(_addr)) = (_val))
1364
1365 #define qca_soc_reg_read_set(_addr, _mask)      \
1366                 qca_soc_reg_write((_addr), (qca_soc_reg_read((_addr)) | (_mask)))
1367
1368 #define qca_soc_reg_read_clear(_addr, _mask)    \
1369                 qca_soc_reg_write((_addr), (qca_soc_reg_read((_addr)) & ~(_mask)))
1370
1371 #endif /* _QCA_SOC_COMMON_H_ */