Beispiel #1
0
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
}
Beispiel #2
0
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
}
Beispiel #3
0
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
}
Beispiel #4
0
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) */
}
Beispiel #5
0
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
}