ARM 9 DMA access problem | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
Dear mailing list!
We are having problems getting DMA access for a PCI soundcard (ALS4000) to run
on a 2.6.6 kernel and ARM 922T processor. The DMA register is 24 bit wide
(common for DMA), we are using the following code to ensure the
functionality:
/* check, if we can restrict PCI DMA transfers to 24 bits */
if (pci_set_dma_mask(dev, 0x00ffffff) < 0 ||
pci_set_consistent_dma_mask(dev, 0x00ffffff) < 0) {
printk("<1>architecture does not support 24bit PCI busmaster DMA\n");
return -ENXIO;
}
A call to
buf = kmalloc(0x8000, GFP_ATOMIC|GFP_DMA);
should return a virtual mem address from the heap (e.g. 0xC0AD0000). We print
yout the addresses with
printk("BUS %x\n",virt_to_bus(buf));
printk("Phys %x\n",virt_to_phys(buf));
which results in
Bus 10ad0000
Phys ad0000
Now. What is the address the PCI card is seeing? The virt_to_bus or the
virt_to_phys one?
Can this address even accessed at all by the just 24 bit wide DMA register of
the card?
How else can we allocate DMA memory using 2.6.x kernel and the ARM
architecture to make it work? Could it be an AMBA Bus problem?
Thanks for hints
Jens
-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ/Etiquette: http://www.arm.linux.org.uk/armlinux/mailinglists.php
[Site Home] [IETF Annouce] [Security] [Bugtraq] [Linux] [Linux ARM Kernel] [Linux MIPS] [ECOS] [Tools] [DDR & Rambus] [Monitors]