Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
8 years ago

Mapping physical menory of MSGDMA extended descriptors with prefetch enabled

Hi All ,

We need to use around 1500 descptors for transferring data from camera sensor to system memory ( 64 bit OS ) vi MSGDMA (64 bit).

since we needed 1500 descs .. i just did

kython.sgdma_desc_pool1_phy =pci_map_single(pdev,kython.sgdma_desc_pool1_virt,MSGDMA_NUM_DESCS*(sizeof(alt_msgdma_prefetcher_extended_descriptor)),PCI_DMA_BIDIRECtional);

root_node = python.sgdma_desc_pool1_phy

/* set next descriptor registers to point to the list root-node */

IOWR_ALT_MSGDMA_PREFETCHER_NEXT_DESCRIPTOR_PTR_LOW(lower_32_bits(root_node));

IOWR_ALT_MSGDMA_PREFETCHER_NEXT_DESCRIPTOR_PTR_HIGH(upper_32_bits(root_node));

But the MSGDMA is rejecting the desc as invalid desc .We have populated the descriptor correctly .

is it because pci_map_single does not support 64 bit addressing , is there equalvaent calls for pci_map_single ???

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I don't have experience with the prefetcher of the DMA but in order to use extended descriptions you have to make sure that the hardware has that option enabled.