OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ia64/] [sn/] [xtalk/] [xbow.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/* $Id: xbow.h,v 1.1.1.1 2004-04-15 02:58:10 phoenix Exp $
2
 *
3
 * This file is subject to the terms and conditions of the GNU General Public
4
 * License.  See the file "COPYING" in the main directory of this archive
5
 * for more details.
6
 *
7
 * Copyright (C) 1992-1997,2000-2003 Silicon Graphics, Inc. All Rights Reserved.
8
 */
9
#ifndef _ASM_SN_SN_XTALK_XBOW_H
10
#define _ASM_SN_SN_XTALK_XBOW_H
11
 
12
/*
13
 * xbow.h - header file for crossbow chip and xbow section of xbridge
14
 */
15
 
16
#include <linux/config.h>
17
#include <asm/sn/xtalk/xtalk.h>
18
#include <asm/sn/xtalk/xwidget.h>
19
#include <asm/sn/xtalk/xswitch.h>
20
#ifndef __ASSEMBLY__
21
#include <asm/sn/xtalk/xbow_info.h>
22
#endif
23
 
24
 
25
#define XBOW_DRV_PREFIX "xbow_"
26
 
27
/* The crossbow chip supports 8 8/16 bits I/O ports, numbered 0x8 through 0xf.
28
 * It also implements the widget 0 address space and register set.
29
 */
30
#define XBOW_PORT_0     0x0
31
#define XBOW_PORT_8     0x8
32
#define XBOW_PORT_9     0x9
33
#define XBOW_PORT_A     0xa
34
#define XBOW_PORT_B     0xb
35
#define XBOW_PORT_C     0xc
36
#define XBOW_PORT_D     0xd
37
#define XBOW_PORT_E     0xe
38
#define XBOW_PORT_F     0xf
39
 
40
#define MAX_XBOW_PORTS  8       /* number of ports on xbow chip */
41
#define BASE_XBOW_PORT  XBOW_PORT_8     /* Lowest external port */
42
#define MAX_PORT_NUM    0x10    /* maximum port number + 1 */
43
#define XBOW_WIDGET_ID  0        /* xbow is itself widget 0 */
44
 
45
#define XBOW_HUBLINK_LOW  0xa
46
#define XBOW_HUBLINK_HIGH 0xb
47
 
48
#define XBOW_PEER_LINK(link) (link == XBOW_HUBLINK_LOW) ? \
49
                                XBOW_HUBLINK_HIGH : XBOW_HUBLINK_LOW
50
 
51
 
52
#define XBOW_CREDIT     4
53
 
54
#define MAX_XBOW_NAME   16
55
 
56
#ifndef __ASSEMBLY__
57
typedef uint32_t      xbowreg_t;
58
 
59
#define XBOWCONST       (xbowreg_t)
60
 
61
/* Generic xbow register, given base and offset */
62
#define XBOW_REG_PTR(base, offset) ((volatile xbowreg_t*) \
63
        ((__psunsigned_t)(base) + (__psunsigned_t)(offset)))
64
 
65
/* Register set for each xbow link */
66
typedef volatile struct xb_linkregs_s {
67
#ifdef LITTLE_ENDIAN
68
/*
69
 * we access these through synergy unswizzled space, so the address
70
 * gets twiddled (i.e. references to 0x4 actually go to 0x0 and vv.)
71
 * That's why we put the register first and filler second.
72
 */
73
    xbowreg_t               link_ibf;
74
    xbowreg_t               filler0;    /* filler for proper alignment */
75
    xbowreg_t               link_control;
76
    xbowreg_t               filler1;
77
    xbowreg_t               link_status;
78
    xbowreg_t               filler2;
79
    xbowreg_t               link_arb_upper;
80
    xbowreg_t               filler3;
81
    xbowreg_t               link_arb_lower;
82
    xbowreg_t               filler4;
83
    xbowreg_t               link_status_clr;
84
    xbowreg_t               filler5;
85
    xbowreg_t               link_reset;
86
    xbowreg_t               filler6;
87
    xbowreg_t               link_aux_status;
88
    xbowreg_t               filler7;
89
#else
90
    xbowreg_t               filler0;    /* filler for proper alignment */
91
    xbowreg_t               link_ibf;
92
    xbowreg_t               filler1;
93
    xbowreg_t               link_control;
94
    xbowreg_t               filler2;
95
    xbowreg_t               link_status;
96
    xbowreg_t               filler3;
97
    xbowreg_t               link_arb_upper;
98
    xbowreg_t               filler4;
99
    xbowreg_t               link_arb_lower;
100
    xbowreg_t               filler5;
101
    xbowreg_t               link_status_clr;
102
    xbowreg_t               filler6;
103
    xbowreg_t               link_reset;
104
    xbowreg_t               filler7;
105
    xbowreg_t               link_aux_status;
106
#endif /* LITTLE_ENDIAN */
107
} xb_linkregs_t;
108
 
