coherent_dma_mask :用来分配连续一致性dma。 dma_mask:在dma_map_single->dma_map_page,dma_capable用。 先看默认设置。后续可以通过pci_set_dma_mask/pci_set_consistent_dma_mask分别设置 设置: int pci_setup_device(struct pci_dev *dev) { u32 class; u16 cmd; u8 hdr_type; int pos = 0; stru...
staticintetnaviv_pdev_probe(struct platform_device *pdev){structdevice*dev= &pdev->dev;structdevice_node*node=dev->of_node;structcomponent_match*match=NULL;dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));if(node) {structdevice_node*core_node;inti;for(i =0; ; i++) { core_nod...
流映射的设置是通过调用 dma_set_mask() 来执行的 int dma_set_mask(struct device *dev, u64 mask); 一致分配的设置是通过调用 dma_set_coherent_mask() 来执行的 int dma_set_coherent_mask(struct device *dev, u64 mask); 这里,dev 是指向设备的设备结构的指针,mask 是描述设备支持的地址...
dma_set_coherent_mask(struct device *dev, u64 mask) 检测该掩码是否合法,如果合法,则更新设备参数。即更新设备的寻址能力。 返回0表示成功,返回负值表示失败。 u64 dma_get_required_mask(struct device *dev) 该函数返回平台可以高效工作的掩码。通常这意味着返回掩码是可以寻址到所有内存的最小值。检查该值...
2 static inline int dma_set_coherent_mask(struct device *dev, u64 mask) 3 // 用于流式内存映射的映射范围 4 static inline int dma_set_mask(struct device *dev, u64 mask); 3.DMA映射接口 3.1一致性DMA接口 分配较大DMA buffer 1 // dev DMA控制器设备 ...
intdma_set_coherent_mask(struct device *dev, u64 mask); 这里devi为一个指向设备的指针,掩码显示与设备寻址能力对应的位。如果使用指定的mask时DMA能正常工作,则返回零。通常来说,设备数据结构是内嵌到特定总线的设备结构中的。比如一个指向PCI设备的指针为pdev->dev(pdev指向PCI设备)。 如果返回非零值,则对...
例如,可以使用dma_set_coherent_mask()来设置一致性掩码,以确保DMA传输的一致性。 3.使用合适的DMA引擎:Linux内核支持多种DMA引擎,每种DMA引擎有不同的特性和性能。选择合适的DMA引擎可以提高数据传输的效率。可以使用DMA API中的函数和宏来选择和配置DMA引擎。 4.处理中断和回调:DMA传输完成后,通常会触发一个...
dma_set_mask(structdevice *dev, u64 mask) 检查是否可能使用该掩码,并更新设备参数(如果可能)。 返回:如果成功则返回0,否则返回负错误。 int dma_set_coherent_mask(structdevice *dev, u64 mask) 检查是否可能使用该掩码,并更新设备参数(如果可能)。
int dma_set_mask(struct device *dev, u64 mask); 该掩码显示该设备能寻址能力对应的位。比如说,设备受限于24位寻址,则mask应该是0x0FFFFFF。 5. DMA映射 IOMMU在设备可访问的地址范围内规划了物理内存,使得物理上分散的缓冲区对设备来说成连续的。对IOMMU的运用需要使用到通用DMA层,而vir_to_bus函数不能...
intdma_set_mask(struct device*dev,u64 mask); 一致分配的设置是通过调用dma_set_coherent_mask()来执行的 intdma_set_coherent_mask(struct device*dev,u64 mask); 这里,dev 是指向设备的设备结构的指针,mask 是描述设备支持的地址的哪些位的位掩码。 通常,设备的设备结构嵌入在设备的总线特定设备结构中...