1*7cf29912Scegger /* $NetBSD: tcdsvar.h,v 1.6 2009/05/12 14:47:04 cegger Exp $ */ 21de4ec68Snisimura 31de4ec68Snisimura /* 41de4ec68Snisimura * Copyright (c) 1995, 1996 Carnegie-Mellon University. 51de4ec68Snisimura * All rights reserved. 61de4ec68Snisimura * 71de4ec68Snisimura * Author: Chris G. Demetriou 81de4ec68Snisimura * 91de4ec68Snisimura * Permission to use, copy, modify and distribute this software and 101de4ec68Snisimura * its documentation is hereby granted, provided that both the copyright 111de4ec68Snisimura * notice and this permission notice appear in all copies of the 121de4ec68Snisimura * software, derivative works or modified versions, and any portions 131de4ec68Snisimura * thereof, and that both notices appear in supporting documentation. 141de4ec68Snisimura * 151de4ec68Snisimura * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 161de4ec68Snisimura * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 171de4ec68Snisimura * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 181de4ec68Snisimura * 191de4ec68Snisimura * Carnegie Mellon requests users of this software to return to 201de4ec68Snisimura * 211de4ec68Snisimura * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 221de4ec68Snisimura * School of Computer Science 231de4ec68Snisimura * Carnegie Mellon University 241de4ec68Snisimura * Pittsburgh PA 15213-3890 251de4ec68Snisimura * 261de4ec68Snisimura * any improvements or extensions that they make and grant Carnegie the 271de4ec68Snisimura * rights to redistribute these changes. 281de4ec68Snisimura */ 291de4ec68Snisimura 301de4ec68Snisimura struct tcds_slotconfig { 311de4ec68Snisimura /* 321de4ec68Snisimura * Bookkeeping information 331de4ec68Snisimura */ 341de4ec68Snisimura int sc_slot; 351de4ec68Snisimura 361de4ec68Snisimura bus_space_tag_t sc_bst; /* to frob TCDS regs */ 371de4ec68Snisimura bus_space_handle_t sc_bsh; 381de4ec68Snisimura 3918db93c7Sperry int (*sc_intrhand)(void *); /* intr. handler */ 401de4ec68Snisimura void *sc_intrarg; /* intr. handler arg. */ 411de4ec68Snisimura struct evcnt sc_evcnt; /* intr. count */ 421df3ced1Snisimura char sc_name[8]; /* ev_name */ 431de4ec68Snisimura 441de4ec68Snisimura /* 451de4ec68Snisimura * Sets of bits in TCDS CIR and IMER that enable/check 461de4ec68Snisimura * various things. 471de4ec68Snisimura */ 481de4ec68Snisimura u_int32_t sc_resetbits; 491de4ec68Snisimura u_int32_t sc_intrmaskbits; 501de4ec68Snisimura u_int32_t sc_intrbits; 511de4ec68Snisimura u_int32_t sc_dmabits; 521de4ec68Snisimura u_int32_t sc_errorbits; 531de4ec68Snisimura 541de4ec68Snisimura /* 551de4ec68Snisimura * Offsets to slot-specific DMA resources. 561de4ec68Snisimura */ 571de4ec68Snisimura bus_size_t sc_sda; 581de4ec68Snisimura bus_size_t sc_dic; 591de4ec68Snisimura bus_size_t sc_dud0; 601de4ec68Snisimura bus_size_t sc_dud1; 611de4ec68Snisimura }; 621de4ec68Snisimura 631de4ec68Snisimura struct tcdsdev_attach_args { 641de4ec68Snisimura bus_space_tag_t tcdsda_bst; /* bus space tag */ 651de4ec68Snisimura bus_space_handle_t tcdsda_bsh; /* bus space handle */ 661de4ec68Snisimura bus_dma_tag_t tcdsda_dmat; /* bus dma tag */ 671de4ec68Snisimura struct tcds_slotconfig *tcdsda_sc; /* slot configuration */ 681de4ec68Snisimura int tcdsda_chip; /* chip number */ 691de4ec68Snisimura int tcdsda_id; /* SCSI ID */ 701de4ec68Snisimura u_int tcdsda_freq; /* chip frequency */ 711de4ec68Snisimura int tcdsda_period; /* min. sync period */ 721de4ec68Snisimura int tcdsda_variant; /* NCR chip variant */ 731de4ec68Snisimura int tcdsda_fast; /* chip does Fast mode */ 741de4ec68Snisimura }; 751de4ec68Snisimura 761de4ec68Snisimura /* 771de4ec68Snisimura * TCDS functions. 781de4ec68Snisimura */ 79*7cf29912Scegger void tcds_intr_establish(device_t, int, int (*)(void *), void *); 80*7cf29912Scegger void tcds_intr_disestablish(device_t, int); 8118db93c7Sperry void tcds_dma_enable(struct tcds_slotconfig *, int); 8218db93c7Sperry void tcds_scsi_enable(struct tcds_slotconfig *, int); 8318db93c7Sperry int tcds_scsi_iserr(struct tcds_slotconfig *); 8418db93c7Sperry int tcds_scsi_isintr(struct tcds_slotconfig *, int); 8518db93c7Sperry void tcds_scsi_reset(struct tcds_slotconfig *); 86