/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright 2018 - 2020 Broadcom .
*/
#ifndef BCM_VK_SG_H
#define BCM_VK_SG_H
#include <linux/dma-mapping.h>
struct bcm_vk_dma {
/* for userland buffer */
struct page **pages;
int nr_pages;
/* common */
dma_addr_t handle;
/*
* sglist is of the following LE format
* [ U32 ] num_sg = number of sg addresses ( N )
* [ U32 ] totalsize = totalsize of data being transferred in sglist
* [ U32 ] size [ 0 ] = size of data in address0
* [ U32 ] addr_l [ 0 ] = lower 32 - bits of address0
* [ U32 ] addr_h [ 0 ] = higher 32 - bits of address0
* . .
* [ U32 ] size [ N - 1 ] = size of data in addressN - 1
* [ U32 ] addr_l [ N - 1 ] = lower 32 - bits of addressN - 1
* [ U32 ] addr_h [ N - 1 ] = higher 32 - bits of addressN - 1
*/
u32 *sglist;
#define SGLIST_NUM_SG 0
#define SGLIST_TOTALSIZE 1
#define SGLIST_VKDATA_START 2
int sglen; /* Length (bytes) of sglist */
int direction;
};
struct _vk_data {
u32 size; /* data size in bytes */
u64 address; /* Pointer to data */
} __packed;
/*
* Scatter - gather DMA buffer API .
*
* These functions provide a simple way to create a page list and a
* scatter - gather list from userspace address and map the memory
* for DMA operation .
*/
int bcm_vk_sg_alloc(struct device *dev,
struct bcm_vk_dma *dma,
int dir,
struct _vk_data *vkdata,
int num);
int bcm_vk_sg_free(struct device *dev, struct bcm_vk_dma *dma, int num,
int *proc_cnt);
#endif
Messung V0.5 in Prozent C=86 H=100 G=93
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland