Home | History | Annotate | Line # | Download | only in isa
isavar.h revision 1.1
      1 /*-
      2  * Copyright (c) 1992 Berkeley Software Design, Inc. All rights reserved.
      3  * The Berkeley Software Design Inc. software License Agreement specifies
      4  * the terms and conditions for redistribution.
      5  *
      6  *	BSDI $Id: isavar.h,v 1.1 1993/09/14 17:32:42 mycroft Exp $
      7  */
      8 
      9 /*
     10  * ISA driver attach arguments
     11  */
     12 struct isa_attach_args {
     13 	u_short	ia_iobase;		/* base i/o address */
     14 	u_short	ia_iosize;		/* span of ports used */
     15 	u_short	ia_irq;			/* interrupt request */
     16 	u_short	ia_drq;			/* DMA request */
     17 	caddr_t ia_maddr;		/* physical i/o mem addr */
     18 	u_int	ia_msize;		/* size of i/o memory */
     19 	void	*ia_aux;		/* driver specific */
     20 };
     21 
     22 /*
     23  * per-device ISA variables
     24  */
     25 struct isadev {
     26 	struct  device *id_dev;		/* back pointer to generic */
     27 	struct	isadev *id_bchain;	/* forward link in bus chain */
     28 };
     29 
     30 /*
     31  * ISA masterbus
     32  */
     33 struct isa_softc {
     34 	struct	device sc_dev;		/* base device */
     35 	struct	isadev *sc_isadev;	/* list of all children */
     36 };
     37 
     38 #define		cf_iobase		cf_loc[0]
     39 #define		cf_iosize		cf_loc[1]
     40 #define		cf_maddr		cf_loc[2]
     41 #define		cf_msize		cf_loc[3]
     42 #define		cf_irq			cf_loc[4]
     43 #define		cf_drq			cf_loc[5]
     44 
     45 /*
     46  * Interrupt handler chains.  Interrupt handlers should return 0 for
     47  * `not I', 1 (`I took care of it'), or -1 (`I guess it was mine, but
     48  * I wasn't expecting it').  intr_establish() inserts a handler into
     49  * the list.  The handler is called with its (single) argument.
     50  */
     51 struct intrhand {
     52 	int	(*ih_fun)();
     53 	void	*ih_arg;
     54 	u_long	ih_count;
     55 	struct	intrhand *ih_next;
     56 } *intrhand[16];
     57 
     58 void intr_establish __P((int intr, struct intrhand *, enum devclass));
     59 
     60 /*
     61  * software conventions
     62  */
     63 typedef enum { BUS_ISA, BUS_EISA, BUS_MCA } isa_type;
     64 
     65 extern caddr_t atdevbase;	/* kernel virtual address of "hole" */
     66 extern isa_type isa_bustype;	/* type of bus */
     67 
     68 /*
     69  * Given a kernel virtual address for some location
     70  * in the "hole" I/O space, return a physical address.
     71  */
     72 #define	ISA_PHYSADDR(v)	((caddr_t) ((u_long)(v) - atdevbase + IOM_BEGIN))
     73 /*
     74  * Given a physical address in the "hole",
     75  * return a kernel virtual address.
     76  */
     77 #define	ISA_HOLE_VADDR(p)  ((caddr_t) ((u_long)(p) - IOM_BEGIN + atdevbase))
     78