Page 1 of 1
IDE - DMA
Posted: Tue Nov 23, 2004 7:59 am
by n_sethu
Hi
How to enable an IDE device to run in DMA mode using a program. Thanx in
advance.
Re:IDE - DMA
Posted: Wed Nov 24, 2004 4:09 am
by Pype.Clicker
that sounds rather a vague question ... especially the "using a program" part ...
does
this helps ?
Re:IDE - DMA
Posted: Tue Nov 30, 2004 11:19 pm
by n_sethu
I shall put the query in another way. I have written a program to read data from IDE in DMA mode. The DMA is enabled properly. But my IRQ handler is unable to detect the reqest. Can anyone suggest what may be the reason and how we can rectify it.
Thanx in advance.
Re:IDE - DMA
Posted: Wed Dec 01, 2004 3:06 am
by Pype.Clicker
hmm ... are you talkin' about legacy DMA (single or multiword) or about PCI ultraDMA ?
Can you see the data moving in memory (for instance by inspecting the buffer content on keypress) ? If not, probably your DMA is not that well-configured ...
oh, and just to make sure ... is the PIC correctly configured aswell (on both slave and master PICs ?)
Re:IDE - DMA
Posted: Wed Dec 01, 2004 6:21 am
by n_sethu
I have set the IRQ and DMA properly. Im able to read data from a floppy in the legacy DMA (single) mode. Also, Im able to read IDE in PIO mode perfectly (It doesnt use IRQ). But unable with DMA mode.
Re:IDE - DMA
Posted: Wed Dec 01, 2004 7:51 am
by Pype.Clicker
sorry, but IDE read *do* use an IRQ, even in PIO mode. The "PIO data-in command protocol" (in section 9.5 of
ATAPI docs is quit explicit about that ...
Re:IDE - DMA
Posted: Wed Dec 01, 2004 3:14 pm
by Cemre
configuring the legacy DMA controller ( 8237A ) doesn't work on new IDE drives, you have to ( at least i had to ) do a pci scan and find a IDE controller, ( my card is via chipset ) this via ide controller is the dma controller for legacy ide ports, you have to program those ports, NOT standart 0x00-0x0F and other 16bit standart dma controller.
Re:IDE - DMA
Posted: Tue Dec 07, 2004 3:23 am
by n_sethu
Hi,
I tried the PCI scan. I got the following results. The port for
Command Register is 0x07 and Status Register is 0x00. Is it a valid value.
Is it that I have to program these ports???? (Im also a fresher in this project).
So help me out.
Thanx in advance.