109
typedef volatile struct xbow_s {
110
    /* standard widget configuration                       0x000000-0x000057 */
111
    widget_cfg_t            xb_widget;  /* 0x000000 */
112
 
113
    /* helper fieldnames for accessing bridge widget */
114
 
115
#define xb_wid_id                       xb_widget.w_id
116
#define xb_wid_stat                     xb_widget.w_status
117
#define xb_wid_err_upper                xb_widget.w_err_upper_addr
118
#define xb_wid_err_lower                xb_widget.w_err_lower_addr
119
#define xb_wid_control                  xb_widget.w_control
120
#define xb_wid_req_timeout              xb_widget.w_req_timeout
121
#define xb_wid_int_upper                xb_widget.w_intdest_upper_addr
122
#define xb_wid_int_lower                xb_widget.w_intdest_lower_addr
123
#define xb_wid_err_cmdword              xb_widget.w_err_cmd_word
124
#define xb_wid_llp                      xb_widget.w_llp_cfg
125
#define xb_wid_stat_clr                 xb_widget.w_tflush
126
 
127
#ifdef LITTLE_ENDIAN
128
/*
129
 * we access these through synergy unswizzled space, so the address
130
 * gets twiddled (i.e. references to 0x4 actually go to 0x0 and vv.)
131
 * That's why we put the register first and filler second.
132
 */
133
    /* xbow-specific widget configuration                  0x000058-0x0000FF */
134
    xbowreg_t               xb_wid_arb_reload;  /* 0x00005C */
135
    xbowreg_t               _pad_000058;
136
    xbowreg_t               xb_perf_ctr_a;      /* 0x000064 */
137
    xbowreg_t               _pad_000060;
138
    xbowreg_t               xb_perf_ctr_b;      /* 0x00006c */
139
    xbowreg_t               _pad_000068;
140
    xbowreg_t               xb_nic;     /* 0x000074 */
141
    xbowreg_t               _pad_000070;
142
 
143
    /* Xbridge only */
144
    xbowreg_t               xb_w0_rst_fnc;      /* 0x00007C */
145
    xbowreg_t               _pad_000078;
146
    xbowreg_t               xb_l8_rst_fnc;      /* 0x000084 */
147
    xbowreg_t               _pad_000080;
148
    xbowreg_t               xb_l9_rst_fnc;      /* 0x00008c */
149
    xbowreg_t               _pad_000088;
150
    xbowreg_t               xb_la_rst_fnc;      /* 0x000094 */
151
    xbowreg_t               _pad_000090;
152
    xbowreg_t               xb_lb_rst_fnc;      /* 0x00009c */
153
    xbowreg_t               _pad_000098;
154
    xbowreg_t               xb_lc_rst_fnc;      /* 0x0000a4 */
155
    xbowreg_t               _pad_0000a0;
156
    xbowreg_t               xb_ld_rst_fnc;      /* 0x0000ac */
157
    xbowreg_t               _pad_0000a8;
158
    xbowreg_t               xb_le_rst_fnc;      /* 0x0000b4 */
159
    xbowreg_t               _pad_0000b0;
160
    xbowreg_t               xb_lf_rst_fnc;      /* 0x0000bc */
161
    xbowreg_t               _pad_0000b8;
162
    xbowreg_t               xb_lock;            /* 0x0000c4 */
163
    xbowreg_t               _pad_0000c0;
164
    xbowreg_t               xb_lock_clr;        /* 0x0000cc */
165
    xbowreg_t               _pad_0000c8;
166
    /* end of Xbridge only */
167
    xbowreg_t               _pad_0000d0[12];
168
#else
169
    /* xbow-specific widget configuration                  0x000058-0x0000FF */
170
    xbowreg_t               _pad_000058;
171
    xbowreg_t               xb_wid_arb_reload;  /* 0x00005C */
172
    xbowreg_t               _pad_000060;
173
    xbowreg_t               xb_perf_ctr_a;      /* 0x000064 */
174
    xbowreg_t               _pad_000068;
175
    xbowreg_t               xb_perf_ctr_b;      /* 0x00006c */
176
    xbowreg_t               _pad_000070;
177
    xbowreg_t               xb_nic;     /* 0x000074 */
178
 
179
    /* Xbridge only */
180
    xbowreg_t               _pad_000078;
181
    xbowreg_t               xb_w0_rst_fnc;      /* 0x00007C */
182
    xbowreg_t               _pad_000080;
183
    xbowreg_t               xb_l8_rst_fnc;      /* 0x000084 */
184
    xbowreg_t               _pad_000088;
185
    xbowreg_t               xb_l9_rst_fnc;      /* 0x00008c */
186
    xbowreg_t               _pad_000090;
187
    xbowreg_t               xb_la_rst_fnc;      /* 0x000094 */
188
    xbowreg_t               _pad_000098;
189
    xbowreg_t               xb_lb_rst_fnc;      /* 0x00009c */
190
    xbowreg_t               _pad_0000a0;
191
    xbowreg_t               xb_lc_rst_fnc;      /* 0x0000a4 */
192
    xbowreg_t               _pad_0000a8;
193
    xbowreg_t               xb_ld_rst_fnc;      /* 0x0000ac */
194
    xbowreg_t               _pad_0000b0;
195
    xbowreg_t               xb_le_rst_fnc;      /* 0x0000b4 */
196
    xbowreg_t               _pad_0000b8;
197
    xbowreg_t               xb_lf_rst_fnc;      /* 0x0000bc */
198
    xbowreg_t               _pad_0000c0;
199
    xbowreg_t               xb_lock;            /* 0x0000c4 */
200
    xbowreg_t               _pad_0000c8;
201
    xbowreg_t               xb_lock_clr;        /* 0x0000cc */
202
    /* end of Xbridge only */
203
    xbowreg_t               _pad_0000d0[12];
204
#endif /* LITTLE_ENDIAN */
205
 
206
    /* Link Specific Registers, port 8..15                 0x000100-0x000300 */
207
    xb_linkregs_t           xb_link_raw[MAX_XBOW_PORTS];
208
#define xb_link(p)      xb_link_raw[(p) & (MAX_XBOW_PORTS - 1)]
209
 
210
} xbow_t;
211
 
212
/* Configuration structure which describes each xbow link */
213
typedef struct xbow_cfg_s {
214
    int                     xb_port;    /* port number (0-15) */
215
    int                     xb_flags;   /* port software flags */
216
    short                   xb_shift;   /* shift for arb reg (mask is 0xff) */
217
    short                   xb_ul;      /* upper or lower arb reg */
218
    int                     xb_pad;     /* use this later (pad to ptr align) */
219
    xb_linkregs_t          *xb_linkregs;        /* pointer to link registers */
220
    widget_cfg_t           *xb_widget;  /* pointer to widget registers */
221
    char                    xb_name[MAX_XBOW_NAME];     /* port name */
222
    xbowreg_t               xb_sh_arb_upper;    /* shadow upper arb register */
223
    xbowreg_t               xb_sh_arb_lower;    /* shadow lower arb register */
224
} xbow_cfg_t;
225
 
226
#define XB_FLAGS_EXISTS         0x1     /* device exists */
227
#define XB_FLAGS_MASTER         0x2
228
#define XB_FLAGS_SLAVE          0x0
229
#define XB_FLAGS_GBR            0x4
230
#define XB_FLAGS_16BIT          0x8
231
#define XB_FLAGS_8BIT           0x0
232
 
