1  /* SPDX-License-Identifier: GPL-2.0 */
2  /*
3   * Copyright (c) 2011-2013 MaxLinear, Inc. All rights reserved
4   *
5   * This program may alternatively be licensed under a proprietary license from
6   * MaxLinear, Inc.
7   *
8   */
9  
10  #ifndef __MXL58X_REGISTERS_H__
11  #define __MXL58X_REGISTERS_H__
12  
13  #define HYDRA_INTR_STATUS_REG               0x80030008
14  #define HYDRA_INTR_MASK_REG                 0x8003000C
15  
16  #define HYDRA_CRYSTAL_SETTING               0x3FFFC5F0 /* 0 - 24 MHz & 1 - 27 MHz */
17  #define HYDRA_CRYSTAL_CAP                   0x3FFFEDA4 /* 0 - 24 MHz & 1 - 27 MHz */
18  
19  #define HYDRA_CPU_RESET_REG                 0x8003003C
20  #define HYDRA_CPU_RESET_DATA                0x00000400
21  
22  #define HYDRA_RESET_TRANSPORT_FIFO_REG      0x80030028
23  #define HYDRA_RESET_TRANSPORT_FIFO_DATA     0x00000000
24  
25  #define HYDRA_RESET_BBAND_REG               0x80030024
26  #define HYDRA_RESET_BBAND_DATA              0x00000000
27  
28  #define HYDRA_RESET_XBAR_REG                0x80030020
29  #define HYDRA_RESET_XBAR_DATA               0x00000000
30  
31  #define HYDRA_MODULES_CLK_1_REG             0x80030014
32  #define HYDRA_DISABLE_CLK_1                 0x00000000
33  
34  #define HYDRA_MODULES_CLK_2_REG             0x8003001C
35  #define HYDRA_DISABLE_CLK_2                 0x0000000B
36  
37  #define HYDRA_PRCM_ROOT_CLK_REG             0x80030018
38  #define HYDRA_PRCM_ROOT_CLK_DISABLE         0x00000000
39  
40  #define HYDRA_CPU_RESET_CHECK_REG           0x80030008
41  #define HYDRA_CPU_RESET_CHECK_OFFSET        0x40000000  /* <bit 30> */
42  
43  #define HYDRA_SKU_ID_REG                    0x90000190
44  
45  #define FW_DL_SIGN_ADDR                     0x3FFFEAE0
46  
47  /* Register to check if FW is running or not */
48  #define HYDRA_HEAR_BEAT                     0x3FFFEDDC
49  
50  /* Firmware version */
51  #define HYDRA_FIRMWARE_VERSION              0x3FFFEDB8
52  #define HYDRA_FW_RC_VERSION                 0x3FFFCFAC
53  
54  /* Firmware patch version */
55  #define HYDRA_FIRMWARE_PATCH_VERSION        0x3FFFEDC2
56  
57  /* SOC operating temperature in C */
58  #define HYDRA_TEMPARATURE                   0x3FFFEDB4
59  
60  /* Demod & Tuner status registers */
61  /* Demod 0 status base address */
62  #define HYDRA_DEMOD_0_BASE_ADDR             0x3FFFC64C
63  
64  /* Tuner 0 status base address */
65  #define HYDRA_TUNER_0_BASE_ADDR             0x3FFFCE4C
66  
67  #define POWER_FROM_ADCRSSI_READBACK         0x3FFFEB6C
68  
69  /* Macros to determine base address of respective demod or tuner */
70  #define HYDRA_DMD_STATUS_OFFSET(demodID)        ((demodID) * 0x100)
71  #define HYDRA_TUNER_STATUS_OFFSET(tunerID)      ((tunerID) * 0x40)
72  
73  /* Demod status address offset from respective demod's base address */
74  #define HYDRA_DMD_AGC_DIG_LEVEL_ADDR_OFFSET               0x3FFFC64C
75  #define HYDRA_DMD_LOCK_STATUS_ADDR_OFFSET                 0x3FFFC650
76  #define HYDRA_DMD_ACQ_STATUS_ADDR_OFFSET                  0x3FFFC654
77  
78  #define HYDRA_DMD_STANDARD_ADDR_OFFSET                    0x3FFFC658
79  #define HYDRA_DMD_SPECTRUM_INVERSION_ADDR_OFFSET          0x3FFFC65C
80  #define HYDRA_DMD_SPECTRUM_ROLL_OFF_ADDR_OFFSET           0x3FFFC660
81  #define HYDRA_DMD_SYMBOL_RATE_ADDR_OFFSET                 0x3FFFC664
82  #define HYDRA_DMD_MODULATION_SCHEME_ADDR_OFFSET           0x3FFFC668
83  #define HYDRA_DMD_FEC_CODE_RATE_ADDR_OFFSET               0x3FFFC66C
84  
85  #define HYDRA_DMD_SNR_ADDR_OFFSET                         0x3FFFC670
86  #define HYDRA_DMD_FREQ_OFFSET_ADDR_OFFSET                 0x3FFFC674
87  #define HYDRA_DMD_CTL_FREQ_OFFSET_ADDR_OFFSET             0x3FFFC678
88  #define HYDRA_DMD_STR_FREQ_OFFSET_ADDR_OFFSET             0x3FFFC67C
89  #define HYDRA_DMD_FTL_FREQ_OFFSET_ADDR_OFFSET             0x3FFFC680
90  #define HYDRA_DMD_STR_NBC_SYNC_LOCK_ADDR_OFFSET           0x3FFFC684
91  #define HYDRA_DMD_CYCLE_SLIP_COUNT_ADDR_OFFSET            0x3FFFC688
92  
93  #define HYDRA_DMD_DISPLAY_I_ADDR_OFFSET                   0x3FFFC68C
94  #define HYDRA_DMD_DISPLAY_Q_ADDR_OFFSET                   0x3FFFC68E
95  
96  #define HYDRA_DMD_DVBS2_CRC_ERRORS_ADDR_OFFSET            0x3FFFC690
97  #define HYDRA_DMD_DVBS2_PER_COUNT_ADDR_OFFSET             0x3FFFC694
98  #define HYDRA_DMD_DVBS2_PER_WINDOW_ADDR_OFFSET            0x3FFFC698
99  
100  #define HYDRA_DMD_DVBS_CORR_RS_ERRORS_ADDR_OFFSET         0x3FFFC69C
101  #define HYDRA_DMD_DVBS_UNCORR_RS_ERRORS_ADDR_OFFSET       0x3FFFC6A0
102  #define HYDRA_DMD_DVBS_BER_COUNT_ADDR_OFFSET              0x3FFFC6A4
103  #define HYDRA_DMD_DVBS_BER_WINDOW_ADDR_OFFSET             0x3FFFC6A8
104  
105  /* Debug-purpose DVB-S DMD 0 */
106  #define HYDRA_DMD_DVBS_1ST_CORR_RS_ERRORS_ADDR_OFFSET     0x3FFFC6C8  /* corrected RS Errors: 1st iteration */
107  #define HYDRA_DMD_DVBS_1ST_UNCORR_RS_ERRORS_ADDR_OFFSET   0x3FFFC6CC  /* uncorrected RS Errors: 1st iteration */
108  #define HYDRA_DMD_DVBS_BER_COUNT_1ST_ADDR_OFFSET          0x3FFFC6D0
109  #define HYDRA_DMD_DVBS_BER_WINDOW_1ST_ADDR_OFFSET         0x3FFFC6D4
110  
111  #define HYDRA_DMD_TUNER_ID_ADDR_OFFSET                    0x3FFFC6AC
112  #define HYDRA_DMD_DVBS2_PILOT_ON_OFF_ADDR_OFFSET          0x3FFFC6B0
113  #define HYDRA_DMD_FREQ_SEARCH_RANGE_KHZ_ADDR_OFFSET       0x3FFFC6B4
114  #define HYDRA_DMD_STATUS_LOCK_ADDR_OFFSET                 0x3FFFC6B8
115  #define HYDRA_DMD_STATUS_CENTER_FREQ_IN_KHZ_ADDR          0x3FFFC704
116  #define HYDRA_DMD_STATUS_INPUT_POWER_ADDR                 0x3FFFC708
117  
118  /* DVB-S new scaled_BER_count for a new BER API, see HYDRA-1343 "DVB-S post viterbi information" */
119  #define DMD0_STATUS_DVBS_1ST_SCALED_BER_COUNT_ADDR        0x3FFFC710 /* DMD 0: 1st iteration BER count scaled by HYDRA_BER_COUNT_SCALING_FACTOR */
120  #define DMD0_STATUS_DVBS_SCALED_BER_COUNT_ADDR            0x3FFFC714 /* DMD 0: 2nd iteration BER count scaled by HYDRA_BER_COUNT_SCALING_FACTOR */
121  
122  #define DMD0_SPECTRUM_MIN_GAIN_STATUS                     0x3FFFC73C
123  #define DMD0_SPECTRUM_MIN_GAIN_WB_SAGC_VALUE              0x3FFFC740
124  #define DMD0_SPECTRUM_MIN_GAIN_NB_SAGC_VALUE              0x3FFFC744
125  
126  #define HYDRA_DMD_STATUS_END_ADDR_OFFSET                  0x3FFFC748
127  
128  /* Tuner status address offset from respective tuners's base address */
129  #define HYDRA_TUNER_DEMOD_ID_ADDR_OFFSET                  0x3FFFCE4C
130  #define HYDRA_TUNER_AGC_LOCK_OFFSET                       0x3FFFCE50
131  #define HYDRA_TUNER_SPECTRUM_STATUS_OFFSET                0x3FFFCE54
132  #define HYDRA_TUNER_SPECTRUM_BIN_SIZE_OFFSET              0x3FFFCE58
133  #define HYDRA_TUNER_SPECTRUM_ADDRESS_OFFSET               0x3FFFCE5C
134  #define HYDRA_TUNER_ENABLE_COMPLETE                       0x3FFFEB78
135  
136  #define HYDRA_DEMOD_STATUS_LOCK(devId, demodId)   write_register(devId, (HYDRA_DMD_STATUS_LOCK_ADDR_OFFSET + HYDRA_DMD_STATUS_OFFSET(demodId)), MXL_YES)
137  #define HYDRA_DEMOD_STATUS_UNLOCK(devId, demodId) write_register(devId, (HYDRA_DMD_STATUS_LOCK_ADDR_OFFSET + HYDRA_DMD_STATUS_OFFSET(demodId)), MXL_NO)
138  
139  #define HYDRA_VERSION                                     0x3FFFEDB8
140  #define HYDRA_DEMOD0_VERSION                              0x3FFFEDBC
141  #define HYDRA_DEMOD1_VERSION                              0x3FFFEDC0
142  #define HYDRA_DEMOD2_VERSION                              0x3FFFEDC4
143  #define HYDRA_DEMOD3_VERSION                              0x3FFFEDC8
144  #define HYDRA_DEMOD4_VERSION                              0x3FFFEDCC
145  #define HYDRA_DEMOD5_VERSION                              0x3FFFEDD0
146  #define HYDRA_DEMOD6_VERSION                              0x3FFFEDD4
147  #define HYDRA_DEMOD7_VERSION                              0x3FFFEDD8
148  #define HYDRA_HEAR_BEAT                                   0x3FFFEDDC
149  #define HYDRA_SKU_MGMT                                    0x3FFFEBC0
150  
151  #define MXL_HYDRA_FPGA_A_ADDRESS                          0x91C00000
152  #define MXL_HYDRA_FPGA_B_ADDRESS                          0x91D00000
153  
154  /* TS control base address */
155  #define HYDRA_TS_CTRL_BASE_ADDR                           0x90700000
156  
157  #define MPEG_MUX_MODE_SLICE0_REG            (HYDRA_TS_CTRL_BASE_ADDR + 0x08)
158  
159  #define MPEG_MUX_MODE_SLICE1_REG            (HYDRA_TS_CTRL_BASE_ADDR + 0x08)
160  
161  #define PID_BANK_SEL_SLICE0_REG             (HYDRA_TS_CTRL_BASE_ADDR + 0x190)
162  #define PID_BANK_SEL_SLICE1_REG             (HYDRA_TS_CTRL_BASE_ADDR + 0x1B0)
163  
164  #define MPEG_CLK_GATED_REG                  (HYDRA_TS_CTRL_BASE_ADDR + 0x20)
165  
166  #define MPEG_CLK_ALWAYS_ON_REG              (HYDRA_TS_CTRL_BASE_ADDR + 0x1D4)
167  
168  #define HYDRA_REGULAR_PID_BANK_A_REG        (HYDRA_TS_CTRL_BASE_ADDR + 0x190)
169  
170  #define HYDRA_FIXED_PID_BANK_A_REG          (HYDRA_TS_CTRL_BASE_ADDR + 0x190)
171  
172  #define HYDRA_REGULAR_PID_BANK_B_REG        (HYDRA_TS_CTRL_BASE_ADDR + 0x1B0)
173  
174  #define HYDRA_FIXED_PID_BANK_B_REG          (HYDRA_TS_CTRL_BASE_ADDR + 0x1B0)
175  
176  #define FIXED_PID_TBL_REG_ADDRESS_0         (HYDRA_TS_CTRL_BASE_ADDR + 0x9000)
177  #define FIXED_PID_TBL_REG_ADDRESS_1         (HYDRA_TS_CTRL_BASE_ADDR + 0x9100)
178  #define FIXED_PID_TBL_REG_ADDRESS_2         (HYDRA_TS_CTRL_BASE_ADDR + 0x9200)
179  #define FIXED_PID_TBL_REG_ADDRESS_3         (HYDRA_TS_CTRL_BASE_ADDR + 0x9300)
180  
181  #define FIXED_PID_TBL_REG_ADDRESS_4         (HYDRA_TS_CTRL_BASE_ADDR + 0xB000)
182  #define FIXED_PID_TBL_REG_ADDRESS_5         (HYDRA_TS_CTRL_BASE_ADDR + 0xB100)
183  #define FIXED_PID_TBL_REG_ADDRESS_6         (HYDRA_TS_CTRL_BASE_ADDR + 0xB200)
184  #define FIXED_PID_TBL_REG_ADDRESS_7         (HYDRA_TS_CTRL_BASE_ADDR + 0xB300)
185  
186  #define REGULAR_PID_TBL_REG_ADDRESS_0       (HYDRA_TS_CTRL_BASE_ADDR + 0x8000)
187  #define REGULAR_PID_TBL_REG_ADDRESS_1       (HYDRA_TS_CTRL_BASE_ADDR + 0x8200)
188  #define REGULAR_PID_TBL_REG_ADDRESS_2       (HYDRA_TS_CTRL_BASE_ADDR + 0x8400)
189  #define REGULAR_PID_TBL_REG_ADDRESS_3       (HYDRA_TS_CTRL_BASE_ADDR + 0x8600)
190  
191  #define REGULAR_PID_TBL_REG_ADDRESS_4       (HYDRA_TS_CTRL_BASE_ADDR + 0xA000)
192  #define REGULAR_PID_TBL_REG_ADDRESS_5       (HYDRA_TS_CTRL_BASE_ADDR + 0xA200)
193  #define REGULAR_PID_TBL_REG_ADDRESS_6       (HYDRA_TS_CTRL_BASE_ADDR + 0xA400)
194  #define REGULAR_PID_TBL_REG_ADDRESS_7       (HYDRA_TS_CTRL_BASE_ADDR + 0xA600)
195  
196  /***************************************************************************/
197  
198  #define PAD_MUX_GPIO_00_SYNC_BASEADDR                          0x90000188
199  
200  
201  #define PAD_MUX_UART_RX_C_PINMUX_BASEADDR 0x9000001C
202  
203  #define   XPT_PACKET_GAP_MIN_BASEADDR                            0x90700044
204  #define   XPT_NCO_COUNT_BASEADDR                                 0x90700238
205  
206  #define   XPT_NCO_COUNT_BASEADDR1                                0x9070023C
207  
208  /* V2 DigRF status register */
209  
210  #define   XPT_PID_BASEADDR                                       0x90708000
211  
212  #define   XPT_PID_REMAP_BASEADDR                                 0x90708004
213  
214  #define   XPT_KNOWN_PID_BASEADDR                                 0x90709000
215  
216  #define   XPT_PID_BASEADDR1                                      0x9070A000
217  
218  #define   XPT_PID_REMAP_BASEADDR1                                0x9070A004
219  
220  #define   XPT_KNOWN_PID_BASEADDR1                                0x9070B000
221  
222  #define   XPT_BERT_LOCK_BASEADDR                                 0x907000B8
223  
224  #define   XPT_BERT_BASEADDR                                      0x907000BC
225  
226  #define   XPT_BERT_INVERT_BASEADDR                               0x907000C0
227  
228  #define   XPT_BERT_HEADER_BASEADDR                               0x907000C4
229  
230  #define   XPT_BERT_BASEADDR1                                     0x907000C8
231  
232  #define   XPT_BERT_BIT_COUNT0_BASEADDR                           0x907000CC
233  
234  #define   XPT_BERT_BIT_COUNT0_BASEADDR1                          0x907000D0
235  
236  #define   XPT_BERT_BIT_COUNT1_BASEADDR                           0x907000D4
237  
238  #define   XPT_BERT_BIT_COUNT1_BASEADDR1                          0x907000D8
239  
240  #define   XPT_BERT_BIT_COUNT2_BASEADDR                           0x907000DC
241  
242  #define   XPT_BERT_BIT_COUNT2_BASEADDR1                          0x907000E0
243  
244  #define   XPT_BERT_BIT_COUNT3_BASEADDR                           0x907000E4
245  
246  #define   XPT_BERT_BIT_COUNT3_BASEADDR1                          0x907000E8
247  
248  #define   XPT_BERT_BIT_COUNT4_BASEADDR                           0x907000EC
249  
250  #define   XPT_BERT_BIT_COUNT4_BASEADDR1                          0x907000F0
251  
252  #define   XPT_BERT_BIT_COUNT5_BASEADDR                           0x907000F4
253  
254  #define   XPT_BERT_BIT_COUNT5_BASEADDR1                          0x907000F8
255  
256  #define   XPT_BERT_BIT_COUNT6_BASEADDR                           0x907000FC
257  
258  #define   XPT_BERT_BIT_COUNT6_BASEADDR1                          0x90700100
259  
260  #define   XPT_BERT_BIT_COUNT7_BASEADDR                           0x90700104
261  
262  #define   XPT_BERT_BIT_COUNT7_BASEADDR1                          0x90700108
263  
264  #define   XPT_BERT_ERR_COUNT0_BASEADDR                           0x9070010C
265  
266  #define   XPT_BERT_ERR_COUNT0_BASEADDR1                          0x90700110
267  
268  #define   XPT_BERT_ERR_COUNT1_BASEADDR                           0x90700114
269  
270  #define   XPT_BERT_ERR_COUNT1_BASEADDR1                          0x90700118
271  
272  #define   XPT_BERT_ERR_COUNT2_BASEADDR                           0x9070011C
273  
274  #define   XPT_BERT_ERR_COUNT2_BASEADDR1                          0x90700120
275  
276  #define   XPT_BERT_ERR_COUNT3_BASEADDR                           0x90700124
277  
278  #define   XPT_BERT_ERR_COUNT3_BASEADDR1                          0x90700128
279  
280  #define   XPT_BERT_ERR_COUNT4_BASEADDR                           0x9070012C
281  
282  #define   XPT_BERT_ERR_COUNT4_BASEADDR1                          0x90700130
283  
284  #define   XPT_BERT_ERR_COUNT5_BASEADDR                           0x90700134
285  
286  #define   XPT_BERT_ERR_COUNT5_BASEADDR1                          0x90700138
287  
288  #define   XPT_BERT_ERR_COUNT6_BASEADDR                           0x9070013C
289  
290  #define   XPT_BERT_ERR_COUNT6_BASEADDR1                          0x90700140
291  
292  #define   XPT_BERT_ERR_COUNT7_BASEADDR                           0x90700144
293  
294  #define   XPT_BERT_ERR_COUNT7_BASEADDR1                          0x90700148
295  
296  #define   XPT_BERT_ERROR_BASEADDR                                0x9070014C
297  
298  #define   XPT_BERT_ANALYZER_BASEADDR                             0x90700150
299  
300  #define   XPT_BERT_ANALYZER_BASEADDR1                            0x90700154
301  
302  #define   XPT_BERT_ANALYZER_BASEADDR2                            0x90700158
303  
304  #define   XPT_BERT_ANALYZER_BASEADDR3                            0x9070015C
305  
306  #define   XPT_BERT_ANALYZER_BASEADDR4                            0x90700160
307  
308  #define   XPT_BERT_ANALYZER_BASEADDR5                            0x90700164
309  
310  #define   XPT_BERT_ANALYZER_BASEADDR6                            0x90700168
311  
312  #define   XPT_BERT_ANALYZER_BASEADDR7                            0x9070016C
313  
314  #define   XPT_BERT_ANALYZER_BASEADDR8                            0x90700170
315  
316  #define   XPT_BERT_ANALYZER_BASEADDR9                            0x90700174
317  
318  #define   XPT_DMD0_BASEADDR                                      0x9070024C
319  
320  /* V2 AGC Gain Freeze & step */
321  #define   DBG_ENABLE_DISABLE_AGC                                 (0x3FFFCF60) /* 1: DISABLE, 0:ENABLE */
322  #define   WB_DFE0_DFE_FB_RF1_BASEADDR                            0x903004A4
323  
324  #define   WB_DFE1_DFE_FB_RF1_BASEADDR                            0x904004A4
325  
326  #define   WB_DFE2_DFE_FB_RF1_BASEADDR                            0x905004A4
327  
328  #define   WB_DFE3_DFE_FB_RF1_BASEADDR                            0x906004A4
329  
330  #define   AFE_REG_D2A_TA_RFFE_LNA_BO_1P8_BASEADDR                0x90200104
331  
332  #define   AFE_REG_AFE_REG_SPARE_BASEADDR                         0x902000A0
333  
334  #define   AFE_REG_AFE_REG_SPARE_BASEADDR1                        0x902000B4
335  
336  #define   AFE_REG_AFE_REG_SPARE_BASEADDR2                        0x902000C4
337  
338  #define   AFE_REG_AFE_REG_SPARE_BASEADDR3                        0x902000D4
339  
340  #define   WB_DFE0_DFE_FB_AGC_BASEADDR                            0x90300498
341  
342  #define   WB_DFE1_DFE_FB_AGC_BASEADDR                            0x90400498
343  
344  #define   WB_DFE2_DFE_FB_AGC_BASEADDR                            0x90500498
345  
346  #define   WB_DFE3_DFE_FB_AGC_BASEADDR                            0x90600498
347  
348  #define   WDT_WD_INT_BASEADDR                                    0x8002000C
349  
350  #define   FSK_TX_FTM_BASEADDR                                    0x80090000
351  
352  #define   FSK_TX_FTM_TX_CNT_BASEADDR                             0x80090018
353  
354  #define   AFE_REG_D2A_FSK_BIAS_BASEADDR                          0x90200040
355  
356  #define   DMD_TEI_BASEADDR                                       0x3FFFEBE0
357  
358  #endif /* __MXL58X_REGISTERS_H__ */
359