153999Sfujita /* 2*63192Sbostic * Copyright (c) 1982, 1990, 1992, 1993 3*63192Sbostic * The Regents of the University of California. All rights reserved. 453999Sfujita * 553999Sfujita * %sccs.include.redist.c% 653999Sfujita * 7*63192Sbostic * @(#)device.h 8.1 (Berkeley) 06/10/93 853999Sfujita */ 953999Sfujita 1053999Sfujita struct driver { 1153999Sfujita int (*d_init)(); 1253999Sfujita char *d_name; 1353999Sfujita int (*d_start)(); 1453999Sfujita int (*d_go)(); 1553999Sfujita int (*d_intr)(); 1653999Sfujita int (*d_done)(); 1753999Sfujita }; 1853999Sfujita 1953999Sfujita struct hp_ctlr { 2053999Sfujita struct driver *hp_driver; 2153999Sfujita int hp_unit; 2253999Sfujita int hp_alive; 2353999Sfujita char *hp_addr; 2453999Sfujita int hp_flags; 2553999Sfujita int hp_ipl; 2653999Sfujita }; 2753999Sfujita 2853999Sfujita struct hp_device { 2953999Sfujita struct driver *hp_driver; 3053999Sfujita struct driver *hp_cdriver; 3153999Sfujita int hp_unit; 3253999Sfujita int hp_ctlr; 3353999Sfujita int hp_slave; 3453999Sfujita char *hp_addr; 3553999Sfujita int hp_dk; 3653999Sfujita int hp_flags; 3753999Sfujita int hp_alive; 3853999Sfujita int hp_ipl; 3953999Sfujita }; 4053999Sfujita 4153999Sfujita struct devqueue { 4253999Sfujita struct devqueue *dq_forw; 4353999Sfujita struct devqueue *dq_back; 4453999Sfujita int dq_ctlr; 4553999Sfujita int dq_unit; 4653999Sfujita int dq_slave; 4753999Sfujita struct driver *dq_driver; 4853999Sfujita }; 4953999Sfujita 5053999Sfujita #define MAXCTLRS 16 /* Size of HW table (arbitrary) */ 5153999Sfujita #define MAXSLAVES 8 /* Slaves per controller (HPIB/SCSI limit) */ 5253999Sfujita 5353999Sfujita struct hp_hw { 5453999Sfujita caddr_t hw_pa; /* physical address of control space */ 5553999Sfujita int hw_size; /* size of control space */ 5653999Sfujita caddr_t hw_kva; /* kernel virtual address of control space */ 5753999Sfujita short hw_id; /* HW returned id */ 5853999Sfujita short hw_secid; /* secondary HW id (displays) */ 5953999Sfujita short hw_type; /* type (defined below) */ 6053999Sfujita short hw_sc; /* select code (if applicable) */ 6153999Sfujita }; 6253999Sfujita 6353999Sfujita /* bus types */ 6453999Sfujita #define B_MASK 0xE000 6553999Sfujita #define B_DIO 0x2000 6653999Sfujita #define B_DIOII 0x4000 6753999Sfujita #define B_VME 0x6000 6853999Sfujita /* controller types */ 6953999Sfujita #define C_MASK 0x8F 7053999Sfujita #define C_FLAG 0x80 7153999Sfujita #define C_HPIB 0x81 7253999Sfujita #define C_SCSI 0x82 7353999Sfujita #define C_VME 0x83 7453999Sfujita /* device types (controllers with no slaves) */ 7553999Sfujita #define D_MASK 0x8F 7653999Sfujita #define D_BITMAP 0x01 7753999Sfujita #define D_LAN 0x02 7853999Sfujita #define D_FPA 0x03 7953999Sfujita #define D_KEYBOARD 0x04 8053999Sfujita #define D_COMMDCA 0x05 8153999Sfujita #define D_COMMDCM 0x06 8253999Sfujita #define D_COMMDCL 0x07 8353999Sfujita #define D_PPORT 0x08 8453999Sfujita #define D_SIO 0x09 8556875Sakito #define D_BMC 0x0A 8653999Sfujita #define D_MISC 0x7F 8753999Sfujita 8853999Sfujita #define HW_ISCTLR(hw) ((hw)->hw_type & C_FLAG) 8953999Sfujita #define HW_ISDIOII(hw) ((hw)->hw_type & B_DIOII) 9053999Sfujita #define HW_ISHPIB(hw) (((hw)->hw_type & C_MASK) == C_HPIB) 9153999Sfujita #define HW_ISSCSI(hw) (((hw)->hw_type & C_MASK) == C_SCSI) 9253999Sfujita #define HW_ISDEV(hw,d) (((hw)->hw_type & D_MASK) == (d)) 9353999Sfujita 9453999Sfujita #ifdef KERNEL 9553999Sfujita extern struct hp_hw sc_table[]; 9653999Sfujita extern struct hp_ctlr hp_cinit[]; 9753999Sfujita extern struct hp_device hp_dinit[]; 9853999Sfujita extern caddr_t sctova(), sctopa(), iomap(); 9953999Sfujita #endif 100