DDI_DEVICE_COPY(9F)     Kernel Functions for Drivers     DDI_DEVICE_COPY(9F)
NAME
       ddi_device_copy - copy data from one device register to another
       device register
SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>       
int ddi_device_copy(
ddi_acc_handle_t src_handle, 
caddr_t src_addr,            
ssize_t src_advcnt, 
ddi_acc_handle_t dest_handle,            
caddr_t dest_addr, 
ssize_t dest_advcnt,            
size_t bytecount, 
uint_t dev_datasz);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       src_handle                       The data access handle of the source device.       
src_addr                       Base data source address.       
src_advcnt                       Number of  
dev_datasz units to advance on every
                       access.       
dest_handle                       The data access handle of the destination device.       
dest_addr                       Base data destination address.       
dest_advcnt                       Number of  
dev_datasz units to advance on every
                       access.       
bytecount                       Number of bytes to transfer.       
dev_datasz                       The size of each data word. Possible values are
                       defined as:                       
DDI_DATA_SZ01_ACC                                             1 byte data size                       
DDI_DATA_SZ02_ACC                                             2 bytes data size                       
DDI_DATA_SZ04_ACC                                             4 bytes data size                       
DDI_DATA_SZ08_ACC                                             8 bytes data size
DESCRIPTION
       ddi_device_copy() copies  
bytecount bytes from the source  address,       
src_addr, to the destination address,  
dest_addr. The attributes
       encoded in the access handles, 
src_handle and 
dest_handle, govern how
       data is actually copied from the  source to the destination. Only
       matching data sizes between the source and destination are supported.
       Data will automatically be translated to maintain a consistent  view
       between the source and the destination. The translation may  involve
       byte-swapping if the source and the destination devices  have
       incompatible endian characteristics.
       The  
src_advcnt and  
dest_advcnt arguments specifies the number of       
dev_datasz units to advance with each access to the device addresses.
       A value of  
0 will use the same source and destination device address
       on every access. A positive value increments the corresponding device
       address by certain number of data size units in the next access.  On
       the other hand, a negative value decrements the device address.
       The 
dev_datasz argument determines the size of the data word on each
       access. The data size must be the same between the source and
       destination.
RETURN VALUES
       ddi_device_copy() returns:       
DDI_SUCCESS                       Successfully transferred the data.       
DDI_FAILURE                       The byte count is not a multiple 
dev_datasz.
CONTEXT
       ddi_device_copy() can be called from user, kernel, or interrupt
       context.
SEE ALSO
       ddi_regs_map_free(9F), 
ddi_regs_map_setup(9F)       Writing Device Drivers                              November 15, 1996          DDI_DEVICE_COPY(9F)