|
Yes, I found the hint correct.
The fact is that PDC pointers are DMA pointer, that are not concerned vith
operating system virtual address !
If
vector = (int *)kmalloc(16,GPP_KERNEL|_GPP_DMA):
// pSSC_>SSC_TPR = (AT91_REG)(vector); wrong assignment !
So you have to use the virt_to_bus function to set the PDC address:
pSSC_>SSC_TPR = (AT91_REG)virt_to_bus(vector);
pSSC_>SSC_TCR = 16;
vector = (int *)kmalloc(16,GPP_KERNEL|_GPP_DMA):
Once this is done, TD1 actually sends out data, as soon TF1/TK1 start.
Hope this help.
As soon I arrange the PDC update by means of IRQ - in order to have continuous output- I can send you the driver source of the application example..
|