Home | History | Annotate | Download | only in 2.0
      1 /*
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.thermal@2.0;
     18 
     19 import android.hardware.thermal@1.0::types;
     20 
     21 /** Device temperature types */
     22 enum TemperatureType : @1.0::TemperatureType {
     23     USB_PORT = 4,
     24     POWER_AMPLIFIER = 5,
     25 
     26     /** Battery Charge Limit - virtual thermal sensors */
     27     BCL_VOLTAGE = 6,
     28     BCL_CURRENT = 7,
     29     BCL_PERCENTAGE = 8,
     30 
     31     /**  Neural Processing Unit */
     32     NPU = 9,
     33 };
     34 
     35 
     36 /** Device cooling device types */
     37 enum CoolingType : uint32_t {
     38     FAN,
     39     BATTERY,
     40     CPU,
     41     GPU,
     42     MODEM,
     43     NPU,
     44     COMPONENT, // for the rest of components
     45 };
     46 
     47 /** Device throttling severity */
     48 enum ThrottlingSeverity : uint32_t {
     49     /**
     50      * Not under throttling.
     51      */
     52     NONE = 0,
     53 
     54     /**
     55      * Light throttling where UX is not impacted.
     56      */
     57     LIGHT,
     58 
     59     /**
     60      * Moderate throttling where UX is not largely impacted.
     61      */
     62     MODERATE,
     63 
     64     /**
     65      * Severe throttling where UX is largely impacted.
     66      * Similar to 1.0 throttlingThreshold.
     67      */
     68     SEVERE,
     69 
     70     /**
     71      * Platform has done everything to reduce power.
     72      */
     73     CRITICAL,
     74 
     75     /**
     76      * Key components in platform are shutting down due to thermal condition.
     77      * Device functionalities will be limited.
     78      */
     79     EMERGENCY,
     80 
     81     /**
     82      * Need shutdown immediately.
     83      */
     84     SHUTDOWN,
     85 };
     86 
     87 struct TemperatureThreshold {
     88     /**
     89      * This temperature's type.
     90      */
     91     TemperatureType type;
     92 
     93     /**
     94      * Name of this temperature matching the Temperature struct.
     95      * All temperatures of the same "type" must have a different "name",
     96      * e.g., cpu0, battery. Clients use it to match Temperature struct.
     97      */
     98     string name;
     99 
    100     /**
    101      * Hot throttling temperature constant for this temperature sensor in
    102      * level defined in ThrottlingSeverity including shutdown. Throttling
    103      * happens when temperature >= threshold. If not available, set to NAN.
    104      * Unit is same as Temperature's value.
    105      */
    106     float[ThrottlingSeverity#len] hotThrottlingThresholds;
    107 
    108     /**
    109      * Cold throttling temperature constant for this temperature sensor in
    110      * level defined in ThrottlingSeverity including shutdown. Throttling
    111      * happens when temperature <= threshold. If not available, set to NAN.
    112      * Unit is same as Temperature's value.
    113      */
    114     float[ThrottlingSeverity#len] coldThrottlingThresholds;
    115 
    116     /**
    117      * Threshold temperature above which the VR mode clockrate minimums cannot
    118      * be maintained for this device. If not available, set by HAL to NAN.
    119      * Unit is same as Temperature's value.
    120      */
    121     float vrThrottlingThreshold;
    122 };
    123 
    124 struct Temperature {
    125     /**
    126      * This temperature's type.
    127      */
    128     TemperatureType type;
    129 
    130     /**
    131      * Name of this temperature matching the TemperatureThreshold.
    132      * All temperatures of the same "type" must have a different "name",
    133      * e.g., cpu0, battery. Clients use it to match with TemperatureThreshold
    134      * struct.
    135      */
    136     string name;
    137 
    138     /**
    139      * For BCL, this is the current reading of the virtual sensor and the unit is
    140      * millivolt, milliamp, percentage for BCL_VOLTAGE, BCL_CURRENT and BCL_PERCENTAGE
    141      * respectively. For everything else, this is the current temperature in Celsius.
    142      * If not available set by HAL to NAN.
    143      */
    144     float value;
    145 
    146     /**
    147      * The current throttling level of the sensor.
    148      */
    149     ThrottlingSeverity throttlingStatus;
    150 };
    151 
    152 struct CoolingDevice {
    153     /**
    154      * This cooling device type, CPU, GPU, BATTERY, and etc.
    155      */
    156     CoolingType type;
    157 
    158     /**
    159      * Name of this cooling device.
    160      * All cooling devices of the same "type" must have a different "name".
    161      * The name is usually defined in kernel device tree, and this is for client
    162      * logging purpose.
    163      */
    164     string name;
    165 
    166     /**
    167      * Current throttle state of the cooling device. The value can any unsigned integer
    168      * numbers between 0 and max_state defined in its driver, usually representing the
    169      * associated device's power state. 0 means device is not in throttling, higher value
    170      * means deeper throttling.
    171      */
    172     uint64_t value;
    173 };
    174