/*
* 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-2003 Silicon Graphics, Inc. All Rights Reserved.
*/
#ifndef _ASM_IA64_SN_XTALK_XTALK_PRIVATE_H
#define _ASM_IA64_SN_XTALK_XTALK_PRIVATE_H
#include <asm/sn/ioerror.h> /* for error function and arg types */
#include <asm/sn/xtalk/xwidget.h>
#include <asm/sn/xtalk/xtalk.h>
/*
* 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 {
vertex_hdl_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 {
vertex_hdl_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 {
vertex_hdl_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 xwidget_hwid_is_sn1_xswitch(_hwid) \
(((_hwid)->part_num == XXBOW_WIDGET_PART_NUM || \
(_hwid)->part_num == PXBOW_WIDGET_PART_NUM) && \
((_hwid)->mfg_num == XXBOW_WIDGET_MFGR_NUM ))
#define xwidget_hwid_is_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;
vertex_hdl_t w_vertex; /* back pointer to vertex */
xwidgetnum_t w_id; /* widget id */
struct xwidget_hwid_s w_hwid; /* hardware identification (part/rev/mfg) */
vertex_hdl_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_IA64_SN_XTALK_XTALK_PRIVATE_H */