233
/* get xbow config information for port p */
234
#define XB_CONFIG(p)    xbow_cfg[xb_ports[p]]
235
 
236
/* is widget port number valid?  (based on version 7.0 of xbow spec) */
237
#define XBOW_WIDGET_IS_VALID(wid) ((wid) >= XBOW_PORT_8 && (wid) <= XBOW_PORT_F)
238
 
239
/* whether to use upper or lower arbitration register, given source widget id */
240
#define XBOW_ARB_IS_UPPER(wid)  ((wid) >= XBOW_PORT_8 && (wid) <= XBOW_PORT_B)
241
#define XBOW_ARB_IS_LOWER(wid)  ((wid) >= XBOW_PORT_C && (wid) <= XBOW_PORT_F)
242
 
243
/* offset of arbitration register, given source widget id */
244
#define XBOW_ARB_OFF(wid)       (XBOW_ARB_IS_UPPER(wid) ? 0x1c : 0x24)
245
 
246
#endif                          /* __ASSEMBLY__ */
247
 
248
#define XBOW_WID_ID             WIDGET_ID
249
#define XBOW_WID_STAT           WIDGET_STATUS
250
#define XBOW_WID_ERR_UPPER      WIDGET_ERR_UPPER_ADDR
251
#define XBOW_WID_ERR_LOWER      WIDGET_ERR_LOWER_ADDR
252
#define XBOW_WID_CONTROL        WIDGET_CONTROL
253
#define XBOW_WID_REQ_TO         WIDGET_REQ_TIMEOUT
254
#define XBOW_WID_INT_UPPER      WIDGET_INTDEST_UPPER_ADDR
255
#define XBOW_WID_INT_LOWER      WIDGET_INTDEST_LOWER_ADDR
256
#define XBOW_WID_ERR_CMDWORD    WIDGET_ERR_CMD_WORD
257
#define XBOW_WID_LLP            WIDGET_LLP_CFG
258
#define XBOW_WID_STAT_CLR       WIDGET_TFLUSH
259
#define XBOW_WID_ARB_RELOAD     0x5c
260
#define XBOW_WID_PERF_CTR_A     0x64
261
#define XBOW_WID_PERF_CTR_B     0x6c
262
#define XBOW_WID_NIC            0x74
263
 
264
/* Xbridge only */
265
#define XBOW_W0_RST_FNC         0x00007C
266
#define XBOW_L8_RST_FNC         0x000084
267
#define XBOW_L9_RST_FNC         0x00008c
268
#define XBOW_LA_RST_FNC         0x000094
269
#define XBOW_LB_RST_FNC         0x00009c
270
#define XBOW_LC_RST_FNC         0x0000a4
271
#define XBOW_LD_RST_FNC         0x0000ac
272
#define XBOW_LE_RST_FNC         0x0000b4
273
#define XBOW_LF_RST_FNC         0x0000bc
274
#define XBOW_RESET_FENCE(x) ((x) > 7 && (x) < 16) ? \
275
                                (XBOW_W0_RST_FNC + ((x) - 7) * 8) : \
276
                                ((x) == 0) ? XBOW_W0_RST_FNC : 0
277
#define XBOW_LOCK               0x0000c4
278
#define XBOW_LOCK_CLR           0x0000cc
279
/* End of Xbridge only */
280
 
281
/* used only in ide, but defined here within the reserved portion */
282
/*              of the widget0 address space (before 0xf4) */
283
#define XBOW_WID_UNDEF          0xe4
284
 
285
/* pointer to link arbitration register, given xbow base, dst and src widget id */
286
#define XBOW_PRIO_ARBREG_PTR(base, dst_wid, src_wid) \
287
        XBOW_REG_PTR(XBOW_PRIO_LINKREGS_PTR(base, dst_wid), XBOW_ARB_OFF(src_wid))
288
 
289
/* pointer to link registers base, given xbow base and destination widget id */
290
#define XBOW_PRIO_LINKREGS_PTR(base, dst_wid) (xb_linkregs_t*) \
291
        XBOW_REG_PTR(base, XB_LINK_REG_BASE(dst_wid))
292
 
293
/* xbow link register set base, legal value for x is 0x8..0xf */
294
#define XB_LINK_BASE            0x100
295
#define XB_LINK_OFFSET          0x40
296
#define XB_LINK_REG_BASE(x)     (XB_LINK_BASE + ((x) & (MAX_XBOW_PORTS - 1)) * XB_LINK_OFFSET)
297
 
298
#define XB_LINK_IBUF_FLUSH(x)   (XB_LINK_REG_BASE(x) + 0x4)
299
#define XB_LINK_CTRL(x)         (XB_LINK_REG_BASE(x) + 0xc)
300
#define XB_LINK_STATUS(x)       (XB_LINK_REG_BASE(x) + 0x14)
301
#define XB_LINK_ARB_UPPER(x)    (XB_LINK_REG_BASE(x) + 0x1c)
302
#define XB_LINK_ARB_LOWER(x)    (XB_LINK_REG_BASE(x) + 0x24)
303
#define XB_LINK_STATUS_CLR(x)   (XB_LINK_REG_BASE(x) + 0x2c)
304
#define XB_LINK_RESET(x)        (XB_LINK_REG_BASE(x) + 0x34)
305
#define XB_LINK_AUX_STATUS(x)   (XB_LINK_REG_BASE(x) + 0x3c)
306
 
307
/* link_control(x) */
308
#define XB_CTRL_LINKALIVE_IE            0x80000000      /* link comes alive */
309
     /* reserved:                       0x40000000 */
310
#define XB_CTRL_PERF_CTR_MODE_MSK       0x30000000      /* perf counter mode */
311
#define XB_CTRL_IBUF_LEVEL_MSK          0x0e000000      /* input packet buffer level */
312
#define XB_CTRL_8BIT_MODE               0x01000000      /* force link into 8 bit mode */
313
#define XB_CTRL_BAD_LLP_PKT             0x00800000      /* force bad LLP packet */
314
#define XB_CTRL_WIDGET_CR_MSK           0x007c0000      /* LLP widget credit mask */
315
#define XB_CTRL_WIDGET_CR_SHFT  18                      /* LLP widget credit shift */
316
#define XB_CTRL_ILLEGAL_DST_IE          0x00020000      /* illegal destination */
317
#define XB_CTRL_OALLOC_IBUF_IE          0x00010000      /* overallocated input buffer */
318
     /* reserved:                       0x0000fe00 */
