blob: b0c1794e3331d5dfe8f61d6e31a340908475873d (
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
|
/* $Id$
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc.
* Copyright (C) 2000 by Colin Ngam
*/
#ifndef _ASM_SN_XTALK_XTALK_PRIVATE_H
#define _ASM_SN_XTALK_XTALK_PRIVATE_H
#ifdef IRIX
#include <sys/ioerror.h> /* for error function and arg types */
#else
#include <asm/sn/ioerror.h> /* for error function and arg types */
#endif
/*
* xtalk_private.h -- private definitions for xtalk
* crosstalk drivers should NOT include this file.
*/
/*
* All Crosstalk providers set up PIO using this information.
*/
struct xtalk_piomap_s {
devfs_handle_t xp_dev; /* a requestor of this mapping */
xwidgetnum_t xp_target; /* target (node's widget number) */
iopaddr_t xp_xtalk_addr; /* which crosstalk addr is mapped */
size_t xp_mapsz; /* size of this mapping */
caddr_t xp_kvaddr; /* kernel virtual address to use */
};
/*
* All Crosstalk providers set up DMA using this information.
*/
struct xtalk_dmamap_s {
devfs_handle_t xd_dev; /* a requestor of this mapping */
xwidgetnum_t xd_target; /* target (node's widget number) */
};
/*
* All Crosstalk providers set up interrupts using this information.
*/
struct xtalk_intr_s {
int xi_flags; /* XTALK_INTR flags */
devfs_handle_t xi_dev; /* requestor of this intr */
xwidgetnum_t xi_target; /* master's widget number */
xtalk_intr_vector_t xi_vector; /* 8-bit interrupt vector */
iopaddr_t xi_addr; /* xtalk address to generate intr */
void *xi_sfarg; /* argument for setfunc */
xtalk_intr_setfunc_t xi_setfunc; /* device's setfunc routine */
};
/*
* Xtalk interrupt handler structure access functions
*/
#define xtalk_intr_arg(xt) ((xt)->xi_sfarg)
#define xwidget_hwid_is_sn0_xswitch(_hwid) \
(((_hwid)->part_num == XBOW_WIDGET_PART_NUM ) && \
((_hwid)->mfg_num == XBOW_WIDGET_MFGR_NUM ))
#define xwidget_hwid_is_sn1_xswitch(_hwid) \
(((_hwid)->part_num == XXBOW_WIDGET_PART_NUM ) && \
((_hwid)->mfg_num == XXBOW_WIDGET_MFGR_NUM ))
#define xwidget_hwid_is_xswitch(_hwid) \
(xwidget_hwid_is_sn0_xswitch(_hwid) || \
xwidget_hwid_is_sn1_xswitch(_hwid))
/* common iograph info for all widgets,
* stashed in FASTINFO of widget connection points.
*/
struct xwidget_info_s {
char *w_fingerprint;
devfs_handle_t w_vertex; /* back pointer to vertex */
xwidgetnum_t w_id; /* widget id */
struct xwidget_hwid_s w_hwid; /* hardware identification (part/rev/mfg) */
devfs_handle_t w_master; /* CACHED widget's master */
xwidgetnum_t w_masterid; /* CACHED widget's master's widgetnum */
error_handler_f *w_efunc; /* error handling function */
error_handler_arg_t w_einfo; /* first parameter for efunc */
char *w_name; /* canonical hwgraph name */
};
extern char widget_info_fingerprint[];
#endif /* _ASM_SN_XTALK_XTALK_PRIVATE_H */
|