LCOV - code coverage report
Current view: top level - drivers/thermal - thermal_core.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 1 1 100.0 %
Date: 2022-04-01 13:59:58 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0 */
       2                 :            : /*
       3                 :            :  *  thermal_core.h
       4                 :            :  *
       5                 :            :  *  Copyright (C) 2012  Intel Corp
       6                 :            :  *  Author: Durgadoss R <durgadoss.r@intel.com>
       7                 :            :  */
       8                 :            : 
       9                 :            : #ifndef __THERMAL_CORE_H__
      10                 :            : #define __THERMAL_CORE_H__
      11                 :            : 
      12                 :            : #include <linux/device.h>
      13                 :            : #include <linux/thermal.h>
      14                 :            : 
      15                 :            : /* Initial state of a cooling device during binding */
      16                 :            : #define THERMAL_NO_TARGET -1UL
      17                 :            : 
      18                 :            : /* Init section thermal table */
      19                 :            : extern struct thermal_governor *__governor_thermal_table[];
      20                 :            : extern struct thermal_governor *__governor_thermal_table_end[];
      21                 :            : 
      22                 :            : #define THERMAL_TABLE_ENTRY(table, name)                        \
      23                 :            :         static typeof(name) *__thermal_table_entry_##name       \
      24                 :            :         __used __section(__##table##_thermal_table) = &name
      25                 :            : 
      26                 :            : #define THERMAL_GOVERNOR_DECLARE(name)  THERMAL_TABLE_ENTRY(governor, name)
      27                 :            : 
      28                 :            : #define for_each_governor_table(__governor)             \
      29                 :            :         for (__governor = __governor_thermal_table;     \
      30                 :            :              __governor < __governor_thermal_table_end;      \
      31                 :            :              __governor++)
      32                 :            : 
      33                 :            : /*
      34                 :            :  * This structure is used to describe the behavior of
      35                 :            :  * a certain cooling device on a certain trip point
      36                 :            :  * in a certain thermal zone
      37                 :            :  */
      38                 :            : struct thermal_instance {
      39                 :            :         int id;
      40                 :            :         char name[THERMAL_NAME_LENGTH];
      41                 :            :         struct thermal_zone_device *tz;
      42                 :            :         struct thermal_cooling_device *cdev;
      43                 :            :         int trip;
      44                 :            :         bool initialized;
      45                 :            :         unsigned long upper;    /* Highest cooling state for this trip point */
      46                 :            :         unsigned long lower;    /* Lowest cooling state for this trip point */
      47                 :            :         unsigned long target;   /* expected cooling state */
      48                 :            :         char attr_name[THERMAL_NAME_LENGTH];
      49                 :            :         struct device_attribute attr;
      50                 :            :         char weight_attr_name[THERMAL_NAME_LENGTH];
      51                 :            :         struct device_attribute weight_attr;
      52                 :            :         struct list_head tz_node; /* node in tz->thermal_instances */
      53                 :            :         struct list_head cdev_node; /* node in cdev->thermal_instances */
      54                 :            :         unsigned int weight; /* The weight of the cooling device */
      55                 :            : };
      56                 :            : 
      57                 :            : #define to_thermal_zone(_dev) \
      58                 :            :         container_of(_dev, struct thermal_zone_device, device)
      59                 :            : 
      60                 :            : #define to_cooling_device(_dev) \
      61                 :            :         container_of(_dev, struct thermal_cooling_device, device)
      62                 :            : 
      63                 :            : int thermal_register_governor(struct thermal_governor *);
      64                 :            : void thermal_unregister_governor(struct thermal_governor *);
      65                 :            : void thermal_zone_device_rebind_exception(struct thermal_zone_device *,
      66                 :            :                                           const char *, size_t);
      67                 :            : void thermal_zone_device_unbind_exception(struct thermal_zone_device *,
      68                 :            :                                           const char *, size_t);
      69                 :            : int thermal_zone_device_set_policy(struct thermal_zone_device *, char *);
      70                 :            : int thermal_build_list_of_policies(char *buf);
      71                 :            : 
      72                 :            : /* sysfs I/F */
      73                 :            : int thermal_zone_create_device_groups(struct thermal_zone_device *, int);
      74                 :            : void thermal_zone_destroy_device_groups(struct thermal_zone_device *);
      75                 :            : void thermal_cooling_device_setup_sysfs(struct thermal_cooling_device *);
      76                 :            : void thermal_cooling_device_destroy_sysfs(struct thermal_cooling_device *cdev);
      77                 :            : /* used only at binding time */
      78                 :            : ssize_t trip_point_show(struct device *, struct device_attribute *, char *);
      79                 :            : ssize_t weight_show(struct device *, struct device_attribute *, char *);
      80                 :            : ssize_t weight_store(struct device *, struct device_attribute *, const char *,
      81                 :            :                      size_t);
      82                 :            : 
      83                 :            : #ifdef CONFIG_THERMAL_STATISTICS
      84                 :            : void thermal_cooling_device_stats_update(struct thermal_cooling_device *cdev,
      85                 :            :                                          unsigned long new_state);
      86                 :            : #else
      87                 :            : static inline void
      88                 :            : thermal_cooling_device_stats_update(struct thermal_cooling_device *cdev,
      89                 :            :                                     unsigned long new_state) {}
      90                 :            : #endif /* CONFIG_THERMAL_STATISTICS */
      91                 :            : 
      92                 :            : /* device tree support */
      93                 :            : #ifdef CONFIG_THERMAL_OF
      94                 :            : int of_parse_thermal_zones(void);
      95                 :            : int of_thermal_get_ntrips(struct thermal_zone_device *);
      96                 :            : bool of_thermal_is_trip_valid(struct thermal_zone_device *, int);
      97                 :            : const struct thermal_trip *
      98                 :            : of_thermal_get_trip_points(struct thermal_zone_device *);
      99                 :            : #else
     100                 :         78 : static inline int of_parse_thermal_zones(void) { return 0; }
     101                 :            : static inline int of_thermal_get_ntrips(struct thermal_zone_device *tz)
     102                 :            : {
     103                 :            :         return 0;
     104                 :            : }
     105                 :            : static inline bool of_thermal_is_trip_valid(struct thermal_zone_device *tz,
     106                 :            :                                             int trip)
     107                 :            : {
     108                 :            :         return false;
     109                 :            : }
     110                 :            : static inline const struct thermal_trip *
     111                 :            : of_thermal_get_trip_points(struct thermal_zone_device *tz)
     112                 :            : {
     113                 :            :         return NULL;
     114                 :            : }
     115                 :            : #endif
     116                 :            : 
     117                 :            : #endif /* __THERMAL_CORE_H__ */

Generated by: LCOV version 1.14