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

Subversion Repositories or1k

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

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

Line No. Rev Author Line
1 1275 phoenix
/*
2
 * This file is subject to the terms and conditions of the GNU General Public
3
 * License.  See the file "COPYING" in the main directory of this archive
4
 * for more details.
5
 *
6
 * Copyright (C) 1992 - 1997, 2000-2003 Silicon Graphics, Inc. All rights reserved.
7
 */
8
#ifndef _ASM_IA64_SN_MODULE_H
9
#define _ASM_IA64_SN_MODULE_H
10
 
11
#ifdef  __cplusplus
12
extern "C" {
13
#endif
14
 
15
 
16
#include <linux/config.h>
17
#include <asm/sn/klconfig.h>
18
#include <asm/sn/ksys/elsc.h>
19
 
20
#define MODULE_MAX                      128
21
#define MODULE_MAX_NODES                2
22
#define MODULE_HIST_CNT                 16
23
#define MAX_MODULE_LEN                  16
24
 
25
/* Well-known module IDs */
26
#define MODULE_UNKNOWN          (-2) /* initial value of klconfig brd_module */
27
/* #define INVALID_MODULE       (-1) ** generic invalid moduleid_t (arch.h) */
28
#define MODULE_NOT_SET          0    /* module ID not set in sys ctlrs. */
29
 
30
/* parameter for format_module_id() */
31
#define MODULE_FORMAT_BRIEF     1
32
#define MODULE_FORMAT_LONG      2
33
 
34
/*
35
 *      Module id format
36
 *
37
 *      31-16   Rack ID (encoded class, group, number - 16-bit unsigned int)
38
 *       15-8   Brick type (8-bit ascii character)
39
 *        7-0   Bay (brick position in rack (0-63) - 8-bit unsigned int)
40
 *
41
 */
42
 
43
/*
44
 * Macros for getting the brick type
45
 */
46
#define MODULE_BTYPE_MASK       0xff00
47
#define MODULE_BTYPE_SHFT       8
48
#define MODULE_GET_BTYPE(_m)    (((_m) & MODULE_BTYPE_MASK) >> MODULE_BTYPE_SHFT)
49
#define MODULE_BT_TO_CHAR(_b)   ((char)(_b))
50
#define MODULE_GET_BTCHAR(_m)   (MODULE_BT_TO_CHAR(MODULE_GET_BTYPE(_m)))
51
 
52
/*
53
 * Macros for getting the rack ID.
54
 */
55
#define MODULE_RACK_MASK        0xffff0000
56
#define MODULE_RACK_SHFT        16
57
#define MODULE_GET_RACK(_m)     (((_m) & MODULE_RACK_MASK) >> MODULE_RACK_SHFT)
58
 
59
/*
60
 * Macros for getting the brick position
61
 */
62
#define MODULE_BPOS_MASK        0x00ff
63
#define MODULE_BPOS_SHFT        0
64
#define MODULE_GET_BPOS(_m)     (((_m) & MODULE_BPOS_MASK) >> MODULE_BPOS_SHFT)
65
 
66
/*
67
 * Macros for constructing moduleid_t's
68
 */
69
#define RBT_TO_MODULE(_r, _b, _t) ((_r) << MODULE_RACK_SHFT | \
70
                                   (_b) << MODULE_BPOS_SHFT | \
71
                                   (_t) << MODULE_BTYPE_SHFT)
72
 
73
/*
74
 * Macros for encoding and decoding rack IDs
75
 * A rack number consists of three parts:
76
 *   class (0==CPU/mixed, 1==I/O), group, number
77
 *
78
 * Rack number is stored just as it is displayed on the screen:
79
 * a 3-decimal-digit number.
80
 */
81
#define RACK_CLASS_DVDR         100
82
#define RACK_GROUP_DVDR         10
83
#define RACK_NUM_DVDR           1
84
 
85
#define RACK_CREATE_RACKID(_c, _g, _n)  ((_c) * RACK_CLASS_DVDR +       \
86
        (_g) * RACK_GROUP_DVDR + (_n) * RACK_NUM_DVDR)
87
 
88
#define RACK_GET_CLASS(_r)              ((_r) / RACK_CLASS_DVDR)
89
#define RACK_GET_GROUP(_r)              (((_r) - RACK_GET_CLASS(_r) *   \
90
            RACK_CLASS_DVDR) / RACK_GROUP_DVDR)
91
#define RACK_GET_NUM(_r)                (((_r) - RACK_GET_CLASS(_r) *   \
92
            RACK_CLASS_DVDR - RACK_GET_GROUP(_r) *      \
93
            RACK_GROUP_DVDR) / RACK_NUM_DVDR)
94
 
95
/*
96
 * Macros for encoding and decoding rack IDs
97
 * A rack number consists of three parts:
98
 *   class      1 bit, 0==CPU/mixed, 1==I/O
99
 *   group      2 bits for CPU/mixed, 3 bits for I/O
100
 *   number     3 bits for CPU/mixed, 2 bits for I/O (1 based)
101
 */