319
#define XB_CTRL_BNDWDTH_ALLOC_IE        0x00000100      /* bandwidth alloc */
320
#define XB_CTRL_RCV_CNT_OFLOW_IE        0x00000080      /* rcv retry overflow */
321
#define XB_CTRL_XMT_CNT_OFLOW_IE        0x00000040      /* xmt retry overflow */
322
#define XB_CTRL_XMT_MAX_RTRY_IE         0x00000020      /* max transmit retry */
323
#define XB_CTRL_RCV_IE                  0x00000010      /* receive */
324
#define XB_CTRL_XMT_RTRY_IE             0x00000008      /* transmit retry */
325
     /* reserved:                       0x00000004 */
326
#define XB_CTRL_MAXREQ_TOUT_IE          0x00000002      /* maximum request timeout */
327
#define XB_CTRL_SRC_TOUT_IE             0x00000001      /* source timeout */
328
 
329
/* link_status(x) */
330
#define XB_STAT_LINKALIVE               XB_CTRL_LINKALIVE_IE
331
     /* reserved:                       0x7ff80000 */
332
#define XB_STAT_MULTI_ERR               0x00040000      /* multi error */
333
#define XB_STAT_ILLEGAL_DST_ERR         XB_CTRL_ILLEGAL_DST_IE
334
#define XB_STAT_OALLOC_IBUF_ERR         XB_CTRL_OALLOC_IBUF_IE
335
#define XB_STAT_BNDWDTH_ALLOC_ID_MSK    0x0000ff00      /* port bitmask */
336
#define XB_STAT_RCV_CNT_OFLOW_ERR       XB_CTRL_RCV_CNT_OFLOW_IE
337
#define XB_STAT_XMT_CNT_OFLOW_ERR       XB_CTRL_XMT_CNT_OFLOW_IE
338
#define XB_STAT_XMT_MAX_RTRY_ERR        XB_CTRL_XMT_MAX_RTRY_IE
339
#define XB_STAT_RCV_ERR                 XB_CTRL_RCV_IE
340
#define XB_STAT_XMT_RTRY_ERR            XB_CTRL_XMT_RTRY_IE
341
     /* reserved:                       0x00000004 */
342
#define XB_STAT_MAXREQ_TOUT_ERR         XB_CTRL_MAXREQ_TOUT_IE
343
#define XB_STAT_SRC_TOUT_ERR            XB_CTRL_SRC_TOUT_IE
344
 
345
/* link_aux_status(x) */
346
#define XB_AUX_STAT_RCV_CNT     0xff000000
347
#define XB_AUX_STAT_XMT_CNT     0x00ff0000
348
#define XB_AUX_STAT_TOUT_DST    0x0000ff00
349
#define XB_AUX_LINKFAIL_RST_BAD 0x00000040
350
#define XB_AUX_STAT_PRESENT     0x00000020
351
#define XB_AUX_STAT_PORT_WIDTH  0x00000010
352
     /* reserved:               0x0000000f */
353
 
354
/*
355
 * link_arb_upper/link_arb_lower(x), (reg) should be the link_arb_upper
356
 * register if (x) is 0x8..0xb, link_arb_lower if (x) is 0xc..0xf
357
 */
358
#define XB_ARB_GBR_MSK          0x1f
359
#define XB_ARB_RR_MSK           0x7
360
#define XB_ARB_GBR_SHFT(x)      (((x) & 0x3) * 8)
361
#define XB_ARB_RR_SHFT(x)       (((x) & 0x3) * 8 + 5)
362
#define XB_ARB_GBR_CNT(reg,x)   ((reg) >> XB_ARB_GBR_SHFT(x) & XB_ARB_GBR_MSK)
363
#define XB_ARB_RR_CNT(reg,x)    ((reg) >> XB_ARB_RR_SHFT(x) & XB_ARB_RR_MSK)
364
 
365
/* XBOW_WID_STAT */
366
#define XB_WID_STAT_LINK_INTR_SHFT      (24)
367
#define XB_WID_STAT_LINK_INTR_MASK      (0xFF << XB_WID_STAT_LINK_INTR_SHFT)
368
#define XB_WID_STAT_LINK_INTR(x)        (0x1 << (((x)&7) + XB_WID_STAT_LINK_INTR_SHFT))
369
#define XB_WID_STAT_WIDGET0_INTR        0x00800000
370
#define XB_WID_STAT_SRCID_MASK          0x000003c0      /* Xbridge only */
371
#define XB_WID_STAT_REG_ACC_ERR         0x00000020
372
#define XB_WID_STAT_RECV_TOUT           0x00000010      /* Xbridge only */
373
#define XB_WID_STAT_ARB_TOUT            0x00000008      /* Xbridge only */
374
#define XB_WID_STAT_XTALK_ERR           0x00000004
375
#define XB_WID_STAT_DST_TOUT            0x00000002      /* Xbridge only */
376
#define XB_WID_STAT_MULTI_ERR           0x00000001
377
 
378
#define XB_WID_STAT_SRCID_SHFT          6
379
 
380
/* XBOW_WID_CONTROL */
381
#define XB_WID_CTRL_REG_ACC_IE          XB_WID_STAT_REG_ACC_ERR
382
#define XB_WID_CTRL_RECV_TOUT           XB_WID_STAT_RECV_TOUT
383
#define XB_WID_CTRL_ARB_TOUT            XB_WID_STAT_ARB_TOUT
384
#define XB_WID_CTRL_XTALK_IE            XB_WID_STAT_XTALK_ERR
385
 
386
/* XBOW_WID_INT_UPPER */
387
/* defined in xwidget.h for WIDGET_INTDEST_UPPER_ADDR */
388
 
389
/* XBOW WIDGET part number, in the ID register */
390
#define XBOW_WIDGET_PART_NUM    0x0             /* crossbow */
391
#define XXBOW_WIDGET_PART_NUM   0xd000          /* Xbridge */
392
#define XBOW_WIDGET_MFGR_NUM    0x0
393
#define XXBOW_WIDGET_MFGR_NUM   0x0
394
#define PXBOW_WIDGET_PART_NUM   0xd100          /* PIC */
395
 
