/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.os.statsd.cpu;

import "frameworks/proto_logging/stats/atoms.proto";
import "frameworks/proto_logging/stats/atom_field_options.proto";

option java_package = "com.android.os.cpu";
option java_multiple_files = true;

extend Atom {
    optional CpuPolicy cpu_policy = 10199 [(module) = "framework"];
}

/**
 * Logs information related to CPU policies such as frequency limits.
 * This atom is pushed when scaling_max_freq_khz changes.
 */
message CpuPolicy {
    // The cpufreq policy ID.
    optional int32 policy = 1;

    // To reduce power consumption, the kernel or firmware governors may lower
    // the CPU frequency.  This is the maximum allowed frequency by the governors.
    optional int32 scaling_max_freq_khz = 2;

    // If kernel frequency scaling is enabled, this is the maximum frequency of
    // the CPU that the governors can activate.  If kernel frequency scaling is
    // disabled, this is the frequency that the CPU has been locked to.
    //   scaling_max_freq_khz <= cpuinfo_max_freq_khz
    optional int32 cpuinfo_max_freq_khz = 3;
}