vmeio_intr_disconnect man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX logo
[printable version]



vmeio(D3)							     vmeio(D3)

NAME
     vmeio_piomap_alloc, vmeio_piomap_addr, vmeio_piomap_done,
     vmeio_piomap_free, vmeio_pio_bcopyin, vmeio_pio_bcopyout,
     vmeio_dmamap_alloc, vmeio_dmamap_addr, vmeio_dmamap_list,
     vmeio_dmamap_done, vmeio_dmamap_free, vmeio_intr_alloc,
     vmeio_intr_vector_get, vmeio_intr_connect, vmeio_intr_disconnect,
     vmeio_intr_free, - VMEbus device driver API

SYNOPSIS
     #include <sys/vme/vmeio.h>

   Programmed IO
     vmeio_piomap_t vmeio_piomap_alloc(vertex_hdl_t vme_conn,
				       device_desc_t dev_desc,
				       vmeio_space_t space,
				       iopaddr_t vmeaddr,
				       size_t byte_count,
				       size_t byte_count_max,
				       unsigned flags);

     caddr_t vmeio_piomap_addr(vmeio_piomap_t piomap,
			       iopaddr_t vmeaddr,
			       size_t byte_count);

     void vmeio_piomap_done(vmeio_piomap_t piomap);

     void vmeio_piomap_free(vmeio_piomap_t piomap);

     size_t vmeio_pio_bcopyin(vmeio_piomap_t piomap,
			      iopaddr_t vmeaddr,
			      caddr_t dest_sys_addr,
			      int byte_count,
			      int itmsz,
			      int flags);

     int vmeio_pio_bcopyout(vmeio_piomap_t piomap,
			    iopaddr_t vmeaddr,
			    caddr_t src_sys_addr,
			    size_t byte_count,
			    int itmsz,
			    int flags);

   Arguments
     vme_conn	  VMEbus connection point.

     dev_desc	  Device descriptor, usually 0.

     space	  Type of the VMEbus space.

     vmeaddr	  The offset within the space.

									Page 1

vmeio(D3)							     vmeio(D3)

     byte_count	  Size of the mapping.

     byte_count_max  Maximum size of a single mapping.

     flags	  User specifiable options.

     piomap	  The mapping acquired by the vmeio_piomap_alloc().

     dest_sys_addr   The system address which the data is copied to.

     src_sys_addr    The system address which the data is copied from.

     itmsz	  The unit of transfer.

   Direct Memory Access
     vmeio_dmamap_t vmeio_dmamap_alloc(vertex_hdl_t vme_conn,
				       device_desc_t dev_desc,
				       vmeio_space_t space,
				       size_t byte_count_max,
				       unsigned flags);

     iopaddr_t vmeio_dmamap_addr(vmeio_dmamap_t dmamap,
				 paddr_t paddr,
				 size_t byte_count);

     alenlist_t vmeio_dmamap_list(vmeio_dmamap_t dmamap,
				  alenlist_t phys_alenlist,
				  unsigned flags);

     void vmeio_dmamap_done(vmeio_dmamap_t dmamap);

     void vmeio_dmamap_free(vmeio_dmamap_t dmamap);

   Arguments
     vme_conn	  VMEbus connection point.

     dev_desc	  Device descriptor, usually zero.

     space	  Type of the VMEbus space.

     byte_count_max  Maximum size of a single mapping.

     dmamap	  The mapping resources aquired through vmeio_dmamap_alloc().

     paddr	  Physical address.

     byte_count	  Size of the mapping.

     phys_alenlist   The list of pairs of physical address and length.

									Page 2

vmeio(D3)							     vmeio(D3)

     flags	  Specifying attributes of the DMA mapping.

   Interrupt Handling
     vmeio_intr_t vmeio_intr_alloc(vertex_hdl_t vme_conn,
				   device_desc_t dev_desc,
				   vmeio_intr_vector_t vec,
				   vmeio_intr_level_t level,
				   vertex_hdl_t owner_dev,
				   unsigned flags);

     vmeio_intr_vector_t vmeio_intr_vector_get(vmeio_intr_t intr)

     int vmeio_intr_connect(vmeio_intr_t intr,
			    intr_func_t intr_func,
			    intr_arg_t intr_arg,
			    void *thread);

     void vmeio_intr_disconnect(vmeio_intr_t intr);

     void vmeio_intr_free(vmeio_intr_t intr);

   Arguments
     vme_conn	  VMEbus connection point.

     dev_desc	  Device descriptor, usually zero.

     vec	  Interrupt vector number.

     level	  VMEbus Interrupt level.

     owner_dev	  The vertex used to print messages about this particular
		  interrupt, usually zero.

     flags	  User specifiable options.

     intr	  Interrupt handle acquired by vmeio_intr_alloc().

     intr_func	  The function used for interrupt service.

     intr_arg	  The argument passed to intr_func.

