# fuchsia.hardware.clockimpl

<br />

Added: 22

## **PROTOCOLS**

## ClockImpl

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=49)*

Each method in this protocol has a corresponding method in clock.fidl
with an additional ID parameter.
The ID parameter in each method below designates the clock in the system
that the call is intended to target.
Conversely, each instance of ZX_PROTOCOL_CLOCK pertains to only one clock
in the system.
See clock.fidl for documentation for each method.

<br />

### Disable

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### Enable

Clock Gating Control.

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### GetClockProperties

Added: 29

#### Request

\<EMPTY\>

#### Response

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

### GetInput

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### GetNumInputs

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### GetRate

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### IsEnabled

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |

#### Response

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

### QuerySupportedRate

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |
| `hz` | `uint64` |

#### Response

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

### SetInput

Clock input control.

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |
| `idx` | `uint32` |

#### Response

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

### SetRate

Clock Frequency Scaling Control.

#### Request

| Name | Type |
|---|---|
| `id` | `uint32` |
| `hz` | `uint64` |

#### Response

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

## **STRUCTS**

### ClockImpl_Disable_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=56)*

\<EMPTY\>

### ClockImpl_Enable_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=53)*

\<EMPTY\>

### ClockImpl_GetClockProperties_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=97)*

| Field | Type | Description | Default |
|---|---|---|---|
| `clock_properties` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockProperties>:200` |   | No default |

### ClockImpl_GetInput_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=92)*

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

### ClockImpl_GetNumInputs_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=87)*

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

### ClockImpl_GetRate_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=76)*

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

### ClockImpl_IsEnabled_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=59)*

| Field | Type | Description | Default |
|---|---|---|---|
| `enabled` | `bool` |   | No default |

### ClockImpl_QuerySupportedRate_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=71)*

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

### ClockImpl_SetInput_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=84)*

\<EMPTY\>

### ClockImpl_SetRate_Response

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=67)*

\<EMPTY\>

### DisableType

*Defined in [fuchsia.hardware.clockimpl/init.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/init.fidl;l=10)*

\<EMPTY\>

### EnableType

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

\<EMPTY\>

### InitMetadata

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

Passed to the clock core driver in metadata. Steps are processed sequentially in the order that
they appear in the vector. Processing occurs once during the clock core driver's bind hook.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `steps` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#InitStep>` |   | No default |

## **TABLES**

### ClockIdsMetadata

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=31)*

Metadata containing the IDs of the available clocks.
Added: HEAD

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `clock_nodes` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockNodeDescriptor>` |   |

### ClockNodeDescriptor

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=16)*
Added: HEAD

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `clock_id` | `uint32` |   |
| ### 2 | `node_id` | `uint32` |   |
| ### 3 | `name` | `string:256` |   |

### ClockProperties

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=36)*
Added: 29

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `clock_id` | `uint32` |   |
| ### 2 | `clock_name` | `string:256` |   |

### InitStep

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

A single init step to be performed by the clock core driver.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `id` | `uint32` | The platform-specific clock ID that this step operates on. This must be unset if `call` is of type `InitCall::delay` and must be set otherwise. |
| ### 2 | `call` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#InitCall` | A call to make on this clock. This must be set. |

## **UNIONS**

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=56)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_Disable_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=53)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_Enable_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=97)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_GetClockProperties_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=92)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_GetInput_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=87)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_GetNumInputs_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=76)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_GetRate_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=59)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_IsEnabled_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=71)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_QuerySupportedRate_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=84)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_SetInput_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=67)*

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `response` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#ClockImpl_SetRate_Response` |   |
| ### 2 | `err` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Status` |   |
| ### 3 | `framework_err` | `internal` |   |

<br />

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

*Defined in [fuchsia.hardware.clockimpl/init.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/init.fidl;l=13)*

A fuchsia.hardware.clock.Clock call to make as part of an `InitStep`.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `enable` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#EnableType` | If set, the clock core driver will call `Enable`. |
| ### 2 | `disable` | `https://fuchsia.dev/reference/fidl/fuchsia.hardware.clockimpl#DisableType` | If set, the clock core driver will call `Disable`. |
| ### 3 | `rate_hz` | `uint64` | If set, the clock core driver will call `SetRate` with the given frequency in Hertz. |
| ### 4 | `input_idx` | `uint32` | If set, the clock core driver will call `SetInput` with the given input index. |
| ### 5 | `delay` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Duration` | If set, the clock core driver will delay for this long before processing the next step. |

<br />

## **CONSTANTS**

| Name | Value | Type | Description |
|---|---|---|---|
| [MAX_CLOCKS](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=13) | `200` | `uint32` | Added: 29 |
| [MAX_NAME_LEN](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=10) | `256` | `uint32` | Added: 29 |

## **SERVICES**

### Service

*Defined in [fuchsia.hardware.clockimpl/clock-impl.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=102)*

| Name | Type | Transport |
|---|---|---|
| [device](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.hardware.clockimpl/clock-impl.fidl;l=103) | `fuchsia.hardware.clockimpl/ClockImpl` | Driver |

<br />