396
#define XBOW_REV_1_0            0x1     /* xbow rev 1.0 is "1" */
397
#define XBOW_REV_1_1            0x2     /* xbow rev 1.1 is "2" */
398
#define XBOW_REV_1_2            0x3     /* xbow rev 1.2 is "3" */
399
#define XBOW_REV_1_3            0x4     /* xbow rev 1.3 is "4" */
400
#define XBOW_REV_2_0            0x5     /* xbow rev 2.0 is "5" */
401
 
402
#define XXBOW_PART_REV_1_0              (XXBOW_WIDGET_PART_NUM << 4 | 0x1 )
403
#define XXBOW_PART_REV_2_0              (XXBOW_WIDGET_PART_NUM << 4 | 0x2 )
404
 
405
/* XBOW_WID_ARB_RELOAD */
406
#define XBOW_WID_ARB_RELOAD_INT 0x3f    /* GBR reload interval */
407
 
408
#define IS_XBRIDGE_XBOW(wid) \
409
        (XWIDGET_PART_NUM(wid) == XXBOW_WIDGET_PART_NUM && \
410
                        XWIDGET_MFG_NUM(wid) == XXBOW_WIDGET_MFGR_NUM)
411
 
412
#define IS_PIC_XBOW(wid) \
413
        (XWIDGET_PART_NUM(wid) == PXBOW_WIDGET_PART_NUM && \
414
                        XWIDGET_MFG_NUM(wid) == XXBOW_WIDGET_MFGR_NUM)
415
 
416
#define XBOW_WAR_ENABLED(pv, widid) ((1 << XWIDGET_REV_NUM(widid)) & pv)
417
#define PV854827 (~0)     /* PIC: fake widget 0xf presence bit. permanent */
418
#define PV863579 (1 << 1) /* PIC: PIO to PIC register */
419
 
420
 
421
#ifndef __ASSEMBLY__
422
/*
423
 * XBOW Widget 0 Register formats.
424
 * Format for many of these registers are similar to the standard
425
 * widget register format described as part of xtalk specification
426
 * Standard widget register field format description is available in
427
 * xwidget.h
428
 * Following structures define the format for xbow widget 0 registers
429
 */
430
/*
431
 * Xbow Widget 0 Command error word
432
 */
433
#ifdef LITTLE_ENDIAN
434
 
435
typedef union xbw0_cmdword_u {
436
    xbowreg_t               cmdword;
437
    struct {
438
        uint32_t              rsvd:8,           /* Reserved */
439
                                barr:1,         /* Barrier operation */
440
                                error:1,        /* Error Occured */
441
                                vbpm:1,         /* Virtual Backplane message */
442
                                gbr:1,  /* GBR enable ?                 */
443
                                ds:2,   /* Data size                    */
444
                                ct:1,   /* Is it a coherent transaction */
445
                                tnum:5,         /* Transaction Number */
446
                                pactyp:4,       /* Packet type: */
447
                                srcid:4,        /* Source ID number */
448
                                destid:4;       /* Desination ID number */
449
 
450
    } xbw0_cmdfield;
451
} xbw0_cmdword_t;
452
 
453
#else
454
 
455
typedef union xbw0_cmdword_u {
456
    xbowreg_t               cmdword;
457
    struct {
458
        uint32_t                destid:4,       /* Desination ID number */
459
                                srcid:4,        /* Source ID number */
460
                                pactyp:4,       /* Packet type: */
461
                                tnum:5,         /* Transaction Number */
462
                                ct:1,   /* Is it a coherent transaction */
463
                                ds:2,   /* Data size                    */
464
                                gbr:1,  /* GBR enable ?                 */
465
                                vbpm:1,         /* Virtual Backplane message */
466
                                error:1,        /* Error Occured */
467
                                barr:1,         /* Barrier operation */
468
                                rsvd:8;         /* Reserved */
469
    } xbw0_cmdfield;
470
} xbw0_cmdword_t;
471
 
472
#endif
473
 
474
#define xbcmd_destid    xbw0_cmdfield.destid
475
#define xbcmd_srcid     xbw0_cmdfield.srcid
476
#define xbcmd_pactyp    xbw0_cmdfield.pactyp
477
#define xbcmd_tnum      xbw0_cmdfield.tnum
478
#define xbcmd_ct        xbw0_cmdfield.ct
479
#define xbcmd_ds        xbw0_cmdfield.ds
480
#define xbcmd_gbr       xbw0_cmdfield.gbr
481
#define xbcmd_vbpm      xbw0_cmdfield.vbpm
482
#define xbcmd_error     xbw0_cmdfield.error
483
#define xbcmd_barr      xbw0_cmdfield.barr
484
 
485
/*
486
 * Values for field PACTYP in xbow error command word
487
 */
488
#define XBCMDTYP_READREQ        0        /* Read Request   packet  */
489
#define XBCMDTYP_READRESP       1       /* Read Response packet   */
490
#define XBCMDTYP_WRREQ_RESP     2       /* Write Request with response    */
491
#define XBCMDTYP_WRRESP         3       /* Write Response */
492
#define XBCMDTYP_WRREQ_NORESP   4       /* Write request with  No Response */
493
#define XBCMDTYP_FETCHOP        6       /* Fetch & Op packet      */
494
#define XBCMDTYP_STOREOP        8       /* Store & Op packet      */
495
#define XBCMDTYP_SPLPKT_REQ     0xE     /* Special packet request */
496
#define XBCMDTYP_SPLPKT_RESP    0xF     /* Special packet response        */
497
 
498
/*
499
 * Values for field ds (datasize) in xbow error command word
500
 */
501
#define XBCMDSZ_DOUBLEWORD      0
502
#define XBCMDSZ_QUARTRCACHE     1
503
#define XBCMDSZ_FULLCACHE       2
504
 
505
/*
506
 * Xbow widget 0 Status register format.
507
 */
508
#ifdef LITTLE_ENDIAN
509
 
