9.7. Event queue manager register block
The event queue manager register block has a header with type 0x0000C010, version 0x00000300, and indicates the location of the event queue manager registers and number of event queues.
Address |
Field |
31..24 |
23..16 |
15..8 |
7..0 |
Reset value |
---|---|---|---|---|---|---|
RBB+0x00 |
Type |
Vendor ID |
Type |
RO 0x0000C010 |
||
RBB+0x04 |
Version |
Major |
Minor |
Patch |
Meta |
RO 0x00000400 |
RBB+0x08 |
Next pointer |
Pointer to next register block |
RO - |
|||
RBB+0x0C |
Offset |
Offset to queue manager |
RO - |
|||
RBB+0x10 |
Count |
Queue count |
RO - |
|||
RBB+0x14 |
Stride |
Queue control register stride |
RO 0x00000010 |
See Register blocks for definitions of the standard register block header fields.
- Offset
The offset field contains the offset to the start of the event queue manager region, relative to the start of the current region.
Address
31..24
23..16
15..8
7..0
Reset value
RBB+0x0C
Offset to queue manager
RO -
- Count
The count field contains the number of queues.
Address
31..24
23..16
15..8
7..0
Reset value
RBB+0x10
Queue count
RO -
- Stride
The stride field contains the size of the control registers associated with each queue.
Address
31..24
23..16
15..8
7..0
Reset value
RBB+0x14
Queue control register stride
RO 0x00000010
9.7.1. Event queue manager CSRs
Each queue has several associated control registers, detailed in this table:
Address |
Field |
31..24 |
23..16 |
15..8 |
7..0 |
Reset value |
---|---|---|---|---|---|---|
Base+0x00 |
Base addr L |
Ring base addr (lower), VF |
RW - |
|||
Base+0x04 |
Base addr H |
Ring base addr (upper) |
RW - |
|||
Base+0x08 |
Control/status |
Control/status |
IRQN |
RO - |
||
Base+0x0C |
Pointers |
Cons pointer |
Prod pointer |
RO - |
- Base address
The base address field contains the base address of the ring buffer as well as the VF ID. The base address must be aligned to a 4096 byte boundary and sits in bits 63:12, leaving room for the VF ID in bits 11:0. The base address is read-only when the queue is enabled. The VF ID field is read-only; use the set VF ID command to change the VF ID.
Address
31..24
23..16
15..8
7..0
Reset value
Base+0x00
Ring base addr (lower), VF
RW -
Base+0x04
Ring base addr (upper)
RW -
- Control/status
The control/status field contains control and status information for the queue, and the IRQN field contains the corresponding IRQ number. All fields are read-only; use commands to set the size and IRQN and to enable/disable and arm/disarm the queue.
Address
31..24
23..16
15..8
7..0
Reset value
Base+0x08
Control/status
IRQN
RO -
Control/status bit definitions
Bit
Function
0
Enable
1
Arm
3
Active
15:12
Log size
- Pointers
The pointers field contains the queue producer and consumer pointers. Bits 15:0 are the producer pointer, while bits 31:16 are the consumer pointer. Both fields are read-only; use the set prod and cons pointer commands to update the pointers.
Address
31..24
23..16
15..8
7..0
Reset value
Base+0x0C
Cons pointer
Prod pointer
RO -
9.7.2. Event queue manager commands
Command |
31..24 |
23..16 |
15..8 |
7..0 |
---|---|---|---|---|
Set VF ID |
0x8001 |
VF ID |
||
Set size |
0x8002 |
Log size |
||
Set IRQN |
0xC0 |
IRQN |
||
Set prod pointer |
0x8080 |
Prod pointer |
||
Set cons pointer |
0x8090 |
Cons pointer |
||
Set cons pointer, arm |
0x8091 |
Cons pointer |
||
Set enable |
0x400001 |
Enable |
||
Set arm |
0x400002 |
Arm |
- Set VF ID
The set VF ID command is used to set the VF ID for the queue. Allowed when queue is disabled and inactive.
31..24
23..16
15..8
7..0
0x8001
VF ID
- Set size
The set size command is used to set the size of the ring buffer as the log base 2 of the number of elements. Allowed when queue is disabled and inactive.
31..24
23..16
15..8
7..0
0x8002
Log size
- Set IRQN
The set IRQN command is used to set the IRQ number for interrupts generated by the queue. Allowed when queue is disabled and inactive.
31..24
23..16
15..8
7..0
0xC0
IRQN
- Set prod pointer
The set producer pointer command is used to set the queue producer pointer. Allowed when queue is disabled and inactive.
31..24
23..16
15..8
7..0
0x8080
Prod pointer
- Set cons pointer
The set consumer pointer command is used to set the queue consumer pointer. Allowed at any time.
31..24
23..16
15..8
7..0
0x8090
Cons pointer
- Set cons pointer, arm
The set consumer pointer, arm command is used to set the queue consumer pointer and simultaneously re-arm the queue. Allowed at any time.
31..24
23..16
15..8
7..0
0x8091
Cons pointer
- Set enable
The set enable command is used to enable or disable the queue. Allowed at any time.
31..24
23..16
15..8
7..0
0x400001
Enable
- Set arm
The set arm command is used to arm or disarm the queue. Allowed at any time.
31..24
23..16
15..8
7..0
0x400002
Arm