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