Anton Vorontsov wrote:
On Tue, Aug 12, 2008 at 06:18:42PM +0400, Sergei Shtylyov wrote:
  
Anton Vorontsov wrote:

    
1. IDE status read does not work. (But am I understand correctly
  that IDE works well if IRQ is unspecified? Then this is hardly
  an issue.)
2. IDE interrupt comes when it should not. I'd recommend to use
  oscilloscope to find out what is happening there, that is, if
  the drive actually deasserts its irq line after status read.
  If so, than this could be a PIC problem.
            
What is the platform on which you're observing the issue, btw?
            
Another possibility is that you got the wrong interrupt number
in the device-tree...
          
Ben.
          
The platform is the AMCC Sequoia board.  We've built a little adapter to
connect a compact flash card to the processor bus.  I believe the
interrupt selection in the device tree is correct, and I've checked over
the u-boot settings for the IRQ line (active high, level sensitive). 
        
IDE IRQs are active-low.
      
   Only on the PCI and only in the native mode. Natively, the IDE INTRQ  
signal is active-high, rising edge triggering, as on ISA. You seem to 
have an invertor somewhere, if it's not a PCI chip...
    

Ugh. Right you are, as always. I've just looked into mpc8349emitx
schematics, there is indeed an inverter on the irq line.

CF in True IDE mode is active-high, sorry.
  

Ok, just to close this issue, my CF device is now working perfectly.  Two problems, both my fault.  1) I thought the alternate registers used the same reg-shift and offset, so the alt_command and alt_status were at the wrong address, and 2) I was missing a pull-down on the IRQ line - the sequoia eval board has it in the schematic, but it is marked "not populated".

    Thanks to all for your comments and help,
    Steve