1 1.28 thorpej /* $NetBSD: tcvar.h,v 1.28 2021/05/07 16:55:58 thorpej Exp $ */ 2 1.1 cgd 3 1.1 cgd /* 4 1.1 cgd * Copyright (c) 1995 Carnegie-Mellon University. 5 1.1 cgd * All rights reserved. 6 1.1 cgd * 7 1.1 cgd * Author: Chris G. Demetriou 8 1.20 perry * 9 1.1 cgd * Permission to use, copy, modify and distribute this software and 10 1.1 cgd * its documentation is hereby granted, provided that both the copyright 11 1.1 cgd * notice and this permission notice appear in all copies of the 12 1.1 cgd * software, derivative works or modified versions, and any portions 13 1.1 cgd * thereof, and that both notices appear in supporting documentation. 14 1.20 perry * 15 1.20 perry * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 16 1.20 perry * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 17 1.1 cgd * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 18 1.20 perry * 19 1.1 cgd * Carnegie Mellon requests users of this software to return to 20 1.1 cgd * 21 1.1 cgd * Software Distribution Coordinator or Software.Distribution (at) CS.CMU.EDU 22 1.1 cgd * School of Computer Science 23 1.1 cgd * Carnegie Mellon University 24 1.1 cgd * Pittsburgh PA 15213-3890 25 1.1 cgd * 26 1.1 cgd * any improvements or extensions that they make and grant Carnegie the 27 1.1 cgd * rights to redistribute these changes. 28 1.1 cgd */ 29 1.1 cgd 30 1.1 cgd #ifndef __DEV_TC_TCVAR_H__ 31 1.1 cgd #define __DEV_TC_TCVAR_H__ 32 1.1 cgd 33 1.1 cgd /* 34 1.15 nisimura * Definitions for TURBOchannel autoconfiguration. 35 1.1 cgd */ 36 1.1 cgd 37 1.23 ad #include <sys/bus.h> 38 1.25 matt #include <sys/device.h> 39 1.1 cgd #include <dev/tc/tcreg.h> 40 1.5 cgd 41 1.5 cgd /* 42 1.5 cgd * Machine-dependent definitions. 43 1.5 cgd */ 44 1.1 cgd #include <machine/tc_machdep.h> 45 1.1 cgd 46 1.1 cgd /* 47 1.12 jonathan * In the long run, the following block will go completely away. 48 1.12 jonathan * For now, the MI TC code still uses the old TC_IPL_ names 49 1.12 jonathan * and not the new IPL_ names. 50 1.5 cgd */ 51 1.12 jonathan #if 1 52 1.5 cgd /* 53 1.12 jonathan * Map the new definitions to the old. 54 1.5 cgd */ 55 1.23 ad #include <sys/intr.h> 56 1.5 cgd 57 1.5 cgd #define tc_intrlevel_t int 58 1.5 cgd 59 1.5 cgd #define TC_IPL_NONE IPL_NONE 60 1.5 cgd #define TC_IPL_BIO IPL_BIO 61 1.5 cgd #define TC_IPL_NET IPL_NET 62 1.5 cgd #define TC_IPL_TTY IPL_TTY 63 1.5 cgd #define TC_IPL_CLOCK IPL_CLOCK 64 1.12 jonathan #endif /* 1 */ 65 1.5 cgd 66 1.15 nisimura struct tc_softc { 67 1.26 tsutsui device_t sc_dev; 68 1.15 nisimura 69 1.15 nisimura int sc_speed; 70 1.15 nisimura int sc_nslots; 71 1.28 thorpej const struct tc_slotdesc *sc_slots; 72 1.28 thorpej uint32_t sc_slots_used; 73 1.15 nisimura 74 1.24 cegger const struct evcnt *(*sc_intr_evcnt)(device_t, void *); 75 1.24 cegger void (*sc_intr_establish)(device_t, void *, 76 1.16 cgd int, int (*)(void *), void *); 77 1.24 cegger void (*sc_intr_disestablish)(device_t, void *); 78 1.16 cgd bus_dma_tag_t (*sc_get_dma_tag)(int); 79 1.15 nisimura }; 80 1.1 cgd 81 1.1 cgd /* 82 1.15 nisimura * Arguments used to attach TURBOchannel busses. 83 1.1 cgd */ 84 1.2 cgd struct tcbus_attach_args { 85 1.21 drochner const char *tba_busname; /* XXX should be common */ 86 1.7 cgd bus_space_tag_t tba_memt; 87 1.1 cgd 88 1.2 cgd /* Bus information */ 89 1.3 cgd u_int tba_speed; /* see TC_SPEED_* below */ 90 1.2 cgd u_int tba_nslots; 91 1.28 thorpej const struct tc_slotdesc *tba_slots; 92 1.2 cgd u_int tba_nbuiltins; 93 1.2 cgd const struct tc_builtin *tba_builtins; 94 1.20 perry 95 1.1 cgd 96 1.2 cgd /* TC bus resource management; XXX will move elsewhere eventually. */ 97 1.24 cegger const struct evcnt *(*tba_intr_evcnt)(device_t, void *); 98 1.24 cegger void (*tba_intr_establish)(device_t, void *, 99 1.16 cgd int, int (*)(void *), void *); 100 1.24 cegger void (*tba_intr_disestablish)(device_t, void *); 101 1.16 cgd bus_dma_tag_t (*tba_get_dma_tag)(int); 102 1.1 cgd }; 103 1.1 cgd 104 1.1 cgd /* 105 1.15 nisimura * Arguments used to attach TURBOchannel devices. 106 1.1 cgd */ 107 1.2 cgd struct tc_attach_args { 108 1.7 cgd bus_space_tag_t ta_memt; 109 1.11 thorpej bus_dma_tag_t ta_dmat; 110 1.5 cgd 111 1.2 cgd char ta_modname[TC_ROM_LLEN+1]; 112 1.2 cgd u_int ta_slot; 113 1.2 cgd tc_offset_t ta_offset; 114 1.2 cgd tc_addr_t ta_addr; 115 1.2 cgd void *ta_cookie; 116 1.3 cgd u_int ta_busspeed; /* see TC_SPEED_* below */ 117 1.1 cgd }; 118 1.1 cgd 119 1.1 cgd /* 120 1.15 nisimura * Description of TURBOchannel slots, provided by machine-dependent 121 1.15 nisimura * code to the TURBOchannel bus driver. 122 1.1 cgd */ 123 1.1 cgd struct tc_slotdesc { 124 1.2 cgd tc_addr_t tcs_addr; 125 1.2 cgd void *tcs_cookie; 126 1.1 cgd }; 127 1.1 cgd 128 1.1 cgd /* 129 1.15 nisimura * Description of built-in TURBOchannel devices, provided by 130 1.15 nisimura * machine-dependent code to the TURBOchannel bus driver. 131 1.1 cgd */ 132 1.1 cgd struct tc_builtin { 133 1.21 drochner const char *tcb_modname; 134 1.2 cgd u_int tcb_slot; 135 1.2 cgd tc_offset_t tcb_offset; 136 1.2 cgd void *tcb_cookie; 137 1.1 cgd }; 138 1.1 cgd 139 1.1 cgd /* 140 1.1 cgd * Interrupt establishment functions. 141 1.1 cgd */ 142 1.27 flxd int tc_checkslot(tc_addr_t, char *, struct tc_rommap **); 143 1.24 cegger void tcattach(device_t, device_t, void *); 144 1.24 cegger const struct evcnt *tc_intr_evcnt(device_t, void *); 145 1.24 cegger void tc_intr_establish(device_t, void *, int, int (*)(void *), 146 1.16 cgd void *); 147 1.24 cegger void tc_intr_disestablish(device_t, void *); 148 1.1 cgd 149 1.3 cgd /* 150 1.3 cgd * Miscellaneous definitions. 151 1.3 cgd */ 152 1.3 cgd #define TC_SPEED_12_5_MHZ 0 /* 12.5MHz TC bus */ 153 1.3 cgd #define TC_SPEED_25_MHZ 1 /* 25MHz TC bus */ 154 1.1 cgd 155 1.1 cgd #endif /* __DEV_TC_TCVAR_H__ */ 156