1 /* $Id$
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_XSWITCH_H
10 #define _ASM_SN_XTALK_XSWITCH_H
11 
12 /*
13  * xswitch.h - controls the format of the data
14  * provided by xswitch verticies back to the
15  * xtalk bus providers.
16  */
17 
18 #ifndef __ASSEMBLY__
19 
20 #include <linux/devfs_fs_kernel.h>
21 #include <asm/sn/xtalk/xtalk.h>
22 
23 typedef struct xswitch_info_s *xswitch_info_t;
24 
25 typedef int
26                         xswitch_reset_link_f(vertex_hdl_t xconn);
27 
28 typedef struct xswitch_provider_s {
29     xswitch_reset_link_f   *reset_link;
30 } xswitch_provider_t;
31 
32 extern void             xswitch_provider_register(vertex_hdl_t sw_vhdl, xswitch_provider_t * xsw_fns);
33 
34 xswitch_reset_link_f    xswitch_reset_link;
35 
36 extern xswitch_info_t   xswitch_info_new(vertex_hdl_t vhdl);
37 
38 extern void             xswitch_info_link_is_ok(xswitch_info_t xswitch_info,
39 						xwidgetnum_t port);
40 extern void             xswitch_info_vhdl_set(xswitch_info_t xswitch_info,
41 					      xwidgetnum_t port,
42 					      vertex_hdl_t xwidget);
43 extern void             xswitch_info_master_assignment_set(xswitch_info_t xswitch_info,
44 						       xwidgetnum_t port,
45 					       vertex_hdl_t master_vhdl);
46 
47 extern xswitch_info_t   xswitch_info_get(vertex_hdl_t vhdl);
48 
49 extern int              xswitch_info_link_ok(xswitch_info_t xswitch_info,
50 					     xwidgetnum_t port);
51 extern vertex_hdl_t     xswitch_info_vhdl_get(xswitch_info_t xswitch_info,
52 					      xwidgetnum_t port);
53 extern vertex_hdl_t     xswitch_info_master_assignment_get(xswitch_info_t xswitch_info,
54 						      xwidgetnum_t port);
55 
56 #endif				/* __ASSEMBLY__ */
57 
58 #endif				/* _ASM_SN_XTALK_XSWITCH_H */
59