aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64/sn/cdl.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-ia64/sn/cdl.h')
-rw-r--r--include/asm-ia64/sn/cdl.h176
1 files changed, 11 insertions, 165 deletions
diff --git a/include/asm-ia64/sn/cdl.h b/include/asm-ia64/sn/cdl.h
index 35c7f8ec37b231..6f551e1ca85a33 100644
--- a/include/asm-ia64/sn/cdl.h
+++ b/include/asm-ia64/sn/cdl.h
@@ -4,13 +4,20 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
+ * Copyright (C) 1992-1997,2000-2003 Silicon Graphics, Inc. All rights reserved.
*/
#ifndef _ASM_IA64_SN_CDL_H
#define _ASM_IA64_SN_CDL_H
#include <asm/sn/sgi.h>
+struct cdl {
+ int part_num; /* Part part number */
+ int mfg_num; /* Part MFG number */
+ int (*attach)(vertex_hdl_t); /* Attach routine */
+};
+
+
/*
* cdl: connection/driver list
*
@@ -21,175 +28,14 @@
typedef struct cdl *cdl_p;
/*
- * cdl_itr_f is the type for the functions
- * that are handled by cdl_iterate.
- */
-
-typedef void
-cdl_iter_f (devfs_handle_t vhdl);
-
-/*
- * cdl_drv_f is the type for the functions
- * that are called by cdl_add_driver and
- * cdl_del_driver.
- */
-
-typedef void
-cdl_drv_f (devfs_handle_t vhdl, int key1, int key2, int error);
-
-/*
- * If CDL_PRI_HI is specified in the flags
- * parameter for cdl_add_driver, then that driver's
- * attach routine will be called for future connect
- * points before any (non-CDL_PRI_HI) drivers.
- *
- * The IOC3 driver uses this facility to make sure
- * that the ioc3_attach() function is called before
- * the attach routines of any subdevices.
- *
- * Drivers for bridge-based crosstalk cards that
- * are almost but not quite generic can use it to
- * arrange that their attach() functions get called
- * before the generic bridge drivers, so they can
- * leave behind "hint" structures that will
- * properly configure the generic driver.
- */
-#define CDL_PRI_HI 0x0001
-
-/*
- * cdl_new: construct a new connection/driver list
- *
- * Called once for each "kind" of bus. Returns an
- * opaque cookie representing the particular list
- * that will be operated on by the other calls.
- */
-extern cdl_p cdl_new(char *, char *, char *);
-
-/*
- * cdl_del: destroy a connection/driver list.
- *
- * Releases all dynamically allocated resources
- * associated with the specified list. Forgets what
- * drivers might be involved in this kind of bus,
- * forgets what connection points have been noticed
- * on this kind of bus.
- */
-extern void cdl_del(cdl_p reg);
-
-/*
- * cdl_add_driver: register a device driver
- *
- * Calls the driver's attach routine with all
- * connection points on the list that have the same
- * key information as the driver; call-back the
- * specified function to notify the driver of the
- * attach status for each device. Place the driver
- * on the list so that any connection points
- * discovered in the future that match the driver
- * can be handed off to the driver's attach
- * routine.
- *
- * CDL_PRI_HI may be specified (see above).
- */
-
-extern int cdl_add_driver(cdl_p reg,
- int key1,
- int key2,
- char *prefix,
- int flags,
- cdl_drv_f *func);
-
-/*
- * cdl_del_driver: remove a device driver
- *
- * Calls the driver's detach routine with all
- * connection points on the list that match the
- * driver; call-back the specified function to
- * notify the driver of the detach status for each
- * device. Then forget about the driver. Future
- * calls to cdl_add_connpt with connections that
- * would match this driver no longer trigger calls
- * to the driver's attach routine.
- *
- * NOTE: Yes, I said CONNECTION POINTS, not
- * verticies that the driver has been attached to
- * with hwgraph_driver_add(); this gives the driver
- * a chance to clean up anything it did to the
- * connection point in its attach routine. Also,
- * this is done whether or not the attach routine
- * was successful.
- */
-extern void cdl_del_driver(cdl_p reg,
- char *prefix,
- cdl_drv_f *func);
-
-/*
* cdl_add_connpt: add a connection point
*
* Calls the attach routines of all the drivers on
* the list that match this connection point, in
- * the order that they were added to the list,
- * except that CDL_PRI_HI drivers are called first.
- *
- * Then the vertex is added to the list, so it can
- * be presented to any matching drivers that may be
- * subsequently added to the list.
+ * the order that they were added to the list.
*/
-extern int cdl_add_connpt(cdl_p reg,
- int key1,
+extern int cdl_add_connpt(int key1,
int key2,
- devfs_handle_t conn,
+ vertex_hdl_t conn,
int drv_flags);
-
-/*
- * cdl_del_connpt: delete a connection point
- *
- * Calls the detach routines of all matching
- * drivers for this connection point, in the same
- * order that the attach routines were called; then
- * forgets about this vertex, so drivers added in
- * the future will not be told about it.
- *
- * NOTE: Same caveat here about the detach calls as
- * in the cdl_del_driver() comment above.
- */
-extern int cdl_del_connpt(cdl_p reg,
- int key1,
- int key2,
- devfs_handle_t conn,
- int drv_flags);
-
-/*
- * cdl_iterate: find all verticies in the registry
- * corresponding to the named driver and call them
- * with the specified function (giving the vertex
- * as the parameter).
- */
-
-extern void cdl_iterate(cdl_p reg,
- char *prefix,
- cdl_iter_f *func);
-
-/*
- * An INFO_LBL_ASYNC_ATTACH label is attached to a vertex, pointing to
- * an instance of async_attach_s to indicate that asynchronous
- * attachment may be applied to that device ... if the corresponding
- * driver allows it.
- */
-
-struct async_attach_s {
- struct semaphore async_sema;
- int async_count;
-};
-typedef struct async_attach_s *async_attach_t;
-
-async_attach_t async_attach_new(void);
-void async_attach_free(async_attach_t);
-async_attach_t async_attach_get_info(devfs_handle_t);
-void async_attach_add_info(devfs_handle_t, async_attach_t);
-void async_attach_del_info(devfs_handle_t);
-void async_attach_signal_start(async_attach_t);
-void async_attach_signal_done(async_attach_t);
-void async_attach_waitall(async_attach_t);
-
#endif /* _ASM_IA64_SN_CDL_H */