Home | History | Annotate | Line # | Download | only in isa
isavar.h revision 1.2
      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.2 1993/10/06 12:09:25 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 #define	IOBASEUNK	0xffff		/* i/o address is unknown */
     23 #define	DRQUNK		0xffff		/* DMA request line is unknown */
     24 
     25 /*
     26  * per-device ISA variables
     27  */
     28 struct isadev {
     29 	struct  device *id_dev;		/* back pointer to generic */
     30 	struct	isadev *id_bchain;	/* forward link in bus chain */
     31 };
     32 
     33 /*
     34  * ISA masterbus
     35  */
     36 struct isa_softc {
     37 	struct	device sc_dev;		/* base device */
     38 	struct	isadev *sc_isadev;	/* list of all children */
     39 };
     40 
     41 #define		cf_iobase		cf_loc[0]
     42 #define		cf_iosize		cf_loc[1]
     43 #define		cf_maddr		cf_loc[2]
     44 #define		cf_msize		cf_loc[3]
     45 #define		cf_irq			cf_loc[4]
     46 #define		cf_drq			cf_loc[5]
     47 
     48 /*
     49  * Interrupt handler chains.  Interrupt handlers should return 0 for
     50  * `not I', 1 (`I took care of it'), or -1 (`I guess it was mine, but
     51  * I wasn't expecting it').  intr_establish() inserts a handler into
     52  * the list.  The handler is called with its (single) argument.
     53  */
     54 struct intrhand {
     55 	int	(*ih_fun)();
     56 	void	*ih_arg;
     57 	u_long	ih_count;
     58 	struct	intrhand *ih_next;
     59 } *intrhand[16];
     60 
     61 void intr_establish __P((int intr, struct intrhand *, enum devclass));
     62 
     63 /*
     64  * software conventions
     65  */
     66 typedef enum { BUS_ISA, BUS_EISA, BUS_MCA } isa_type;
     67 
     68 extern caddr_t atdevbase;	/* kernel virtual address of "hole" */
     69 extern isa_type isa_bustype;	/* type of bus */
     70 
     71 /*
     72  * Given a kernel virtual address for some location
     73  * in the "hole" I/O space, return a physical address.
     74  */
     75 #define	ISA_PHYSADDR(v)	((caddr_t) ((u_long)(v) - atdevbase + IOM_BEGIN))
     76 /*
     77  * Given a physical address in the "hole",
     78  * return a kernel virtual address.
     79  */
     80 #define	ISA_HOLE_VADDR(p)  ((caddr_t) ((u_long)(p) - IOM_BEGIN + atdevbase))
     81