Diff for /wikisrc/users/rkujawa/g-rex.mdwn between versions 1.4 and 1.6

version 1.4, 2012/07/06 19:30:50 version 1.6, 2012/07/06 20:00:55
Line 2 Line 2
   
 Programming the G-REX PCI bridge  Programming the G-REX PCI bridge
   
 document version 0.1 - THIS IS A WORK IN PROGRESS!  document version 0.2 - THIS IS A WORK IN PROGRESS!
   
 # 0. Introduction  # 0. Introduction
   
Line 29  Firmware does the dirty job of assigning Line 29  Firmware does the dirty job of assigning
 etc.) before the OS is running. Therefore G-REX does not need any special   etc.) before the OS is running. Therefore G-REX does not need any special 
 initialization.  initialization.
   
   All memory spaces of G-REX are directly visible and addressable in Amiga memory
   space, unlike in Mediator. Firmware allocates memory space as needed, depending
   on what cards are installed.
   
 # 2. Memory map  # 2. Memory map
   
 G-REX is configured as multipie AutoConf boards. Confusingly, they all have the same vendor (8512) and product (101).  G-REX is configured as multipie AutoConf boards. Confusingly, they all have the same vendor (8512) and product (101).
Line 58  CVPPC/BVPPC there's aslo a mirror on +0x Line 62  CVPPC/BVPPC there's aslo a mirror on +0x
   
 This space offers access to I/O registers of all PCI cards.  This space offers access to I/O registers of all PCI cards.
   
 BAR addresses in this space are treated as relative to 0xFFFA0000. Card with   On G-REX BAR addresses in this space are treated as absolute.
 I/O BAR set to 0x100 will actually be available at 0xFFFA0100.   
   On CVPPC/BVPPC BAR addresses in this space are treated as relative to 
   0xFFFA0000. Card with I/O BAR set to 0x100 will actually be available 
   at 0xFFFA0100. 
   
 # 2c. PCI memory space (0x80000000)  # 2c. PCI memory space (0x80000000)
   
Line 71  For example Voodoo 3, which has two 32MB Line 78  For example Voodoo 3, which has two 32MB
 two 8512/101 boards somewhere at 0x80000000 (or later).  two 8512/101 boards somewhere at 0x80000000 (or later).
   
 Addresses in this space are treated as absolute. Memory BAR register set to   Addresses in this space are treated as absolute. Memory BAR register set to 
 0x80000000 means it is configured at this address.    0x80000000 means it is configured at this address.
   
   On CVPPC/BVPPC this space is present at different address - 0xE0000000.
   
 # 2d. Bridge configuration registers  # 2d. Bridge configuration registers
   
Line 81  Offset - meaning Line 90  Offset - meaning
   
 0x0010 - Interrupt enable, write 0x01 to enable interrupts (INT2 on Amiga side)  0x0010 - Interrupt enable, write 0x01 to enable interrupts (INT2 on Amiga side)
   
 No need to fiddle with these registers, as they've been already configured properly by the firmware.  No need to fiddle with these registers, as they've been already configured 
   properly by the firmware.
   
 # 3. Reconfiguring the bus.  # 3. Reconfiguring the bus
   
 If needed, it's possible to reconfigure bus just by writing new values into   If needed, it's possible to reconfigure bus just by writing new values into 
 configuration space. Keep in mind that any previously initialized chips will   configuration space. Keep in mind that any previously initialized chips will 
Line 93  initialized by the firmware so it can di Line 103  initialized by the firmware so it can di
 # 4. Interrupts  # 4. Interrupts
   
 All interrupts are converted into Amiga INT2 interrupt. There's no such thing   All interrupts are converted into Amiga INT2 interrupt. There's no such thing 
 as interrupt acknowledge register.  as interrupt acknowledge register. However, there seems to be an interrupt 
   enable register (see "Bridge configuration registers" above).
   
 # 5. DMA  # 5. DMA
   
 The bridge is certainly capable of DMA, but it needs further reverse   The bridge is certainly capable of real busmaster DMA, but it needs further 
 engineering.  reverse engineering.
   
 [TO BE COMPLETED]  [TO BE COMPLETED]
   
 There were at least two different revisions of G-REX 1200. Later revision   There were at least two different revisions of G-REX 1200. Later revision 
 probably does support DMA in two slots.  probably does support DMA in first two slots. I'm not sure if it is possible
   to detect revision of the G-REX in software.
   
 G-REX 4000D probably has busmaster DMA capability in all slots.  G-REX 4000D probably has busmaster DMA capability in all slots.
   
Line 115  same knowledge that went into this docum Line 127  same knowledge that went into this docum
   
 The driver consists of several files in [[src/sys/arch/amiga/pci|http://nxr.netbsd.org/xref/src/sys/arch/amiga/pci/]] directory.  The driver consists of several files in [[src/sys/arch/amiga/pci|http://nxr.netbsd.org/xref/src/sys/arch/amiga/pci/]] directory.
   
 p5membar.c - Dummy driver handling AutoConf resources.  * p5membar.c - Dummy driver handling AutoConf resources.
 p5membarvar.h - Structures used by the p5membar.  * p5membarvar.h - Structures used by the p5membar.
 p5pb.c - Main driver code.  * p5pb.c - Main driver code.
 p5pbreg.h - Inlcude file containing register locations.  * p5pbreg.h - Inlcude file containing register locations.
 p5pbvar.h - Structures used by the p5pb.  * p5pbvar.h - Structures used by the p5pb.
   
 The p5pb does attach on top of p5bus, however p5membar drivers attach on top of zbus (since 8512/101 entries are seen as Zorro boards).  The p5pb does attach on top of p5bus, however p5membar drivers attach on top of zbus (since 8512/101 entries are seen as Zorro boards).
   

Removed from v.1.4  
changed lines
  Added in v.1.6


CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb