<br />

Added: HEAD

## **PROTOCOLS**

## Device

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=9)*

### ReadRegister16

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint16` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister16_Result` |

### ReadRegister32

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint32` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister32_Result` |

### ReadRegister64

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint64` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister64_Result` |

### ReadRegister8

Reads from the register from the specified MMIO offset in register width equal to 8, 16, 32, and
64 bit variants.
\|offset\| : Offset from base of MMIO to read from. Offset must be aligned to beginning of register. For
example, for 32 bits, offset must be divisible by 4, and for 64 bits, offset
must be divisible by 8. If this is not satisfied, read will fail.
\|mask\| : Mask of bits to read. For example, to read the lower 2 bytes of data in a 32 bit
register, mask should be 0x0000FFFF.
@Returns: \|value\| : Value of register at the specified address.

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint8` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister8_Result` |

### WriteRegister16

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint16` |
| `value` | `uint16` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister16_Result` |

### WriteRegister32

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint32` |
| `value` | `uint32` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister32_Result` |

### WriteRegister64

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint64` |
| `value` | `uint64` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister64_Result` |

### WriteRegister8

Writes to the register at the specified MMIO offset in register width equal to 8, 16, 32, and
64 bit variants
\|offset\| : Offset from base of MMIO to write to. Offset must be aligned to beginning of register. For
example, for 32 bits, offset must be divisible by 4, and for 64 bits, offset
must be divisible by 8. If this is not satisfied, write will fail.
\|mask\| : Mask of bits to write. For example, to write to the lower 2 bytes of data in a 32
bit register, mask should be 0x0000FFFF.
\|value\| : Value of register at the specified address.

#### Request

| Name | Type |
|---|---|
| `offset` | `uint64` |
| `mask` | `uint8` |
| `value` | `uint8` |

#### Response

| Name | Type |
|---|---|
| `payload` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister8_Result` |

## **STRUCTS**

### Device_ReadRegister16_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=27)*

| Field | Type | Description | Default |
|---|---|---|---|
| `value` | `uint16` |   | No default |

### Device_ReadRegister32_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=33)*

| Field | Type | Description | Default |
|---|---|---|---|
| `value` | `uint32` |   | No default |

### Device_ReadRegister64_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=39)*

| Field | Type | Description | Default |
|---|---|---|---|
| `value` | `uint64` |   | No default |

### Device_ReadRegister8_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=21)*

| Field | Type | Description | Default |
|---|---|---|---|
| `value` | `uint8` |   | No default |

### Device_WriteRegister16_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=60)*

\<EMPTY\>

### Device_WriteRegister32_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=65)*

\<EMPTY\>

### Device_WriteRegister64_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=70)*

\<EMPTY\>

### Device_WriteRegister8_Response

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=55)*

\<EMPTY\>

## **TABLES**

### MaskEntry

*Defined in [fuchsia.hardware.registers/metadata.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/metadata.fidl;l=16)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `mask` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Mask` |   |
| ### 2 | `mmio_offset` | `uint64` | MMIO offset of mask range. Should be aligned to 4 for 32-bit registers, 8 for 64-bit registers, etc. |
| ### 3 | `count` | `uint32` | Number of masks with this mask value. |
| ### 4 | `overlap_check_on` | `bool` | Overlap check. If true, checks this mask for overlapping bits defined for all registers. If false, doesn't check. If absent, interpreted as true. |

### Metadata

*Defined in [fuchsia.hardware.registers/metadata.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/metadata.fidl;l=46)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `registers` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#RegistersMetadataEntry>` | Vector of Registers metadata. One for each register to be published. |

### RegistersMetadataEntry

*Defined in [fuchsia.hardware.registers/metadata.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/metadata.fidl;l=33)*

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `name` | `string:32` | Name for binding purposes (fuchsia.NAME device property). |
| ### 2 | `mmio_id` | `uint32` | MMIO ID for MMIO corresponding to register. |
| ### 3 | `masks` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#MaskEntry>` | A run length encoded list of masks. Should be in order starting from base address. Masks should all be of the same type. |

## **UNIONS**

### Device_ReadRegister16_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=27)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister16_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_ReadRegister32_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=33)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister32_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_ReadRegister64_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=39)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister64_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_ReadRegister8_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=21)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_ReadRegister8_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_WriteRegister16_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=60)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister16_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_WriteRegister32_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=65)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister32_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_WriteRegister64_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=70)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister64_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Device_WriteRegister8_Result [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=55)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.registers#Device_WriteRegister8_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |

<br />

### Mask [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.hardware.registers/metadata.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/metadata.fidl;l=9)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `r8` | `uint8` |   |
| ### 2 | `r16` | `uint16` |   |
| ### 3 | `r32` | `uint32` |   |
| ### 4 | `r64` | `uint64` |   |

<br />

## **CONSTANTS**

| Name | Value | Type | Description |
|---|---|---|---|
| [MAX_NAME_LENGTH](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/metadata.fidl;l=7) | `32` | `uint32` | Maximum length of a `name` string. |

## **SERVICES**

### Service

*Defined in [fuchsia.hardware.registers/register-util.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=73)*

| Name | Type | Transport |
|---|---|---|
| [device](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.registers/register-util.fidl;l=74) | `fuchsia.hardware.registers/Device` | Channel |

<br />