2019-05-27 08:55:15 +02:00
// SPDX-License-Identifier: GPL-2.0-only
2012-09-18 11:05:03 +05:30
/*
* user_space . c - A simple user space Thermal events notifier
*
* Copyright ( C ) 2012 Intel Corp
* Copyright ( C ) 2012 Durgadoss R < durgadoss . r @ intel . com >
*
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*/
2016-08-26 16:21:17 -07:00
# include <linux/slab.h>
2020-05-11 17:55:00 +05:30
# include <linux/thermal.h>
2017-06-24 14:06:03 +01:00
2012-09-18 11:05:03 +05:30
# include "thermal_core.h"
2021-10-19 18:35:05 +02:00
static int user_space_bind ( struct thermal_zone_device * tz )
{
2021-11-05 17:31:54 +01:00
pr_warn_once ( " Userspace governor deprecated: use thermal netlink " \
" notification instead \n " ) ;
2021-10-19 18:35:05 +02:00
return 0 ;
}
2012-09-18 11:05:03 +05:30
/**
* notify_user_space - Notifies user space about thermal events
2019-11-20 21:15:12 +05:30
* @ tz : thermal_zone_device
* @ trip : trip point index
2012-09-18 11:05:03 +05:30
*
* This function notifies the user space through UEvents .
*/
2012-09-27 16:57:54 +05:30
static int notify_user_space ( struct thermal_zone_device * tz , int trip )
2012-09-18 11:05:03 +05:30
{
2016-08-26 16:21:17 -07:00
char * thermal_prop [ 5 ] ;
int i ;
2012-09-18 11:05:03 +05:30
mutex_lock ( & tz - > lock ) ;
2016-08-26 16:21:17 -07:00
thermal_prop [ 0 ] = kasprintf ( GFP_KERNEL , " NAME=%s " , tz - > type ) ;
thermal_prop [ 1 ] = kasprintf ( GFP_KERNEL , " TEMP=%d " , tz - > temperature ) ;
thermal_prop [ 2 ] = kasprintf ( GFP_KERNEL , " TRIP=%d " , trip ) ;
thermal_prop [ 3 ] = kasprintf ( GFP_KERNEL , " EVENT=%d " , tz - > notify_event ) ;
thermal_prop [ 4 ] = NULL ;
kobject_uevent_env ( & tz - > device . kobj , KOBJ_CHANGE , thermal_prop ) ;
for ( i = 0 ; i < 4 ; + + i )
kfree ( thermal_prop [ i ] ) ;
2012-09-18 11:05:03 +05:30
mutex_unlock ( & tz - > lock ) ;
return 0 ;
}
2012-09-27 16:57:54 +05:30
static struct thermal_governor thermal_gov_user_space = {
2012-09-18 11:05:03 +05:30
. name = " user_space " ,
. throttle = notify_user_space ,
2021-10-19 18:35:05 +02:00
. bind_to_tz = user_space_bind ,
2012-09-18 11:05:03 +05:30
} ;
2019-06-12 22:13:25 +02:00
THERMAL_GOVERNOR_DECLARE ( thermal_gov_user_space ) ;