xref: /csrg-svn/sys/luna68k/dev/device.h (revision 53999)
1*53999Sfujita /*
2*53999Sfujita  * Copyright (c) 1982, 1990, 1992 The Regents of the University of California.
3*53999Sfujita  * All rights reserved.
4*53999Sfujita  *
5*53999Sfujita  * %sccs.include.redist.c%
6*53999Sfujita  *
7*53999Sfujita  *	@(#)device.h	7.1 (Berkeley) 06/15/92
8*53999Sfujita  */
9*53999Sfujita 
10*53999Sfujita struct driver {
11*53999Sfujita 	int	(*d_init)();
12*53999Sfujita 	char	*d_name;
13*53999Sfujita 	int	(*d_start)();
14*53999Sfujita 	int	(*d_go)();
15*53999Sfujita 	int	(*d_intr)();
16*53999Sfujita 	int	(*d_done)();
17*53999Sfujita };
18*53999Sfujita 
19*53999Sfujita struct hp_ctlr {
20*53999Sfujita 	struct driver	*hp_driver;
21*53999Sfujita 	int		hp_unit;
22*53999Sfujita 	int		hp_alive;
23*53999Sfujita 	char		*hp_addr;
24*53999Sfujita 	int		hp_flags;
25*53999Sfujita 	int		hp_ipl;
26*53999Sfujita };
27*53999Sfujita 
28*53999Sfujita struct hp_device {
29*53999Sfujita 	struct driver	*hp_driver;
30*53999Sfujita 	struct driver	*hp_cdriver;
31*53999Sfujita 	int		hp_unit;
32*53999Sfujita 	int		hp_ctlr;
33*53999Sfujita 	int		hp_slave;
34*53999Sfujita 	char		*hp_addr;
35*53999Sfujita 	int		hp_dk;
36*53999Sfujita 	int		hp_flags;
37*53999Sfujita 	int		hp_alive;
38*53999Sfujita 	int		hp_ipl;
39*53999Sfujita };
40*53999Sfujita 
41*53999Sfujita struct	devqueue {
42*53999Sfujita 	struct	devqueue *dq_forw;
43*53999Sfujita 	struct	devqueue *dq_back;
44*53999Sfujita 	int	dq_ctlr;
45*53999Sfujita 	int	dq_unit;
46*53999Sfujita 	int	dq_slave;
47*53999Sfujita 	struct	driver *dq_driver;
48*53999Sfujita };
49*53999Sfujita 
50*53999Sfujita #define	MAXCTLRS	16	/* Size of HW table (arbitrary) */
51*53999Sfujita #define	MAXSLAVES	8	/* Slaves per controller (HPIB/SCSI limit) */
52*53999Sfujita 
53*53999Sfujita struct hp_hw {
54*53999Sfujita 	caddr_t	hw_pa;		/* physical address of control space */
55*53999Sfujita 	int	hw_size;	/* size of control space */
56*53999Sfujita 	caddr_t	hw_kva;		/* kernel virtual address of control space */
57*53999Sfujita 	short	hw_id;		/* HW returned id */
58*53999Sfujita 	short	hw_secid;	/* secondary HW id (displays) */
59*53999Sfujita 	short	hw_type;	/* type (defined below) */
60*53999Sfujita 	short	hw_sc;		/* select code (if applicable) */
61*53999Sfujita };
62*53999Sfujita 
63*53999Sfujita /* bus types */
64*53999Sfujita #define	B_MASK		0xE000
65*53999Sfujita #define	B_DIO		0x2000
66*53999Sfujita #define B_DIOII		0x4000
67*53999Sfujita #define B_VME		0x6000
68*53999Sfujita /* controller types */
69*53999Sfujita #define	C_MASK		0x8F
70*53999Sfujita #define C_FLAG		0x80
71*53999Sfujita #define	C_HPIB		0x81
72*53999Sfujita #define C_SCSI		0x82
73*53999Sfujita #define C_VME		0x83
74*53999Sfujita /* device types (controllers with no slaves) */
75*53999Sfujita #define D_MASK		0x8F
76*53999Sfujita #define	D_BITMAP	0x01
77*53999Sfujita #define	D_LAN		0x02
78*53999Sfujita #define	D_FPA		0x03
79*53999Sfujita #define	D_KEYBOARD	0x04
80*53999Sfujita #define	D_COMMDCA	0x05
81*53999Sfujita #define	D_COMMDCM	0x06
82*53999Sfujita #define	D_COMMDCL	0x07
83*53999Sfujita #define	D_PPORT		0x08
84*53999Sfujita #define	D_SIO		0x09
85*53999Sfujita #define	D_MISC		0x7F
86*53999Sfujita 
87*53999Sfujita #define HW_ISCTLR(hw)	((hw)->hw_type & C_FLAG)
88*53999Sfujita #define HW_ISDIOII(hw)	((hw)->hw_type & B_DIOII)
89*53999Sfujita #define HW_ISHPIB(hw)	(((hw)->hw_type & C_MASK) == C_HPIB)
90*53999Sfujita #define HW_ISSCSI(hw)	(((hw)->hw_type & C_MASK) == C_SCSI)
91*53999Sfujita #define HW_ISDEV(hw,d)	(((hw)->hw_type & D_MASK) == (d))
92*53999Sfujita 
93*53999Sfujita #ifdef KERNEL
94*53999Sfujita extern struct hp_hw sc_table[];
95*53999Sfujita extern struct hp_ctlr hp_cinit[];
96*53999Sfujita extern struct hp_device hp_dinit[];
97*53999Sfujita extern caddr_t sctova(), sctopa(), iomap();
98*53999Sfujita #endif
99