Changes

219 bytes added ,  22:57, 2 July 2017
Line 17: Line 17:  
| 1 || 9-0 || Total word count (in u32's).
 
| 1 || 9-0 || Total word count (in u32's).
 
|-
 
|-
| 1 || 13-10 || Flags for buf C descriptor. Value 1 = write output data into cmdreply(separate from raw-data). If set to 2, enable buf C descriptor.
+
| 1 || 13-10 || Flags for buf C descriptor.
 
|-
 
|-
 
| 1 || 31 || Enable handle descriptor.
 
| 1 || 31 || Enable handle descriptor.
Line 55: Line 55:  
|}
 
|}
   −
=== Buffer descriptor A/B ===
+
=== Buffer descriptor X "Pointer" ===
 +
This one is packed even worse than A, they inserted the bit38-36 of the address ''on top'' of the counter field.
 +
 
 +
Officially, the counter is known as "receive index". This one writes to the buffer described in the ReceiveList.
 +
 
 +
{| class="wikitable" border="1"
 +
! Word || Bits || Description
 +
|-
 +
| 0 || 5-0 || Bits 5-0 of counter.
 +
|-
 +
| 0 || 8-6 || Bit 38-36 of address.
 +
|-
 +
| 0 || 11-9 || Bits 11-9 of counter.
 +
|-
 +
| 0 || 15-12 || Bit 35-32 of address.
 +
|-
 +
| 0 || 31-16 || Size
 +
|-
 +
| 1 || || Lower 32-bits of address.
 +
|}
 +
 
 +
=== Buffer descriptor A/B/W "Send"/"Receive"/"Exchange" ===
 
This packing is so unnecessarily complex.
 
This packing is so unnecessarily complex.
   Line 74: Line 95:  
|}
 
|}
   −
=== Buffer descriptor C ===
+
=== Buffer descriptor C "ReceiveList" ===
 +
There's a 4-bit flag in the main header controlling the behavior of C descriptors.
 +
 
 +
If it has value 0, the C descriptor functionality is disabled. If it has value 1, there is no C descriptor. If it has value 2, there is a single C descriptor.
 +
 
 +
Otherwise it has (flag-2) C descriptors.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
! Word || Bits || Description
 
! Word || Bits || Description
Line 83: Line 110:  
|-
 
|-
 
| 1 || 31-16 || Size
 
| 1 || 31-16 || Size
|}
  −
  −
Ignored by kernel unless the cmdreply has bufX-descriptor enabled? Probably copies the data from the cmdreply bufX to this bufC?
  −
  −
=== Buffer descriptor X ===
  −
This one is packed even worse than A, they inserted the bit38-36 of the address ''on top'' of the counter field.
  −
  −
{| class="wikitable" border="1"
  −
! Word || Bits || Description
  −
|-
  −
| 0 || 5-0 || Bits 5-0 of counter.
  −
|-
  −
| 0 || 8-6 || Bit 38-36 of address.
  −
|-
  −
| 0 || 11-9 || Bits 11-9 of counter.
  −
|-
  −
| 0 || 15-12 || Bit 35-32 of address.
  −
|-
  −
| 0 || 31-16 || Size
  −
|-
  −
| 1 || || Lower 32-bits of address.
   
|}
 
|}