102
#define RACK_GROUP_BITS(_r)     (RACK_GET_CLASS(_r) ? 3 : 2)
103
#define RACK_NUM_BITS(_r)       (RACK_GET_CLASS(_r) ? 2 : 3)
104
 
105
#define RACK_CLASS_MASK(_r)     0x20
106
#define RACK_CLASS_SHFT(_r)     5
107
#define RACK_ADD_CLASS(_r, _c)  \
108
        ((_r) |= (_c) << RACK_CLASS_SHFT(_r) & RACK_CLASS_MASK(_r))
109
 
110
#define RACK_GROUP_SHFT(_r)     RACK_NUM_BITS(_r)
111
#define RACK_GROUP_MASK(_r)     \
112
        ( (((unsigned)1<<RACK_GROUP_BITS(_r)) - 1) << RACK_GROUP_SHFT(_r) )
113
#define RACK_ADD_GROUP(_r, _g)  \
114
        ((_r) |= (_g) << RACK_GROUP_SHFT(_r) & RACK_GROUP_MASK(_r))
115
 
116
#define RACK_NUM_SHFT(_r)       0
117
#define RACK_NUM_MASK(_r)       \
118
        ( (((unsigned)1<<RACK_NUM_BITS(_r)) - 1) << RACK_NUM_SHFT(_r) )
119
#define RACK_ADD_NUM(_r, _n)    \
120
        ((_r) |= ((_n) - 1) << RACK_NUM_SHFT(_r) & RACK_NUM_MASK(_r))
121
 
122
 
123
/*
124
 * Brick type definitions
125
 */
126
#define MAX_BRICK_TYPES         256 /* brick type is stored as uchar */
127
 
128
extern char brick_types[];
129
 
130
#define MODULE_CBRICK           0
131
#define MODULE_RBRICK           1
132
#define MODULE_IBRICK           2
133
#define MODULE_KBRICK           3
134
#define MODULE_XBRICK           4
135
#define MODULE_DBRICK           5
136
#define MODULE_PBRICK           6
137
#define MODULE_NBRICK           7
138
#define MODULE_PEBRICK          8
139
#define MODULE_PXBRICK          9
140
#define MODULE_IXBRICK          10
141
#define MODULE_CGBRICK          11
142
#define MODULE_OPUSBRICK        12
143
 
144
/*
145
 * Moduleid_t comparison macros
146
 */
147
/* Don't compare the brick type:  only the position is significant */
148
#define MODULE_CMP(_m1, _m2)    (((_m1)&(MODULE_RACK_MASK|MODULE_BPOS_MASK)) -\
149
                                 ((_m2)&(MODULE_RACK_MASK|MODULE_BPOS_MASK)))
150
#define MODULE_MATCH(_m1, _m2)  (MODULE_CMP((_m1),(_m2)) == 0)
151
 
152
typedef struct module_s module_t;
153
 
154
struct module_s {
155
    moduleid_t          id;             /* Module ID of this module        */
156
 
157
    spinlock_t          lock;           /* Lock for this structure         */
158
 
159
    /* List of nodes in this module */
160
    cnodeid_t           nodes[MAX_SLABS + 1];
161
    geoid_t             geoid[MAX_SLABS + 1];
162
    struct {
163
                char     moduleid[8];
164
                uint64_t iobrick_type;
165
    } io[MAX_SLABS + 1];
166
 
167
    /* Fields for Module System Controller */
168
    int                 mesgpend;       /* Message pending                 */
169
    int                 shutdown;       /* Shutdown in progress            */
170
    struct semaphore    thdcnt;         /* Threads finished counter        */
171
    time_t              intrhist[MODULE_HIST_CNT];
172
    int                 histptr;
173
 
174
    int                 hbt_active;     /* MSC heartbeat monitor active    */
175
    uint64_t            hbt_last;       /* RTC when last heartbeat sent    */
176
 
177
    /* Module serial number info */
178
    union {
179
        char            snum_str[MAX_SERIAL_NUM_SIZE];   /* used by CONFIG_SGI_IP27    */
180
        uint64_t        snum_int;                        /* used by speedo */
181
    } snum;
182
    int                 snum_valid;
183
 
184
    int                 disable_alert;
185
    int                 count_down;
186
 
187
    /* System serial number info (used by SN1) */
188
    char                sys_snum[MAX_SERIAL_NUM_SIZE];
189
    int                 sys_snum_valid;
190
};
191
 
192
/* module.c */
193
extern module_t        *modules[MODULE_MAX];    /* Indexed by cmoduleid_t   */
194
extern int              nummodules;
195
 
196
extern module_t        *module_lookup(moduleid_t id);
197
 
198
extern int              get_kmod_sys_snum(cmoduleid_t cmod,
199
                                          char *snum);
200
 
201
extern void             format_module_id(char *buffer, moduleid_t m, int fmt);
202
extern int              parse_module_id(char *buffer);
203
 
204
#ifdef  __cplusplus
205
}
206
#endif
207
 
208
#endif /* _ASM_IA64_SN_MODULE_H */

powered by: WebSVN 2.1.0

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