VME(9) | Kernel Developer's Manual | VME(9) |
int
vme_probe(void *vc, vme_addr_t vmeaddr, vme_size_t len, vme_am_t am, vme_datasize_t datasize, int (*callback)(), void *arg);
int
vme_space_map(void *vc, vme_addr_t vmeaddr, vme_size_t len, vme_am_t am, vme_datasize_t datasize, vme_swap_t swap, bus_space_tag_t *tag, bus_space_handle_t *handle, vme_mapresc_t *resc);
void
vme_space_unmap(void *vc, vme_mapresc_t resc);
int
vme_intr_map(void *vc, int level, int vector, vme_intr_handle_t *handlep);
void *
vme_intr_establish(void *vc, vme_intr_handle_t handle, int prio, int (*func)(void *), void *arg);
void
vme_intr_disestablish(void *vc, void *cookie);
const struct evcnt *
vme_intr_evcnt(void *vc, vme_intr_handle_t handle);
int
vme_dmamap_create(void *vc, vme_size_t size, vme_am_t am, vme_datasize_t datasize, vme_swap_t swap, int nsegs, vme_size_t segsz, vme_addr_t bound, int flags, bus_dmamap_t *map);
void
vme_dmamap_destroy(void *vc, bus_dmamap_t map);
int
vme_dmamem_alloc(void *vc, vme_size_t size, vme_am_t am, vme_datasize_t datasize, vme_swap_t swap, bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags);
void
vme_dmamem_free(void *vc, bus_dma_segment_t *segs, int nsegs);
int
vme_space_alloc(struct vmebus_softc *tag, vme_addr_t addr, vme_size_t size, vme_am_t ams);
void
vme_space_free(void *vc, vme_addr_t addr, vme_size_t size, vme_am_t ams);
int
vme_space_get(void *vc, vme_size_t size, vme_am_t ams, u_long align, vme_addr_t *addr);
The VME bus supports 8, 16, and 32-bit transfers over non-multiplexed 32-bit data and address paths. The latest revisions allow 64-bit, multiplexed transfers. It supports asynchronous, fully handshaken transfers at speeds up to 80 MB/sec. It has a master-slave architecture, encouraging multiprocessing and supports up to seven interrupt levels.
vme_addr_t offset; vme_size_t size; vme_am_t am;
vme_chipset_tag_t va_vct; bus_dma_tag_t va_bdt; int ivector; int ilevel; int numcfranges; struct vme_range r[VME_MAXCFRANGES];
During driver attach the driver should also map the address ranges using vme_space_map(). The interrupt locators in struct vme_attach_args are used by vme_intr_map() and vme_intr_establish().
June 12, 2001 | NetBSD 6.1 |