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

Subversion Repositories or1k

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/* $Id: xtalkaddrs.h,v 1.1.1.1 2004-04-15 02:58:11 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_XTALK_XTALKADDRS_H
10
#define _ASM_SN_XTALK_XTALKADDRS_H
11
 
12
 
13
/*
14
 * CrossTalk to SN0 Hub addressing support
15
 *
16
 * This file defines the mapping conventions used by the Hub's
17
 * I/O interface when it receives a read or write request from
18
 * a CrossTalk widget.
19
 *
20
 * Format for non-Memory accesses:
21
 *
22
 *  +--------------+------------------------------------------------+
23
 *  | 0  | XXXXX   |        SN0Addr                                |
24
 *  +----+---------+------------------------------------------------+
25
 *    47  46     40 39                                             0
26
 *      bit 47 indicates Memory (0)
27
 *      bits 46..40 are unused
28
 *      bits 39..0 hold the memory address
29
 *                      (bits 39..31 hold the nodeID in N mode
30
 *                       bits 39..32 hold the nodeID in M mode
31
 * By design, this looks exactly like a 0-extended SN0 Address, so
32
 * we don't need to do any conversions.
33
 *
34
 *
35
 *
36
 * Format for non-Memory accesses:
37
 *
38
 *  +--------------+------+---------+------+--+---------------------+
39
 *  | 1  | DstNode | XXXX | BigW=0  | SW=1 | 1|   Addr              |
40
 *  +----+---------+------+---------+------+--+---------------------+
41
 *    47  46     38 37  31 30     28 27  24 23 22                  0
42
 *
43
 *      bit 47 indicates IO (1)
44
 *      bits 46..38 hold the destination node ID
45
 *      bits 37..31 are unused
46
 *      bits 30..28 hold the big window being addressed
47
 *      bits 27..24 hold the small window being addressed
48
 *                  0 always refers to the xbow
49
 *                  1 always refers to the hub itself
50
 *      bit 23 indicates local (0) or remote (1)
51
 *             no accessing checks are done if this bit is 0
52
 *      bits 22..0 hold the register address
53
 *                 bits 22..21 determine which section of the hub
54
 *                              00 -> PI
55
 *                              01 -> MD
56
 *                              10 -> IO
57
 *                              11 -> NI
58
 * This looks very much like a REMOTE_HUB access, except the nodeID
59
 * is in a different place, and the highest xtalk bit is set.
60
 */
61
/* Hub-specific xtalk definitions */
62
 
63
#define HX_MEM_BIT              0L      /* Hub's idea of xtalk memory access */
64
#define HX_IO_BIT               1L      /* Hub's idea of xtalk register access */
65
#define HX_ACCTYPE_SHIFT        47
66
 
67
#define HX_NODE_SHIFT           39
68
 
69
#define HX_BIGWIN_SHIFT         28
70
#define HX_SWIN_SHIFT           23
71
 
72
#define HX_LOCACC               0L      /* local access */
73
#define HX_REMACC               1L      /* remote access */
74
#define HX_ACCESS_SHIFT         23
75
 
76
/*
77
 * Pre-calculate the fixed portion of a crosstalk address that maps
78
 * to local register space on a hub.
79
 */
80
#define HX_REG_BASE             ((HX_IO_BIT<<HX_ACCTYPE_SHIFT) + \
81
                                (0L<<HX_BIGWIN_SHIFT) + \
82
                                (1L<<HX_SWIN_SHIFT) + IALIAS_SIZE + \
83
                                (HX_REMACC<<HX_ACCESS_SHIFT))
84
 
85
/*
86
 * Return a crosstalk address which a widget can use to access a
87
 * designated register on a designated node.
88
 */
89
#define HUBREG_AS_XTALKADDR(nasid, regaddr) \
90
        ((iopaddr_t)(HX_REG_BASE + (((long)nasid)<<HX_NODE_SHIFT) + ((long)regaddr)))
91
 
92
#if TBD
93
#assert sizeof(iopaddr_t) == 8
94
#endif /* TBD */
95
 
96
/*
97
 * Get widget part number, given node id and widget id.
98
 * Always do a 32-bit read, because some widgets, e.g., Bridge, require so.
99
 * Widget ID is at offset 0 for 64-bit access.  Add 4 to get lower 32 bits
100
 * in big endian mode.
101
 * XXX Double check this with Hub, Xbow, Bridge and other hardware folks.
102
 */
103
#define XWIDGET_ID_READ(nasid, widget) \
104
        (widgetreg_t)(*(volatile uint32_t *)(NODE_SWIN_BASE(nasid, widget) + WIDGET_ID))
105
 
106
 
107
#endif /* _ASM_SN_XTALK_XTALKADDRS_H */

powered by: WebSVN 2.1.0

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