diff options
Diffstat (limited to 'include/asm-ia64/sn/xtalk/xtalk_private.h')
-rw-r--r-- | include/asm-ia64/sn/xtalk/xtalk_private.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/include/asm-ia64/sn/xtalk/xtalk_private.h b/include/asm-ia64/sn/xtalk/xtalk_private.h new file mode 100644 index 000000000..b0c1794e3 --- /dev/null +++ b/include/asm-ia64/sn/xtalk/xtalk_private.h @@ -0,0 +1,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 */ |