I would appreciate any donations. Wishlist or send e-mail type donations to maekawa AT daemon-systems.org.
TC(9) Kernel Developer's Manual TC(9) NAME TC, tc_intr_establish, tc_intr_disestablish, tc_intr_evcnt. tc_mb, tc_wmb, tc_syncbus, tc_badaddr, TC_DENSE_TO_SPARSE, TC_PHYS_TO_UNCACHED -- TURBOchannel bus SYNOPSIS #include <sys/bus.h> #include <dev/tc/tcvar.h> #include <dev/tc/tcdevs.h> void tc_intr_establish(struct device *dev, void *cookie, int level, int (*handler)(void *), void *arg); void tc_intr_disestablish(struct device *dev, void *cookie); const struct evcnt * tc_intr_evcnt(struct device *dev, void *cookie); void tc_mb(); void tc_wmb(); void tc_syncbus(); int tc_badaddr(tc_addr_t tcaddr); tc_addr_t TC_DENSE_TO_SPARSE(tc_addr_t addr); tc_addr_t TC_PHYS_TO_UNCACHED(tc_addr_t addr); DESCRIPTION The TC device provides support for the DEC TURBOchannel bus found on all DEC TURBOchannel machines with MIPS (DECstation 5000 series, excluding the 5000/200) and Alpha (3000-series) systems. TURBOchannel is a 32-bit wide synchronous DMA-capable bus, running at 25 MHz on higher-end machines and at 12.5 MHz on lower-end machines. DATA TYPES Drivers for devices attached to the TURBOchannel bus will make use of the following data types: struct tc_attach_args A structure use to inform the driver of TURBOchannel bus properties. It contains the following members: bus_space_tag_t ta_memt; bus_dma_tag_t ta_dmat; char ta_modname[TC_ROM_LLEN+1]; u_int ta_slot; tc_offset_t ta_offset; tc_addr_t ta_addr; void *ta_cookie; u_int ta_busspeed; The ta_busspeed member specifies the TURBOchannel bus speed and is useful for time-related functions. Values values are TC_SPEED_12_5_MHZ for the 12.5 MHz bus and TC_SPEED_25_MHZ for the 50 MHz bus. FUNCTIONS tc_intr_establish(dev, cookie, level, handler, arg) Establish an interrupt handler with device dev for the interrupt described completely by cookie, the value passed to the driver in the ta_cookie member of the tc_attach_args structure. The priority of the interrupt is specified by level. When the interrupt occurs the function handler is called with argument arg. tc_intr_disestablish(dev, cookie) Dis-establish the interrupt handler with device dev for the interrupt described completely cookie. tc_intr_evcnt(dev, cookie) Do interrupt event counting with device dev for the event described completely by cookie. tc_mb() A read/write memory barrier. Any CPU-to-memory reads/writes before the barrier must complete before any CPU-to-memory reads/writes after it. tc_wmb() A write memory barrier. Any CPU-to-memory writes before the barrier must complete before any CPU-to-memory writes after it. tc_syncbus() Synchronise writes on the TURBOchannel bus by ensuring CPU writes are propagated across the TURBOchannel bus. tc_badaddr(tcaddr) Returns non-zero if the given address tcaddr is invalid. TC_DENSE_TO_SPARSE(addr) Convert the given physical address addr in TURBOchannel dense space to the corresponding address in TURBOchannel sparse space. TC_PHYS_TO_UNCACHED(addr) Convert the given system memory physical address addr to the physical address of the corresponding region that is not cached. AUTOCONFIGURATION The TURBOchannel bus is a direct-connection bus. During autoconfiguration, the parent specifies the name of the found TURBOchannel module into the ta_modname member of the tc_attach_args structure. Drivers should match on this name. DMA SUPPORT The TURBOchannel bus supports 32-bit, bidirectional DMA transfers. Support is provided by the standard bus_dma(9) interface. CODE REFERENCES The TURBOchannel subsystem itself is implemented within the file sys/dev/tc/tc_subr.c. Machine-dependent portions can be found in sys/arch/<arch>/tc/tcbus.c. SEE ALSO tc(4), autoconf(9), bus_dma(9), bus_space(9), driver(9) NetBSD 7.1.2 October 7, 2001 NetBSD 7.1.2