// Copyright 2019 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 zircon.device.scpi;

const uint32 MAX_DVFS_OPPS = 16;

struct ScpiOppEntry {
    /// The operating point frequency in Hz.
    uint32 freq_hz;
    /// The operating point voltage in microvolts.
    uint32 volt_uv;
};

struct ScpiOpp {
    /// The device's operating points.
    array<ScpiOppEntry>:MAX_DVFS_OPPS opp;
    /// In microseconds.
    uint32 latency;
    /// The number of operating points in opp.
    uint32 count;
};