510
typedef union xbw0_status_u {
511
    xbowreg_t               statusword;
512
    struct {
513
       uint32_t         mult_err:1,     /* Multiple error occurred */
514
                                connect_tout:1, /* Connection timeout   */
515
                                xtalk_err:1,    /* Xtalk pkt with error bit */
516
                                /* End of Xbridge only */
517
                                w0_arb_tout,    /* arbiter timeout err */
518
                                w0_recv_tout,   /* receive timeout err */
519
                                /* Xbridge only */
520
                                regacc_err:1,   /* Reg Access error     */
521
                                src_id:4,       /* source id. Xbridge only */
522
                                resvd1:13,
523
                                wid0intr:1;     /* Widget 0 err intr */
524
    } xbw0_stfield;
525
} xbw0_status_t;
526
 
527
#else
528
 
529
typedef union xbw0_status_u {
530
    xbowreg_t               statusword;
531
    struct {
532
        uint32_t                linkXintr:8,    /* link(x) error intr */
533
                                wid0intr:1,     /* Widget 0 err intr */
534
                                resvd1:13,
535
                                src_id:4,       /* source id. Xbridge only */
536
                                regacc_err:1,   /* Reg Access error     */
537
                                /* Xbridge only */
538
                                w0_recv_tout,   /* receive timeout err */
539
                                w0_arb_tout,    /* arbiter timeout err */
540
                                /* End of Xbridge only */
541
                                xtalk_err:1,    /* Xtalk pkt with error bit */
542
                                connect_tout:1, /* Connection timeout   */
543
                                mult_err:1;     /* Multiple error occurred */
544
    } xbw0_stfield;
545
} xbw0_status_t;
546
 
547
#endif
548
 
549
#define xbst_linkXintr          xbw0_stfield.linkXintr
550
#define xbst_w0intr             xbw0_stfield.wid0intr
551
#define xbst_regacc_err         xbw0_stfield.regacc_err
552
#define xbst_xtalk_err          xbw0_stfield.xtalk_err
553
#define xbst_connect_tout       xbw0_stfield.connect_tout
554
#define xbst_mult_err           xbw0_stfield.mult_err
555
#define xbst_src_id             xbw0_stfield.src_id         /* Xbridge only */
556
#define xbst_w0_recv_tout       xbw0_stfield.w0_recv_tout   /* Xbridge only */
557
#define xbst_w0_arb_tout        xbw0_stfield.w0_arb_tout    /* Xbridge only */
558
 
559
/*
560
 * Xbow widget 0 Control register format
561
 */
562
#ifdef LITTLE_ENDIAN
563
 
564
typedef union xbw0_ctrl_u {
565
    xbowreg_t               ctrlword;
566
    struct {
567
        uint32_t
568
                                resvd3:1,
569
                                conntout_intr:1,
570
                                xtalkerr_intr:1,
571
                                w0_arg_tout_intr:1,     /* Xbridge only */
572
                                w0_recv_tout_intr:1,    /* Xbridge only */
573
                                accerr_intr:1,
574
                                enable_w0_tout_cntr:1,  /* Xbridge only */
575
                                enable_watchdog:1,      /* Xbridge only */
576
                                resvd1:24;
577
    } xbw0_ctrlfield;
578
} xbw0_ctrl_t;
579
 
580
#else
581
 
582
typedef union xbw0_ctrl_u {
583
    xbowreg_t               ctrlword;
584
    struct {
585
        uint32_t
586
                                resvd1:24,
587
                                enable_watchdog:1,      /* Xbridge only */
588
                                enable_w0_tout_cntr:1,  /* Xbridge only */
589
                                accerr_intr:1,
590
                                w0_recv_tout_intr:1,    /* Xbridge only */
591
                                w0_arg_tout_intr:1,     /* Xbridge only */
592
                                xtalkerr_intr:1,
593
                                conntout_intr:1,
594
                                resvd3:1;
595
    } xbw0_ctrlfield;
596
} xbw0_ctrl_t;
597
 
598
#endif
599
 
600
#ifdef LITTLE_ENDIAN
601
 
602
typedef union xbow_linkctrl_u {
603
    xbowreg_t               xbl_ctrlword;
604
    struct {
605
        uint32_t                srcto_intr:1,
606
                                maxto_intr:1,
607
                                rsvd3:1,
608
                                trx_retry_intr:1,
609
                                rcv_err_intr:1,
610
                                trx_max_retry_intr:1,
611
                                trxov_intr:1,
612
                                rcvov_intr:1,
613
                                bwalloc_intr:1,
614
                                rsvd2:7,
615
                                obuf_intr:1,
616
                                idest_intr:1,
617
                                llp_credit:5,
618
                                force_badllp:1,
619
                                send_bm8:1,
620
                                inbuf_level:3,
621
                                perf_mode:2,
622
                                rsvd1:1,
623
                                alive_intr:1;
624
 
625
    } xb_linkcontrol;
626
} xbow_linkctrl_t;
627
 
628
#else
629
 
630
typedef union xbow_linkctrl_u {
631
    xbowreg_t               xbl_ctrlword;
632
    struct {
633
        uint32_t                alive_intr:1,
634
                                rsvd1:1,
635
                                perf_mode:2,
636
                                inbuf_level:3,
637
                                send_bm8:1,
638
                                force_badllp:1,
639
                                llp_credit:5,
640
                                idest_intr:1,
641
                                obuf_intr:1,
642
                                rsvd2:7,
643
                                bwalloc_intr:1,
644
                                rcvov_intr:1,
645
                                trxov_intr:1,
646
                                trx_max_retry_intr:1,
647
                                rcv_err_intr:1,
648
                                trx_retry_intr:1,
649
                                rsvd3:1,
650
                                maxto_intr:1,
651
                                srcto_intr:1;
652
    } xb_linkcontrol;
653
} xbow_linkctrl_t;
654
 
655
#endif
656
 
657
 
658
#define xbctl_accerr_intr       (xbw0_ctrlfield.accerr_intr)
659
#define xbctl_xtalkerr_intr     (xbw0_ctrlfield.xtalkerr_intr)
660
#define xbctl_cnntout_intr      (xbw0_ctrlfield.conntout_intr)
661
 
662
#define XBW0_CTRL_ACCERR_INTR   (1 << 5)
663
#define XBW0_CTRL_XTERR_INTR    (1 << 2)
664
#define XBW0_CTRL_CONNTOUT_INTR (1 << 1)
665
 
