| // Copyright 2018 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.scpi; |
| |
| using zx; |
| |
| 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; |
| }; |
| |
| [Layout = "ddk-protocol"] |
| protocol Scpi { |
| GetSensor(string name) -> (zx.status s, uint32 sensor_id); |
| GetSensorValue(uint32 sensor_id) -> (zx.status s, uint32 sensor_value); |
| GetDvfsInfo(uint8 power_domain) -> (zx.status s, ScpiOpp opps); |
| GetDvfsIdx(uint8 power_domain) -> (zx.status s, uint16 index); |
| SetDvfsIdx(uint8 power_domain, uint16 index) -> (zx.status s); |
| }; |