aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_fw_regs_ar9.h
blob: dd010f54f9d76169a54d50498e008f7449f1b8d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/******************************************************************************
**
** FILE NAME    : ifxmips_atm_fw_regs_ar9.h
** PROJECT      : UEIP
** MODULES     	: ATM (ADSL)
**
** DATE         : 1 AUG 2005
** AUTHOR       : Xu Liang
** DESCRIPTION  : ATM Driver (Firmware Registers)
** COPYRIGHT    : 	Copyright (c) 2006
**			Infineon Technologies AG
**			Am Campeon 1-12, 85579 Neubiberg, Germany
**
**    This program is free software; you can redistribute it and/or modify
**    it under the terms of the GNU General Public License as published by
**    the Free Software Foundation; either version 2 of the License, or
**    (at your option) any later version.
**
** HISTORY
** $Date        $Author         $Comment
**  4 AUG 2005  Xu Liang        Initiate Version
** 23 OCT 2006  Xu Liang        Add GPL header.
**  9 JAN 2007  Xu Liang        First version got from Anand (IC designer)
*******************************************************************************/



#ifndef IFXMIPS_ATM_FW_REGS_AR9_H
#define IFXMIPS_ATM_FW_REGS_AR9_H



/*
 *  Host-PPE Communication Data Address Mapping
 */
#define FW_VER_ID                       ((volatile struct fw_ver_id *)      SB_BUFFER(0x2001))
#define CFG_WRX_HTUTS                   SB_BUFFER(0x2400)   /*  WAN RX HTU Table Size, must be configured before enable PPE firmware.   */
#define CFG_WRX_QNUM                    SB_BUFFER(0x2401)   /*  WAN RX Queue Number */
#define CFG_WRX_DCHNUM                  SB_BUFFER(0x2402)   /*  WAN RX DMA Channel Number, no more than 8, must be configured before enable PPE firmware.   */
#define CFG_WTX_DCHNUM                  SB_BUFFER(0x2403)   /*  WAN TX DMA Channel Number, no more than 16, must be configured before enable PPE firmware.  */
#define CFG_WRDES_DELAY                 SB_BUFFER(0x2404)   /*  WAN Descriptor Write Delay, must be configured before enable PPE firmware.  */
#define WRX_DMACH_ON                    SB_BUFFER(0x2405)   /*  WAN RX DMA Channel Enable, must be configured before enable PPE firmware.   */
#define WTX_DMACH_ON                    SB_BUFFER(0x2406)   /*  WAN TX DMA Channel Enable, must be configured before enable PPE firmware.   */
#define WRX_HUNT_BITTH                  SB_BUFFER(0x2407)   /*  WAN RX HUNT Threshold, must be between 2 to 8.  */
#define WRX_QUEUE_CONFIG(i)             ((struct wrx_queue_config*)         SB_BUFFER(0x2500 + (i) * 20))
#define WRX_QUEUE_CONTEXT(i)            ((struct wrx_queue_context*)        SB_BUFFER(0x2504 + (i) * 20))
#define WRX_DMA_CHANNEL_CONFIG(i)       ((struct wrx_dma_channel_config*)   SB_BUFFER(0x2640 + (i) * 7))
#define WRX_DESC_CONTEXT(i)             ((struct wrx_desc_context*)         SB_BUFFER(0x2643 + (i) * 7))
#define WTX_PORT_CONFIG(i)              ((struct wtx_port_config*)          SB_BUFFER(0x2440 + (i)))
#define WTX_QUEUE_CONFIG(i)             ((struct wtx_queue_config*)         SB_BUFFER(0x3800 + (i) * 27))
#define WTX_DMA_CHANNEL_CONFIG(i)       ((struct wtx_dma_channel_config*)   SB_BUFFER(0x3801 + (i) * 27))
#define WAN_MIB_TABLE                   ((struct wan_mib_table*)            SB_BUFFER(0x2410))
#define HTU_ENTRY(i)                    ((struct htu_entry*)                SB_BUFFER(0x2010 + (i)))
#define HTU_MASK(i)                     ((struct htu_mask*)                 SB_BUFFER(0x2030 + (i)))
#define HTU_RESULT(i)                   ((struct htu_result*)               SB_BUFFER(0x2050 + (i)))