DESCRIPTION
     On Origin and Onyx2 systems, vmeio provides a set of routines for VMEbus
     kernel device drivers to set up services for their devices.  These
     services include:

     o	 registering all instances of the device in the system.

     o	 constructing CPU addresses that the device can use to do PIO to the
	 device.

									Page 3

vmeio(D3)							     vmeio(D3)

     o	 constructing VMEbus addresses that the device can use to do DMA.

     o	 arranging for a function to be called when the device requests
	 interrupt service.

     o	 arranging for a function to be called when an error occurs during PIO
	 or DMA operations on the device.

   Programmed IO
     vmeio_piomap_alloc() allocates the PIO resources for the given
     requirement. Return the handle of the PIO resources if success, 0
     otherwise. The VMEbus specific flags include VME_PIOMAP_FIXED,
     VME_PIOMAP_UNFIXED, and VME_DEBUG. VME_DEBUG is used to do more integrity
     checking. Possibly, device driver writers can turn on this mode to sanity
     check their drivers a bit, with some degree of performance degradation.

     vmeio_piomap_addr() establishes a mapping from a VME bus address range to
     a kernel virtual address range using the allocated PIO resources. Return
     the kernel virtual address if success, 0 if otherwise.

     vmeio_piomap_done() notifies the system that a driver is done with using
     the piomap resources obtained by the earlier vmeio_piomap_addr() call.

     vmeio_piomap_free() frees the PIO mapping resources.

     vmeio_pio_bcopyin() copies data from the device buffer to the system
     memory efficiently. The unit of the transfer can be 1 byte, 2 bytes, 4
     bytes, and 8 bytes. Return total bytes of successful transfer, -1 if
     function fails.

     vmeio_pio_bcopyout() copies data from the system memory to the device
     buffer efficiently. The unit of the transfer can be 1 byte, 2 bytes, 4
     bytes, and 8 bytes. Return total bytes of successful transfer, -1 if
     function fails.

   Direct Memory Access
     vmeio_dmamap_alloc() allocates mapping resources needed for DMA. Return
     the handle of the new DMA map if success, 0 if failed. As described
     before, VME_DEBUG can be used as a flag passed to have stronger integrity
     checking over the life-span of the DMA map.  Flags available for this
     call are:

     VMEIO_DMA_DATA
	     specifies that the DMA channel will be used for data streams.
	     Prefetch and postwrite are enabled on this mapping.

     VMEIO_DMA_CMD
	     specifies that the DMA channel will be used for command
	     information. Prefetch and postwrite are disabled on this mapping.

									Page 4

vmeio(D3)							     vmeio(D3)

     vmeio_dmamap_addr() establishes a mapping from a physical address range
     to a VMEbus address range by using the allocated DMA resources. Return
     VMEbus address mapped to the physical addr range if success,
     VMEIO_DMA_INVALID_ADDR otherwise.

     vmeio_dmamap_list() establishes the mapping from a list of (physical
     address, length) to a list of (VMEbus address, length). Return the list
     of (VMEbus address, length) if success, 0 if failed. The returned list
     should be freed by the caller. Flags avalable for this call are:

     VMEIO_INPLACE
	     requests that the list be modified in place when list operations
	     are performed.

     VMEIO_NOSLEEP
	     requests that the VMEbus provider not to sleep in resource
	     allocation and failure should be returned if sleep is necessary
	     for getting the resources.

     vmeio_dmamap_done() notifies the system that a driver is done with using
     the DMA mapping resource.

     vmeio_dmamap_free() frees the DMA resources acquired by
     vmeio_dmamap_alloc() call.

   Interrupt Handling
     vmeio_intr_alloc() allocates interrupt resources. This function is
     usually called in <drv>_edtinit().	 In some cases, users have a VME
     device which comes with a fixed interrupt vector number, or users like to
     fix the interrupt vector for their devices. If so, they can specify the
     vector number on the VECTOR line statement. And they can declare the
     vector number here. In most of cases, users just need a vector, they can
     pass VME_INTR_VECTOR_ANY in the vmeio_intr_vector_t field. Here,
     VME_DEBUG can be specified as a flag to help debugging.

     vmeio_intr_vector_get() retrieves interrupt vector number from the
     interrupt object. Usually, people will ask the system dynamically assign
     an interrupt vector so that they can associate their interrupt handler.
     They need this function to find out what interrupt vector number is
     assigned to them so that they can program interrupt registers of their
     devices. Sometimes, the driver already knows the vector number since they
     have declared the fixed ones in the configuration file.

     vmeio_intr_connect() associates a software interrupt handler to the
     hardware interrupt resources. Return 0 if success, -1 if failure.

     vmeio_intr_disconnect() disassociates the interrupt handler from the
     specified interrupt.

     vmeio_intr_free() frees the interrupt resources. Usually, the interrupt
     vector allocated for the device is freed here.

									Page 5

vmeio(D3)							     vmeio(D3)

FILES
     /var/sysgen/system
     /var/sysgen/master.d
     /var/sysgen/boot

SEE ALSO
     "IRIX Device Driver Programmer's Guide"

									Page 6

[top]

List of man pages available for IRIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net