666
/*
667
 * Xbow Link specific Registers structure definitions.
668
 */
669
 
670
#ifdef LITTLE_ENDIAN
671
 
672
typedef union xbow_linkX_status_u {
673
    xbowreg_t               linkstatus;
674
    struct {
675
        uint32_t               pkt_toutsrc:1,
676
                                pkt_toutconn:1, /* max_req_tout in Xbridge */
677
                                pkt_toutdest:1, /* reserved in Xbridge */
678
                                llp_xmitretry:1,
679
                                llp_rcverror:1,
680
                                llp_maxtxretry:1,
681
                                llp_txovflow:1,
682
                                llp_rxovflow:1,
683
                                bw_errport:8,   /* BW allocation error port   */
684
                                ioe:1,          /* Input overallocation error */
685
                                illdest:1,
686
                                merror:1,
687
                                resvd1:12,
688
                                alive:1;
689
    } xb_linkstatus;
690
} xbwX_stat_t;
691
 
692
#else
693
 
694
typedef union xbow_linkX_status_u {
695
    xbowreg_t               linkstatus;
696
    struct {
697
        uint32_t                alive:1,
698
                                resvd1:12,
699
                                merror:1,
700
                                illdest:1,
701
                                ioe:1,          /* Input overallocation error */
702
                                bw_errport:8,   /* BW allocation error port   */
703
                                llp_rxovflow:1,
704
                                llp_txovflow:1,
705
                                llp_maxtxretry:1,
706
                                llp_rcverror:1,
707
                                llp_xmitretry:1,
708
                                pkt_toutdest:1, /* reserved in Xbridge */
709
                                pkt_toutconn:1, /* max_req_tout in Xbridge */
710
                                pkt_toutsrc:1;
711
    } xb_linkstatus;
712
} xbwX_stat_t;
713
 
714
#endif
715
 
716
#define link_alive              xb_linkstatus.alive
717
#define link_multierror         xb_linkstatus.merror
718
#define link_illegal_dest       xb_linkstatus.illdest
719
#define link_ioe                xb_linkstatus.ioe
720
#define link_max_req_tout       xb_linkstatus.pkt_toutconn  /* Xbridge */
721
#define link_pkt_toutconn       xb_linkstatus.pkt_toutconn  /* Xbow */
722
#define link_pkt_toutdest       xb_linkstatus.pkt_toutdest
723
#define link_pkt_toutsrc        xb_linkstatus.pkt_toutsrc
724
 
725
#ifdef LITTLE_ENDIAN
726
 
727
typedef union xbow_aux_linkX_status_u {
728
    xbowreg_t               aux_linkstatus;
729
    struct {
730
        uint32_t                rsvd2:4,
731
                                bit_mode_8:1,
732
                                wid_present:1,
733
                                fail_mode:1,
734
                                rsvd1:1,
735
                                to_src_loc:8,
736
                                tx_retry_cnt:8,
737
                                rx_err_cnt:8;
738
    } xb_aux_linkstatus;
739
} xbow_aux_link_status_t;
740
 
741
#else
742
 
743
typedef union xbow_aux_linkX_status_u {
744
    xbowreg_t               aux_linkstatus;
745
    struct {
746
        uint32_t                rx_err_cnt:8,
747
                                tx_retry_cnt:8,
748
                                to_src_loc:8,
749
                                rsvd1:1,
750
                                fail_mode:1,
751
                                wid_present:1,
752
                                bit_mode_8:1,
753
                                rsvd2:4;
754
    } xb_aux_linkstatus;
755
} xbow_aux_link_status_t;
756
 
757
#endif
758
 
759
 
760
#ifdef LITTLE_ENDIAN
761
 
762
typedef union xbow_perf_count_u {
763
    xbowreg_t               xb_counter_val;
764
    struct {
765
        uint32_t                count:20,
766
                                link_select:3,
767
                                rsvd:9;
768
    } xb_perf;
769
} xbow_perfcount_t;
770
 
771
#else
772
 
773
typedef union xbow_perf_count_u {
774
    xbowreg_t               xb_counter_val;
775
    struct {
776
        uint32_t              rsvd:9,
777
                                link_select:3,
778
                                count:20;
779
    } xb_perf;
780
} xbow_perfcount_t;
781
 
782
#endif
783
 
784
#define XBOW_COUNTER_MASK       0xFFFFF
785
 
786
extern int              xbow_widget_present(xbow_t * xbow, int port);
787
 
788
extern xwidget_intr_preset_f xbow_intr_preset;
789
extern xswitch_reset_link_f xbow_reset_link;
790
void                    xbow_mlreset(xbow_t *);
791
 
792
/* ========================================================================
793
 */
794
 
795
#ifdef  MACROFIELD_LINE
796
/*
797
 * This table forms a relation between the byte offset macros normally
798
 * used for ASM coding and the calculated byte offsets of the fields
799
 * in the C structure.
800
 *
801
 * See xbow_check.c xbow_html.c for further details.
802
 */
803
#ifndef MACROFIELD_LINE_BITFIELD
804
#define MACROFIELD_LINE_BITFIELD(m)     /* ignored */
805
#endif
806
 
807
struct macrofield_s     xbow_macrofield[] =
808
{
809
 
810
    MACROFIELD_LINE(XBOW_WID_ID, xb_wid_id)
811
    MACROFIELD_LINE(XBOW_WID_STAT, xb_wid_stat)
812
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xF))
813
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xE))
814
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xD))
815
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xC))
816
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xB))
817
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xA))
818
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0x9))
819
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0x8))
820
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_WIDGET0_INTR)
821
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_REG_ACC_ERR)
822
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_XTALK_ERR)
823
    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_MULTI_ERR)
824
    MACROFIELD_LINE(XBOW_WID_ERR_UPPER, xb_wid_err_upper)
825
    MACROFIELD_LINE(XBOW_WID_ERR_LOWER, xb_wid_err_lower)
826
    MACROFIELD_LINE(XBOW_WID_CONTROL, xb_wid_control)
827
    MACROFIELD_LINE_BITFIELD(XB_WID_CTRL_REG_ACC_IE)