#if defined(ENABLE_ATM_RETX) && ENABLE_ATM_RETX

  #define RETX_MODE_CFG                     ((volatile struct Retx_mode_cfg *)      SB_BUFFER(0x2408))
  #define RETX_TSYNC_CFG                    ((volatile struct Retx_Tsync_cfg *)     SB_BUFFER(0x2409))
  #define RETX_TD_CFG                       ((volatile struct Retx_Td_cfg *)        SB_BUFFER(0x240A))
  #define RETX_MIB_TIMER_CFG                ((volatile struct Retx_MIB_Timer_cfg *) SB_BUFFER(0x240B))
  #define RETX_PLAYOUT_BUFFER_BASE          SB_BUFFER(0x240D)
  #define RETX_SERVICE_HEADER_CFG           SB_BUFFER(0x240E)
  #define RETX_MASK_HEADER_CFG              SB_BUFFER(0x240F)

  #define RETX_ADSL_PPE_INTF                ((volatile struct Retx_adsl_ppe_intf *) PPE_REG_ADDR(0x0D78))
  #define BAD_REC_RETX_ADSL_PPE_INTF        ((volatile struct Retx_adsl_ppe_intf *) SB_BUFFER(0x23AC))
  #define FIRST_BAD_REC_RETX_ADSL_PPE_INTF  ((volatile struct Retx_adsl_ppe_intf *) SB_BUFFER(0x23AE))

  #define PB_BUFFER_USAGE                   SB_BUFFER(0x2100)
  #define DTU_STAT_INFO                     ((volatile struct DTU_stat_info *)      SB_BUFFER(0x2180))
  #define DTU_VLD_STAT                      SB_BUFFER(0x2380)


  //=====================================================================
  // retx firmware mib, for debug purpose
  //      address : 0x2388 - 0x238F
  //      size    : 8
  //=====================================================================
  #define URETX_RX_TOTAL_DTU                    SB_BUFFER(0x2388)
  #define URETX_RX_BAD_DTU                      SB_BUFFER(0x2389)
  #define URETX_RX_GOOD_DTU                     SB_BUFFER(0x238A)
  #define URETX_RX_CORRECTED_DTU                SB_BUFFER(0x238B)
  #define URETX_RX_OUTOFDATE_DTU                SB_BUFFER(0x238C)
  #define URETX_RX_DUPLICATE_DTU                SB_BUFFER(0x238D)
  #define URETX_RX_TIMEOUT_DTU                  SB_BUFFER(0x238E)

  #define URETX_ALPHA_SWITCH_TO_HUNT_TIMES      SB_BUFFER(0x238F)

  // cell counter for debug purpose
  #define WRX_BC0_CELL_NUM                      SB_BUFFER(0x23E0)
  #define WRX_BC0_DROP_CELL_NUM                 SB_BUFFER(0x23E1)
  #define WRX_BC0_NONRETX_CELL_NUM              SB_BUFFER(0x23E2)
  #define WRX_BC0_RETX_CELL_NUM                 SB_BUFFER(0x23E3)
  #define WRX_BC0_OUTOFDATE_CELL_NUM            SB_BUFFER(0x23E4)
  #define WRX_BC0_DIRECTUP_NUM                  SB_BUFFER(0x23E5)
  #define WRX_BC0_PBW_TOTAL_NUM                 SB_BUFFER(0x23E6)
  #define WRX_BC0_PBW_SUCC_NUM                  SB_BUFFER(0x23E7)
  #define WRX_BC0_PBW_FAIL_NUM                  SB_BUFFER(0x23E8)
  #define WRX_BC1_CELL_NUM                      SB_BUFFER(0x23E9)

  // debug info (interface)

  #define DBG_DTU_INTF_WRPTR                    SB_BUFFER(0x2390)
  #define DBG_INTF_FCW_DUP_CNT                  SB_BUFFER(0x2391)
  #define DBG_INTF_SID_CHANGE_IN_DTU_CNT        SB_BUFFER(0x2392)
  #define DBG_INTF_LCW_DUP_CNT                  SB_BUFFER(0x2393)

  #define DBG_RFBI_DONE_INT_CNT                 SB_BUFFER(0x2394)
  #define DBG_DREG_BEG_END                      SB_BUFFER(0x2395)
  #define DBG_RFBI_BC0_INVALID_CNT              SB_BUFFER(0x2396)
  #define DBG_RFBI_LAST_T                       SB_BUFFER(0x2397)

  #define DBG_RFBI_INTV0                        SB_BUFFER(0x23EE)
  #define DBG_RFBI_INTV1                        SB_BUFFER(0x23EF)

  #define DBG_INTF_INFO(i)                      ((volatile struct Retx_adsl_ppe_intf_rec *) SB_BUFFER(0x23F0 + i))

  // Internal status
  #define URetx_curr_time                       SB_BUFFER(0x2398)
  #define URetx_sec_counter                     SB_BUFFER(0x2399)
  #define RxCURR_EFB                            SB_BUFFER(0x239A)
  #define RxDTURetransmittedCNT                 SB_BUFFER(0x239B)

  //=====================================================================
  // standardized MIB counter
  //      address : 0x239C - 0x239F
  //      size    : 4
  //=====================================================================
  #define RxLastEFBCNT                          SB_BUFFER(0x239C)
  #define RxDTUCorrectedCNT                     SB_BUFFER(0x239D)
  #define RxDTUCorruptedCNT                     SB_BUFFER(0x239E)
  #define RxRetxDTUUncorrectedCNT               SB_BUFFER(0x239F)


  //=====================================================================
  // General URetx Context
  //      address : 0x23A0 - 0x23AF
  //      size    : 16
  //=====================================================================
  #define NEXT_DTU_SID_OUT                      SB_BUFFER(0x23A0)
  #define LAST_DTU_SID_IN                       SB_BUFFER(0x23A1)
  #define NEXT_CELL_SID_OUT                     SB_BUFFER(0x23A2)
  #define ISR_CELL_ID                           SB_BUFFER(0x23A3)
  #define PB_CELL_SEARCH_IDX                    SB_BUFFER(0x23A4)
  #define PB_READ_PEND_FLAG                     SB_BUFFER(0x23A5)
  #define RFBI_FIRST_CW                         SB_BUFFER(0x23A6)
  #define RFBI_BAD_CW                           SB_BUFFER(0x23A7)
  #define RFBI_INVALID_CW                       SB_BUFFER(0x23A8)
  #define RFBI_RETX_CW                          SB_BUFFER(0x23A9)
  #define RFBI_CHK_DTU_STATUS                   SB_BUFFER(0x23AA)

  //=====================================================================
  // per PVC counter for RX error_pdu and correct_pdu
  //      address : 0x23B0 - 0x23CF
  //      size    : 32
  //=====================================================================
  #define WRX_PER_PVC_CORRECT_PDU_BASE          SB_BUFFER(0x23B0)
  #define WRX_PER_PVC_ERROR_PDU_BASE            SB_BUFFER(0x23C0)

  #define __WRXCTXT_L2_RdPtr(i)                 SB_BUFFER(0x2422 + (i))
  #define __WRXCTXT_L2Pages(i)                  SB_BUFFER(0x2424 + (i))

  #define __WTXCTXT_TC_WRPTR(i)                 SB_BUFFER(0x2450 + (i))
  #define __WRXCTXT_PortState(i)                SB_BUFFER(0x242A + (i))

#endif



#endif  //  IFXMIPS_ATM_FW_REGS_AR9_H