blob: fa69fbec08fbf4b2f3b523014423db5c4855f0ca [file] [log] [blame]
// 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.
// System Control Power Interface
library fuchsia.scpi;
const uint32 MAX_DVFS_OPPS = 16;
enum Status {
// the call completed successfully
OK = 0;
// failed to get the DVFS operating
// points information
ERR_DVFS_INFO = 1;
// failed to get the dvfs opp index
// which is set currently
ERR_DVFS_OPP_IDX = 2;
// failed to get the temperature
ERR_TEMPERATURE = 3;
// failed to get the fan level
ERR_FAN_LEVEL = 4;
// failed to get cpu stats info
ERR_CPU_STATS = 5;
// failed to get memory stat info
ERR_MEM_STATS = 6;
};
struct DvfsOpp {
uint32 freq_hz;
uint32 volt_mv;
};
struct SystemStatus {
// operating point index for big cluster
uint32 big_cluster_op_index;
// operating point index for small cluster
uint32 small_cluster_op_index;
// current CPU temperature
uint32 temperature;
// current Fan Level
uint32 fan_level;
// current CPU utilization
uint32 cpu_utilization;
// current Memory usage
uint32 memory_utilization;
};
[Discoverable]
protocol SystemController {
GetDvfsInfo(uint32 power_domain) -> (Status err, vector<DvfsOpp> opps);
GetSystemStatus() -> (Status err, SystemStatus sys_status);
};