05-11-2010 02:23 AM
I've read about rcolenbrander's PCI patch on ML510 and built my own hardware design based on xilinx wiki. But after finishing my porting for ALSA, I found that aplay returns error instead of playing sounds.
root@(none) \w # aplay /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
aplay: pcm_write:1528: write error: Input/output error
This error represents that there is a bug on irq or dma, and I detect that the linux is not catching the i8259 interrupt,
root@(none) \w # cat /proc/interrupts
7: 0 i8259 Level ALI 5451
17: 414 Xilinx Edge INTC Edge uartlite
18: 158409 Xilinx Level INTC Level systemace
What I was doing to make PCI integrated into ML410 are listed below:
1, add ip core plb46_pci 1.03a provided by Xilinx AR #31638, following the steps shown in ml510_bsb1_pcores_ppc440.pdf;
2, change C_IPIFBAR2PCIBAR_0 to 0xa0000000;
3, download kernel code at git.xilinx.com with version 2.6.33, and stole the implemetation of ml510_pci_quirk for ppc40x by copying an identical file ml410.c in $arch/platform/40x;
4, mark PCI_SBR's interrupt NO. to be 1 rather than 0 by default;
5, replace DTS info of plb46_pci with that of virtex5_ml510.dts.
Do you have any ideas about this problem? I happened to notice that the cpu description inclues DMA specification for PPC440 while none for PPC405. As I do not add xps central DMA(which might be not available in current linux version) in my system, could this be a problem that account for my situation?
05-11-2010 07:21 PM
I test the same kernel on ML510, but unfortunately the same error happens. I wonder whether there is someone making the ML510 board's ALI5451 work by applying the instructions provided by Xilinx wiki "Powerpc linux on ML510"?
01-17-2011 02:46 AM
I had the problem of losing interupts on the ML510 board also. It seemed that everything PCI related was not recognised with kernel version 188.8.131.52. In my case the problem was "solved" by using a older kernel ( 184.108.40.206 ). Since I'm not a linux expert, I have not been able to find the exact cause of the problem.
I hope this helps.