man.bsd.lv manual page server

Manual Page Search Parameters

TC(9) Kernel Developer's Manual TC(9)

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_UNCACHEDTURBOchannel bus

#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);

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.

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 member specifies the TURBOchannel bus speed and is useful for time-related functions. Values values are for the 12.5 MHz bus and for the 50 MHz bus.

(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 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.
(dev, cookie)
Dis-establish the interrupt handler with device dev for the interrupt described completely cookie.
(dev, cookie)
Do interrupt event counting with device dev for the event described completely by cookie.
()
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.
()
A write memory barrier. Any CPU-to-memory writes before the barrier must complete before any CPU-to-memory writes after it.
()
Synchronise writes on the TURBOchannel bus by ensuring CPU writes are propagated across the TURBOchannel bus.
(tcaddr)
Returns non-zero if the given address tcaddr is invalid.
(addr)
Convert the given physical address addr in TURBOchannel dense space to the corresponding address in TURBOchannel sparse space.
(addr)
Convert the given system memory physical address addr to the physical address of the corresponding region that is not cached.

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.

The TURBOchannel bus supports 32-bit, bidirectional DMA transfers. Support is provided by the standard bus_dma(9) interface.

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.

tc(4), autoconf(9), bus_dma(9), bus_space(9), driver(9)

October 7, 2001 NetBSD-9.2