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