// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.vreg;

type PwmVregMetadataEntry = table {
    /// PWM index corresponding to the voltage regulator. Should correspond to id in pwm_id_t
    /// defined in //src/lib/ddk/include/ddk/metadata/pwm.h
    1: pwm_index uint32;

    /// PWM period in nanoseconds.
    2: period_ns uint32;

    /// Minimum voltage of voltage regulator in microvolts.
    3: min_voltage_uv uint32;

    /// Size of a voltage step in microvolts.
    4: voltage_step_uv uint32;

    /// Number of voltage steps. For example, voltage regulator with voltage range 400 uV- 1000 uV
    /// inclusive and step size 20 uV. Total number of steps is (1000 uV - 400 uV) / 20 uV + 1 = 31
    /// steps.
    5: num_steps uint32;
};

type Metadata = table {
    /// Vector of PWM Vreg metadata. One for each PWM voltage regulator.
    1: pwm_vreg vector<PwmVregMetadataEntry>:MAX;
};
