a_status_t __adf_nbuf_map_single( adf_os_device_t osdev, adf_nbuf_t buf, adf_os_dma_dir_t dir) { u_int32_t paddr_lo; /* tempory hack for simulation */ #ifdef A_SIMOS_DEVHOST NBUF_MAPPED_PADDR_LO(buf) = paddr_lo = (u_int32_t) buf->data; return A_STATUS_OK; #else /* assume that the OS only provides a single fragment */ #ifdef CONFIG_COMCERTO_CUSTOM_SKB_LAYOUT if (buf->mspd_data) { int len = buf->len - buf->mspd_len; buf->mspd_ofst -= len; buf->mspd_len += len; NBUF_MAPPED_PADDR_LO(buf) = paddr_lo = dma_map_single(osdev->dev, buf->mspd_data + buf->mspd_ofst, buf->mspd_len, dir); } else #endif NBUF_MAPPED_PADDR_LO(buf) = paddr_lo = dma_map_single(osdev->dev, buf->data, UNI_SKB_END_POINTER(buf) - buf->data, dir); return dma_mapping_error(osdev->dev, paddr_lo) ? A_STATUS_FAILED : A_STATUS_OK; #endif }
void __adf_nbuf_unmap_nbytes_single( adf_os_device_t osdev, adf_nbuf_t buf, adf_os_dma_dir_t dir, int nbytes) { #if !defined(A_SIMOS_DEVHOST) if (0 == NBUF_MAPPED_PADDR_LO(buf)) { printk("ERROR: NBUF mapped physical address is NULL\n"); return; } dma_unmap_single(osdev->dev, NBUF_MAPPED_PADDR_LO(buf), nbytes, dir); #endif }
void __adf_nbuf_unmap_single( adf_os_device_t osdev, adf_nbuf_t buf, adf_os_dma_dir_t dir) { #if !defined(A_SIMOS_DEVHOST) if (0 == NBUF_MAPPED_PADDR_LO(buf)) { printk("ERROR: NBUF mapped physical address is NULL\n"); return; } #ifdef CONFIG_COMCERTO_CUSTOM_SKB_LAYOUT if (buf->mspd_data) dma_unmap_single(osdev->dev, NBUF_MAPPED_PADDR_LO(buf), buf->mspd_len, dir); else #endif dma_unmap_single(osdev->dev, NBUF_MAPPED_PADDR_LO(buf), UNI_SKB_END_POINTER(buf) - buf->data, dir); #endif }
void __adf_nbuf_unmap_single( adf_os_device_t osdev, adf_nbuf_t buf, adf_os_dma_dir_t dir) { #if !defined(A_SIMOS_DEVHOST) dma_unmap_single(osdev->dev, NBUF_MAPPED_PADDR_LO(buf), skb_end_pointer(buf) - buf->data, dir); #endif /* #if !defined(A_SIMOS_DEVHOST) */ }
a_status_t __adf_nbuf_map_nbytes_single( adf_os_device_t osdev, adf_nbuf_t buf, adf_os_dma_dir_t dir, int nbytes) { u_int32_t paddr_lo; /* tempory hack for simulation */ #ifdef A_SIMOS_DEVHOST NBUF_MAPPED_PADDR_LO(buf) = paddr_lo = (u_int32_t) buf->data; return A_STATUS_OK; #else /* assume that the OS only provides a single fragment */ NBUF_MAPPED_PADDR_LO(buf) = paddr_lo = dma_map_single(osdev->dev, buf->data, nbytes, dir); return dma_mapping_error(osdev->dev, paddr_lo) ? A_STATUS_FAILED : A_STATUS_OK; #endif }