View Single Post
Old 09 July 2006, 17:07   #6
ganralf
Registered User
 
Join Date: May 2006
Location: Germany
Posts: 97
Good you asked, that gave me the chance to sort my scraps and clearify things. Almost everything is for PCMCIA. Just IRQ handling ist left for IDE. I guess the best bet for the rest would be to ignore writes a return 0 on reads.

0xda900 Gayle INTREQ:
0x80 IDE
0X02 IDE1ACK (Slave)
0x01 IDE0ACK (Master)

If a Interrupt (Level 2) occurs and it is caused by an IDE Device Gayle INTREQ IDE bit 7 is set. I'm not sure if, the corresponding IDExACK will be set. When done with interrupt handling these bits will be set to 0 by the device driver.

0xdaa000 Gayle INTENA:
0x80 IDE

Setting bit 7 of Gayle INTENA enables ATA Interrupts.


So your trace reads:
> p00fb6b80t00daa000 1w 80808080
Enable IDE Interrupts
.
.
.
> p00fb70d4t00da2018 1w a0a0a0a0
Select device 0
> p00fb70d8t00da2010 1r 34ff34ff
Device's Cylinder Low register is 0x34. (Should have been 0 after reset)
> P00fbcf98T00da9000 1r 7fffffff
> P00fbcfa4T00daa000 1r 00000000
We're here in card.resource's irq handler. Which checks for a PCMCIA Int.


As usual for Amiga adresses are not fully decoded. Kickstart uses the following adresses for IDE. The above mentioned adresses are used by Linux. If you want the project to be compatible with Linux you should implement a similiar incomplete decoding.

0xda2000 Data
0xda2004 Error | Feature
0xda2008 SectorCount
0xda200c SectorNumber
0xda2010 CylinderLow
0xda2014 CylinderHigh
0xda2018 Device/Head
0xda201c Status | Command
0xda3018 Control


0xde1000's MSB should actually be interpreted as a 8 bit serial shift register, which reads 0xd0. Fat Garys (A3000,A4000) have the very same mechanism at 0xde1002 this register is called GaryID (see: http://www.thule.no/haynie/research/...ocs/a3000p.pdf).


Hope that helps and good luck on your project.
ganralf is offline  
 
Page generated in 0.04285 seconds with 11 queries