828
    MACROFIELD_LINE_BITFIELD(XB_WID_CTRL_XTALK_IE)
829
    MACROFIELD_LINE(XBOW_WID_REQ_TO, xb_wid_req_timeout)
830
    MACROFIELD_LINE(XBOW_WID_INT_UPPER, xb_wid_int_upper)
831
    MACROFIELD_LINE(XBOW_WID_INT_LOWER, xb_wid_int_lower)
832
    MACROFIELD_LINE(XBOW_WID_ERR_CMDWORD, xb_wid_err_cmdword)
833
    MACROFIELD_LINE(XBOW_WID_LLP, xb_wid_llp)
834
    MACROFIELD_LINE(XBOW_WID_STAT_CLR, xb_wid_stat_clr)
835
    MACROFIELD_LINE(XBOW_WID_ARB_RELOAD, xb_wid_arb_reload)
836
    MACROFIELD_LINE(XBOW_WID_PERF_CTR_A, xb_perf_ctr_a)
837
    MACROFIELD_LINE(XBOW_WID_PERF_CTR_B, xb_perf_ctr_b)
838
    MACROFIELD_LINE(XBOW_WID_NIC, xb_nic)
839
    MACROFIELD_LINE(XB_LINK_REG_BASE(8), xb_link(8))
840
    MACROFIELD_LINE(XB_LINK_IBUF_FLUSH(8), xb_link(8).link_ibf)
841
    MACROFIELD_LINE(XB_LINK_CTRL(8), xb_link(8).link_control)
842
    MACROFIELD_LINE_BITFIELD(XB_CTRL_LINKALIVE_IE)
843
    MACROFIELD_LINE_BITFIELD(XB_CTRL_PERF_CTR_MODE_MSK)
844
    MACROFIELD_LINE_BITFIELD(XB_CTRL_IBUF_LEVEL_MSK)
845
    MACROFIELD_LINE_BITFIELD(XB_CTRL_8BIT_MODE)
846
    MACROFIELD_LINE_BITFIELD(XB_CTRL_BAD_LLP_PKT)
847
    MACROFIELD_LINE_BITFIELD(XB_CTRL_WIDGET_CR_MSK)
848
    MACROFIELD_LINE_BITFIELD(XB_CTRL_ILLEGAL_DST_IE)
849
    MACROFIELD_LINE_BITFIELD(XB_CTRL_OALLOC_IBUF_IE)
850
    MACROFIELD_LINE_BITFIELD(XB_CTRL_BNDWDTH_ALLOC_IE)
851
    MACROFIELD_LINE_BITFIELD(XB_CTRL_RCV_CNT_OFLOW_IE)
852
    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_CNT_OFLOW_IE)
853
    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_MAX_RTRY_IE)
854
    MACROFIELD_LINE_BITFIELD(XB_CTRL_RCV_IE)
855
    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_RTRY_IE)
856
    MACROFIELD_LINE_BITFIELD(XB_CTRL_MAXREQ_TOUT_IE)
857
    MACROFIELD_LINE_BITFIELD(XB_CTRL_SRC_TOUT_IE)
858
    MACROFIELD_LINE(XB_LINK_STATUS(8), xb_link(8).link_status)
859
    MACROFIELD_LINE_BITFIELD(XB_STAT_LINKALIVE)
860
    MACROFIELD_LINE_BITFIELD(XB_STAT_MULTI_ERR)
861
    MACROFIELD_LINE_BITFIELD(XB_STAT_ILLEGAL_DST_ERR)
862
    MACROFIELD_LINE_BITFIELD(XB_STAT_OALLOC_IBUF_ERR)
863
    MACROFIELD_LINE_BITFIELD(XB_STAT_BNDWDTH_ALLOC_ID_MSK)
864
    MACROFIELD_LINE_BITFIELD(XB_STAT_RCV_CNT_OFLOW_ERR)
865
    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_CNT_OFLOW_ERR)
866
    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_MAX_RTRY_ERR)
867
    MACROFIELD_LINE_BITFIELD(XB_STAT_RCV_ERR)
868
    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_RTRY_ERR)
869
    MACROFIELD_LINE_BITFIELD(XB_STAT_MAXREQ_TOUT_ERR)
870
    MACROFIELD_LINE_BITFIELD(XB_STAT_SRC_TOUT_ERR)
871
    MACROFIELD_LINE(XB_LINK_ARB_UPPER(8), xb_link(8).link_arb_upper)
872
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xb))
873
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xb))
874
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xa))
875
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xa))
876
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0x9))
877
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0x9))
878
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0x8))
879
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0x8))
880
    MACROFIELD_LINE(XB_LINK_ARB_LOWER(8), xb_link(8).link_arb_lower)
881
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xf))
882
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xf))
883
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xe))
884
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xe))
885
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xd))
886
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xd))
887
    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xc))
888
    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xc))
889
    MACROFIELD_LINE(XB_LINK_STATUS_CLR(8), xb_link(8).link_status_clr)
890
    MACROFIELD_LINE(XB_LINK_RESET(8), xb_link(8).link_reset)
891
    MACROFIELD_LINE(XB_LINK_AUX_STATUS(8), xb_link(8).link_aux_status)
892
    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_RCV_CNT)
893
    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_XMT_CNT)
894
    MACROFIELD_LINE_BITFIELD(XB_AUX_LINKFAIL_RST_BAD)
895
    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_PRESENT)
896
    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_PORT_WIDTH)
897
    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_TOUT_DST)
898
    MACROFIELD_LINE(XB_LINK_REG_BASE(0x8), xb_link(0x8))
899
    MACROFIELD_LINE(XB_LINK_REG_BASE(0x9), xb_link(0x9))
900
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xA), xb_link(0xA))
901
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xB), xb_link(0xB))
902
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xC), xb_link(0xC))
903
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xD), xb_link(0xD))
904
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xE), xb_link(0xE))
905
    MACROFIELD_LINE(XB_LINK_REG_BASE(0xF), xb_link(0xF))
906
};                              /* xbow_macrofield[] */
907
 
908
#endif                          /* MACROFIELD_LINE */
909
 
910
#endif                          /* __ASSEMBLY__ */
911
#endif                          /* _ASM_SN_SN_XTALK_XBOW_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.