blob: 0d40da7bd57c65f6fbc026120f174418a7d049b7 [file] [log] [blame]
// Copyright 2020 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;
using zx;
// The output for this voltage regulator is defined by the
// following formula:
//
// v_out = min_voltage + step_size * step
//
// Where the `step` is programmable by software.
type VregParams = struct {
// Minimum voltage supported by this voltage regulator.
min_uv uint32;
// Voltage increment at each step.
step_size_uv uint32;
// Max number of steps.
num_steps uint32;
};
@transport("Banjo")
@banjo_layout("ddk-protocol")
protocol Vreg {
// Set the step which yields a voltage of min_uv + step_size_uv * step.
SetVoltageStep(struct {
step uint32;
}) -> (struct {
st zx.status;
});
// Get the current step.
GetVoltageStep() -> (struct {
result uint32;
});
// Obtain the parameters for this voltage regulator.
GetRegulatorParams() -> (struct {
params VregParams;
});
};