1c07d497bSakito /* 2c07d497bSakito * Copyright (c) 1992 OMRON Corporation. 3*28a62f4dSbostic * Copyright (c) 1992, 1993 4*28a62f4dSbostic * The Regents of the University of California. All rights reserved. 5c07d497bSakito * 6c07d497bSakito * This code is derived from software contributed to Berkeley by 7c07d497bSakito * OMRON Corporation. 8c07d497bSakito * 9c07d497bSakito * %sccs.include.redist.c% 10c07d497bSakito * 11*28a62f4dSbostic * @(#)device.h 8.1 (Berkeley) 06/10/93 12c07d497bSakito */ 13c07d497bSakito 14c07d497bSakito struct driver { 15c07d497bSakito int (*d_init)(); 16c07d497bSakito char *d_name; 17c07d497bSakito int (*d_start)(); 18c07d497bSakito int (*d_go)(); 19c07d497bSakito int (*d_intr)(); 20c07d497bSakito int (*d_done)(); 21c07d497bSakito }; 22c07d497bSakito 23c07d497bSakito struct hp_ctlr { 24c07d497bSakito struct driver *hp_driver; 25c07d497bSakito int hp_unit; 26c07d497bSakito int hp_alive; 27c07d497bSakito char *hp_addr; 28c07d497bSakito int hp_flags; 29c07d497bSakito int hp_ipl; 30c07d497bSakito }; 31c07d497bSakito 32c07d497bSakito struct hp_device { 33c07d497bSakito struct driver *hp_driver; 34c07d497bSakito struct driver *hp_cdriver; 35c07d497bSakito int hp_unit; 36c07d497bSakito int hp_ctlr; 37c07d497bSakito int hp_slave; 38c07d497bSakito char *hp_addr; 39c07d497bSakito int hp_dk; 40c07d497bSakito int hp_flags; 41c07d497bSakito int hp_alive; 42c07d497bSakito int hp_ipl; 43c07d497bSakito }; 44c07d497bSakito 45c07d497bSakito struct devqueue { 46c07d497bSakito struct devqueue *dq_forw; 47c07d497bSakito struct devqueue *dq_back; 48c07d497bSakito int dq_ctlr; 49c07d497bSakito int dq_unit; 50c07d497bSakito int dq_slave; 51c07d497bSakito struct driver *dq_driver; 52c07d497bSakito }; 53c07d497bSakito 54c07d497bSakito struct hp_hw { 55c07d497bSakito char *hw_addr; /* physical address of registers */ 56c07d497bSakito short hw_sc; /* select code (if applicable) */ 57c07d497bSakito short hw_type; /* type (defined below) */ 58c07d497bSakito short hw_id; /* HW returned id */ 59c07d497bSakito short hw_id2; /* secondary HW id (displays) */ 60c07d497bSakito char *hw_name; /* HP product name */ 61c07d497bSakito }; 62c07d497bSakito 63c07d497bSakito #define MAX_CTLR 16 /* Totally arbitrary */ 64c07d497bSakito #define MAXSLAVES 8 /* Currently the HPIB limit */ 65c07d497bSakito 66c07d497bSakito #define WILD_CARD_CTLR 0 67c07d497bSakito 68c07d497bSakito /* A controller is a card which can have one or more slaves attached */ 69c07d497bSakito #define CONTROLLER 0x10 70c07d497bSakito #define HPIB 0x16 71c07d497bSakito #define SCSI 0x17 72c07d497bSakito #define VME 0x18 73c07d497bSakito #define FLINK 0x19 74c07d497bSakito 75c07d497bSakito /* Slaves are devices which attach to controllers, e.g. disks, tapes */ 76c07d497bSakito #define RD 0x2a 77c07d497bSakito #define PPI 0x2b 78c07d497bSakito #define CT 0x2c 79c07d497bSakito 80c07d497bSakito /* These are not controllers, but may have their own HPIB address */ 81c07d497bSakito #define BITMAP 1 82c07d497bSakito #define NET 2 83c07d497bSakito #define FPA 4 84c07d497bSakito #define MISC 5 85c07d497bSakito #define KEYBOARD 6 86c07d497bSakito #define COMMDCA 7 87c07d497bSakito #define COMMDCM 8 88c07d497bSakito #define COMMDCL 9 89c07d497bSakito #define PPORT 10 90c07d497bSakito #define SIO 11 91c07d497bSakito 92c07d497bSakito #ifdef KERNEL 93c07d497bSakito extern struct hp_ctlr hp_cinit[]; 94c07d497bSakito extern struct hp_device hp_dinit[]; 95c07d497bSakito extern struct hp_hw sc_table[]; 96c07d497bSakito #endif 97