Hi,

I’m designing an ATA controller with UDMA support for an embedded SoC.  We’ve got all of the PIO mode stuff working and are adding UDMA.  I have hit a bit of a roadblock and would appreciate some help.  

I’m looking at ATA-6, d1410r3.

 

After sending the command (Read DMA or Write DMA) the Host DMA state diagram seems to require that the host poll the status register and DMARQ line until:

[(BSY=0 & DRQ=1 & DMARQ=1) or (BSY=1 & DRQ=0 & DMARQ=1)].  Is it really necessary to poll the status register?  Can I just turn it over to my UDMA controller, which will wait for DMARQ=1 or INTRQ=1?  If the host needs to read the status register when entering state HDMA0 from HI4 then does it also need to do it when entering HDMA0 from HDMA1 and the command is not yet complete (ie, DMA burst termination before command completion)?  It seems logical that the host would not have to read the status register until command completion (successful or otherwise) but perhaps there is more going on than meets my eye.

 

TIA,

Matt Henson

Lead Systems Architect, MP3 product group

SigmaTel, Inc.

Austin, TX

512.381.3934

Reply via email to