Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
5a924a07
Commit
5a924a07
authored
Sep 02, 2015
by
Zhang Rui
Browse files
Options
Browse Files
Download
Plain Diff
Merge branches 'thermal-core' and 'thermal-intel' of .git into next
parents
64291f7d
934c93b8
d0a12625
Changes
44
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
509 additions
and
197 deletions
+509
-197
Documentation/thermal/sysfs-api.txt
Documentation/thermal/sysfs-api.txt
+6
-0
drivers/acpi/thermal.c
drivers/acpi/thermal.c
+6
-6
drivers/hwmon/lm75.c
drivers/hwmon/lm75.c
+1
-1
drivers/hwmon/ntc_thermistor.c
drivers/hwmon/ntc_thermistor.c
+1
-1
drivers/hwmon/tmp102.c
drivers/hwmon/tmp102.c
+1
-1
drivers/input/touchscreen/sun4i-ts.c
drivers/input/touchscreen/sun4i-ts.c
+4
-4
drivers/platform/x86/acerhdf.c
drivers/platform/x86/acerhdf.c
+4
-5
drivers/platform/x86/intel_mid_thermal.c
drivers/platform/x86/intel_mid_thermal.c
+4
-5
drivers/power/charger-manager.c
drivers/power/charger-manager.c
+1
-1
drivers/power/power_supply_core.c
drivers/power/power_supply_core.c
+1
-1
drivers/thermal/Kconfig
drivers/thermal/Kconfig
+8
-0
drivers/thermal/Makefile
drivers/thermal/Makefile
+1
-0
drivers/thermal/armada_thermal.c
drivers/thermal/armada_thermal.c
+1
-1
drivers/thermal/db8500_thermal.c
drivers/thermal/db8500_thermal.c
+3
-4
drivers/thermal/dove_thermal.c
drivers/thermal/dove_thermal.c
+1
-1
drivers/thermal/fair_share.c
drivers/thermal/fair_share.c
+1
-1
drivers/thermal/gov_bang_bang.c
drivers/thermal/gov_bang_bang.c
+2
-3
drivers/thermal/hisi_thermal.c
drivers/thermal/hisi_thermal.c
+2
-2
drivers/thermal/imx_thermal.c
drivers/thermal/imx_thermal.c
+13
-14
drivers/thermal/int340x_thermal/int3400_thermal.c
drivers/thermal/int340x_thermal/int3400_thermal.c
+1
-1
drivers/thermal/int340x_thermal/int340x_thermal_zone.c
drivers/thermal/int340x_thermal/int340x_thermal_zone.c
+5
-5
drivers/thermal/int340x_thermal/int340x_thermal_zone.h
drivers/thermal/int340x_thermal/int340x_thermal_zone.h
+4
-4
drivers/thermal/int340x_thermal/processor_thermal_device.c
drivers/thermal/int340x_thermal/processor_thermal_device.c
+2
-2
drivers/thermal/intel_pch_thermal.c
drivers/thermal/intel_pch_thermal.c
+286
-0
drivers/thermal/intel_powerclamp.c
drivers/thermal/intel_powerclamp.c
+3
-0
drivers/thermal/intel_quark_dts_thermal.c
drivers/thermal/intel_quark_dts_thermal.c
+6
-7
drivers/thermal/intel_soc_dts_iosf.c
drivers/thermal/intel_soc_dts_iosf.c
+4
-4
drivers/thermal/kirkwood_thermal.c
drivers/thermal/kirkwood_thermal.c
+1
-1
drivers/thermal/of-thermal.c
drivers/thermal/of-thermal.c
+7
-7
drivers/thermal/power_allocator.c
drivers/thermal/power_allocator.c
+8
-8
drivers/thermal/qcom-spmi-temp-alarm.c
drivers/thermal/qcom-spmi-temp-alarm.c
+1
-1
drivers/thermal/rcar_thermal.c
drivers/thermal/rcar_thermal.c
+3
-4
drivers/thermal/rockchip_thermal.c
drivers/thermal/rockchip_thermal.c
+5
-5
drivers/thermal/samsung/exynos_tmu.c
drivers/thermal/samsung/exynos_tmu.c
+11
-12
drivers/thermal/spear_thermal.c
drivers/thermal/spear_thermal.c
+1
-1
drivers/thermal/st/st_thermal.c
drivers/thermal/st/st_thermal.c
+2
-3
drivers/thermal/step_wise.c
drivers/thermal/step_wise.c
+2
-2
drivers/thermal/tegra_soctherm.c
drivers/thermal/tegra_soctherm.c
+2
-2
drivers/thermal/thermal_core.c
drivers/thermal/thermal_core.c
+65
-44
drivers/thermal/thermal_hwmon.c
drivers/thermal/thermal_hwmon.c
+5
-5
drivers/thermal/ti-soc-thermal/ti-thermal-common.c
drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+5
-5
drivers/thermal/x86_pkg_temp_thermal.c
drivers/thermal/x86_pkg_temp_thermal.c
+5
-5
include/linux/thermal.h
include/linux/thermal.h
+11
-15
include/trace/events/thermal_power_allocator.h
include/trace/events/thermal_power_allocator.h
+3
-3
No files found.
Documentation/thermal/sysfs-api.txt
View file @
5a924a07
...
...
@@ -180,6 +180,7 @@ Thermal zone device sys I/F, created once it's registered:
|---temp: Current temperature
|---mode: Working mode of the thermal zone
|---policy: Thermal governor used for this zone
|---available_policies: Available thermal governors for this zone
|---trip_point_[0-*]_temp: Trip point temperature
|---trip_point_[0-*]_type: Trip point type
|---trip_point_[0-*]_hyst: Hysteresis value for this trip point
...
...
@@ -256,6 +257,10 @@ policy
One of the various thermal governors used for a particular zone.
RW, Required
available_policies
Available thermal governors which can be used for a particular zone.
RO, Required
trip_point_[0-*]_temp
The temperature above which trip point will be fired.
Unit: millidegree Celsius
...
...
@@ -417,6 +422,7 @@ method, the sys I/F structure will be built like this:
|---temp: 37000
|---mode: enabled
|---policy: step_wise
|---available_policies: step_wise fair_share
|---trip_point_0_temp: 100000
|---trip_point_0_type: critical
|---trip_point_1_temp: 80000
...
...
drivers/acpi/thermal.c
View file @
5a924a07
...
...
@@ -529,8 +529,7 @@ static void acpi_thermal_check(void *data)
/* sys I/F for generic thermal sysfs support */
static
int
thermal_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
static
int
thermal_get_temp
(
struct
thermal_zone_device
*
thermal
,
int
*
temp
)
{
struct
acpi_thermal
*
tz
=
thermal
->
devdata
;
int
result
;
...
...
@@ -637,7 +636,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
}
static
int
thermal_get_trip_temp
(
struct
thermal_zone_device
*
thermal
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
acpi_thermal
*
tz
=
thermal
->
devdata
;
int
i
;
...
...
@@ -690,7 +689,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
}
static
int
thermal_get_crit_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temperature
)
{
int
*
temperature
)
{
struct
acpi_thermal
*
tz
=
thermal
->
devdata
;
if
(
tz
->
trips
.
critical
.
flags
.
valid
)
{
...
...
@@ -713,8 +713,8 @@ static int thermal_get_trend(struct thermal_zone_device *thermal,
return
-
EINVAL
;
if
(
type
==
THERMAL_TRIP_ACTIVE
)
{
unsigned
long
trip_temp
;
unsigned
long
temp
=
DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET
(
int
trip_temp
;
int
temp
=
DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET
(
tz
->
temperature
,
tz
->
kelvin_offset
);
if
(
thermal_get_trip_temp
(
thermal
,
trip
,
&
trip_temp
))
return
-
EINVAL
;
...
...
drivers/hwmon/lm75.c
View file @
5a924a07
...
...
@@ -104,7 +104,7 @@ static inline long lm75_reg_to_mc(s16 temp, u8 resolution)
/* sysfs attributes for hwmon */
static
int
lm75_read_temp
(
void
*
dev
,
long
*
temp
)
static
int
lm75_read_temp
(
void
*
dev
,
int
*
temp
)
{
struct
lm75_data
*
data
=
lm75_update_device
(
dev
);
...
...
drivers/hwmon/ntc_thermistor.c
View file @
5a924a07
...
...
@@ -477,7 +477,7 @@ static int ntc_thermistor_get_ohm(struct ntc_data *data)
return
-
EINVAL
;
}
static
int
ntc_read_temp
(
void
*
dev
,
long
*
temp
)
static
int
ntc_read_temp
(
void
*
dev
,
int
*
temp
)
{
struct
ntc_data
*
data
=
dev_get_drvdata
(
dev
);
int
ohm
;
...
...
drivers/hwmon/tmp102.c
View file @
5a924a07
...
...
@@ -98,7 +98,7 @@ static struct tmp102 *tmp102_update_device(struct device *dev)
return
tmp102
;
}
static
int
tmp102_read_temp
(
void
*
dev
,
long
*
temp
)
static
int
tmp102_read_temp
(
void
*
dev
,
int
*
temp
)
{
struct
tmp102
*
tmp102
=
tmp102_update_device
(
dev
);
...
...
drivers/input/touchscreen/sun4i-ts.c
View file @
5a924a07
...
...
@@ -191,7 +191,7 @@ static void sun4i_ts_close(struct input_dev *dev)
writel
(
TEMP_IRQ_EN
(
1
),
ts
->
base
+
TP_INT_FIFOC
);
}
static
int
sun4i_get_temp
(
const
struct
sun4i_ts_data
*
ts
,
long
*
temp
)
static
int
sun4i_get_temp
(
const
struct
sun4i_ts_data
*
ts
,
int
*
temp
)
{
/* No temp_data until the first irq */
if
(
ts
->
temp_data
==
-
1
)
...
...
@@ -202,7 +202,7 @@ static int sun4i_get_temp(const struct sun4i_ts_data *ts, long *temp)
return
0
;
}
static
int
sun4i_get_tz_temp
(
void
*
data
,
long
*
temp
)
static
int
sun4i_get_tz_temp
(
void
*
data
,
int
*
temp
)
{
return
sun4i_get_temp
(
data
,
temp
);
}
...
...
@@ -215,14 +215,14 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
char
*
buf
)
{
struct
sun4i_ts_data
*
ts
=
dev_get_drvdata
(
dev
);
long
temp
;
int
temp
;
int
error
;
error
=
sun4i_get_temp
(
ts
,
&
temp
);
if
(
error
)
return
error
;
return
sprintf
(
buf
,
"%
l
d
\n
"
,
temp
);
return
sprintf
(
buf
,
"%d
\n
"
,
temp
);
}
static
ssize_t
show_temp_label
(
struct
device
*
dev
,
...
...
drivers/platform/x86/acerhdf.c
View file @
5a924a07
...
...
@@ -346,8 +346,7 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
* as late as the polling interval is since we can't do that in the respective
* accessors of the module parameters.
*/
static
int
acerhdf_get_ec_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
t
)
static
int
acerhdf_get_ec_temp
(
struct
thermal_zone_device
*
thermal
,
int
*
t
)
{
int
temp
,
err
=
0
;
...
...
@@ -453,7 +452,7 @@ static int acerhdf_get_trip_type(struct thermal_zone_device *thermal, int trip,
}
static
int
acerhdf_get_trip_hyst
(
struct
thermal_zone_device
*
thermal
,
int
trip
,
unsigned
long
*
temp
)
int
*
temp
)
{
if
(
trip
!=
0
)
return
-
EINVAL
;
...
...
@@ -464,7 +463,7 @@ static int acerhdf_get_trip_hyst(struct thermal_zone_device *thermal, int trip,
}
static
int
acerhdf_get_trip_temp
(
struct
thermal_zone_device
*
thermal
,
int
trip
,
unsigned
long
*
temp
)
int
*
temp
)
{
if
(
trip
==
0
)
*
temp
=
fanon
;
...
...
@@ -477,7 +476,7 @@ static int acerhdf_get_trip_temp(struct thermal_zone_device *thermal, int trip,
}
static
int
acerhdf_get_crit_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temperature
)
int
*
temperature
)
{
*
temperature
=
ACERHDF_TEMP_CRIT
;
return
0
;
...
...
drivers/platform/x86/intel_mid_thermal.c
View file @
5a924a07
...
...
@@ -132,7 +132,7 @@ static int is_valid_adc(uint16_t adc_val, uint16_t min, uint16_t max)
* to achieve very close approximate temp value with less than
* 0.5C error
*/
static
int
adc_to_temp
(
int
direct
,
uint16_t
adc_val
,
unsigned
long
*
tp
)
static
int
adc_to_temp
(
int
direct
,
uint16_t
adc_val
,
int
*
tp
)
{
int
temp
;
...
...
@@ -174,14 +174,13 @@ static int adc_to_temp(int direct, uint16_t adc_val, unsigned long *tp)
*
* Can sleep
*/
static
int
mid_read_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
static
int
mid_read_temp
(
struct
thermal_zone_device
*
tzd
,
int
*
temp
)
{
struct
thermal_device_info
*
td_info
=
tzd
->
devdata
;
uint16_t
adc_val
,
addr
;
uint8_t
data
=
0
;
int
ret
;
unsigned
long
curr_temp
;
int
curr_temp
;
addr
=
td_info
->
chnl_addr
;
...
...
@@ -453,7 +452,7 @@ static SIMPLE_DEV_PM_OPS(mid_thermal_pm,
*
* Can sleep
*/
static
int
read_curr_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
static
int
read_curr_temp
(
struct
thermal_zone_device
*
tzd
,
int
*
temp
)
{
WARN_ON
(
tzd
==
NULL
);
return
mid_read_temp
(
tzd
,
temp
);
...
...
drivers/power/charger-manager.c
View file @
5a924a07
...
...
@@ -619,7 +619,7 @@ static int cm_get_battery_temperature(struct charger_manager *cm,
#ifdef CONFIG_THERMAL
if
(
cm
->
tzd_batt
)
{
ret
=
thermal_zone_get_temp
(
cm
->
tzd_batt
,
(
unsigned
long
*
)
temp
);
ret
=
thermal_zone_get_temp
(
cm
->
tzd_batt
,
temp
);
if
(
!
ret
)
/* Calibrate temperature unit */
*
temp
/=
100
;
...
...
drivers/power/power_supply_core.c
View file @
5a924a07
...
...
@@ -557,7 +557,7 @@ EXPORT_SYMBOL_GPL(power_supply_unreg_notifier);
#ifdef CONFIG_THERMAL
static
int
power_supply_read_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
power_supply
*
psy
;
union
power_supply_propval
val
;
...
...
drivers/thermal/Kconfig
View file @
5a924a07
...
...
@@ -340,6 +340,14 @@ config ACPI_THERMAL_REL
tristate
depends on ACPI
config INTEL_PCH_THERMAL
tristate "Intel PCH Thermal Reporting Driver"
depends on X86 && PCI
help
Enable this to support thermal reporting on certain intel PCHs.
Thermal reporting device will provide temperature reading,
programmable trip points and other information.
menu "Texas Instruments thermal drivers"
source "drivers/thermal/ti-soc-thermal/Kconfig"
endmenu
...
...
drivers/thermal/Makefile
View file @
5a924a07
...
...
@@ -41,6 +41,7 @@ obj-$(CONFIG_INTEL_SOC_DTS_THERMAL) += intel_soc_dts_thermal.o
obj-$(CONFIG_INTEL_QUARK_DTS_THERMAL)
+=
intel_quark_dts_thermal.o
obj-$(CONFIG_TI_SOC_THERMAL)
+=
ti-soc-thermal/
obj-$(CONFIG_INT340X_THERMAL)
+=
int340x_thermal/
obj-$(CONFIG_INTEL_PCH_THERMAL)
+=
intel_pch_thermal.o
obj-$(CONFIG_ST_THERMAL)
+=
st/
obj-$(CONFIG_TEGRA_SOCTHERM)
+=
tegra_soctherm.o
obj-$(CONFIG_HISI_THERMAL)
+=
hisi_thermal.o
drivers/thermal/armada_thermal.c
View file @
5a924a07
...
...
@@ -155,7 +155,7 @@ static bool armada_is_valid(struct armada_thermal_priv *priv)
}
static
int
armada_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
armada_thermal_priv
*
priv
=
thermal
->
devdata
;
unsigned
long
reg
;
...
...
drivers/thermal/db8500_thermal.c
View file @
5a924a07
...
...
@@ -107,8 +107,7 @@ static int db8500_cdev_unbind(struct thermal_zone_device *thermal,
}
/* Callback to get current temperature */
static
int
db8500_sys_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
static
int
db8500_sys_get_temp
(
struct
thermal_zone_device
*
thermal
,
int
*
temp
)
{
struct
db8500_thermal_zone
*
pzone
=
thermal
->
devdata
;
...
...
@@ -180,7 +179,7 @@ static int db8500_sys_get_trip_type(struct thermal_zone_device *thermal,
/* Callback to get trip point temperature */
static
int
db8500_sys_get_trip_temp
(
struct
thermal_zone_device
*
thermal
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
db8500_thermal_zone
*
pzone
=
thermal
->
devdata
;
struct
db8500_thsens_platform_data
*
ptrips
=
pzone
->
trip_tab
;
...
...
@@ -195,7 +194,7 @@ static int db8500_sys_get_trip_temp(struct thermal_zone_device *thermal,
/* Callback to get critical trip point temperature */
static
int
db8500_sys_get_crit_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
db8500_thermal_zone
*
pzone
=
thermal
->
devdata
;
struct
db8500_thsens_platform_data
*
ptrips
=
pzone
->
trip_tab
;
...
...
drivers/thermal/dove_thermal.c
View file @
5a924a07
...
...
@@ -93,7 +93,7 @@ static int dove_init_sensor(const struct dove_thermal_priv *priv)
}
static
int
dove_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
unsigned
long
reg
;
struct
dove_thermal_priv
*
priv
=
thermal
->
devdata
;
...
...
drivers/thermal/fair_share.c
View file @
5a924a07
...
...
@@ -34,7 +34,7 @@
static
int
get_trip_level
(
struct
thermal_zone_device
*
tz
)
{
int
count
=
0
;
unsigned
long
trip_temp
;
int
trip_temp
;
enum
thermal_trip_type
trip_type
;
if
(
tz
->
trips
==
0
||
!
tz
->
ops
->
get_trip_temp
)
...
...
drivers/thermal/gov_bang_bang.c
View file @
5a924a07
...
...
@@ -25,14 +25,13 @@
static
void
thermal_zone_trip_update
(
struct
thermal_zone_device
*
tz
,
int
trip
)
{
long
trip_temp
;
unsigned
long
trip_hyst
;
int
trip_temp
,
trip_hyst
;
struct
thermal_instance
*
instance
;
tz
->
ops
->
get_trip_temp
(
tz
,
trip
,
&
trip_temp
);
tz
->
ops
->
get_trip_hyst
(
tz
,
trip
,
&
trip_hyst
);
dev_dbg
(
&
tz
->
device
,
"Trip%d[temp=%
ld]:temp=%d:hyst=%l
d
\n
"
,
dev_dbg
(
&
tz
->
device
,
"Trip%d[temp=%
d]:temp=%d:hyst=%
d
\n
"
,
trip
,
trip_temp
,
tz
->
temperature
,
trip_hyst
);
...
...
drivers/thermal/hisi_thermal.c
View file @
5a924a07
...
...
@@ -155,7 +155,7 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data)
mutex_unlock
(
&
data
->
thermal_lock
);
}
static
int
hisi_thermal_get_temp
(
void
*
_sensor
,
long
*
temp
)
static
int
hisi_thermal_get_temp
(
void
*
_sensor
,
int
*
temp
)
{
struct
hisi_thermal_sensor
*
sensor
=
_sensor
;
struct
hisi_thermal_data
*
data
=
sensor
->
thermal
;
...
...
@@ -178,7 +178,7 @@ static int hisi_thermal_get_temp(void *_sensor, long *temp)
data
->
irq_bind_sensor
=
sensor_id
;
mutex_unlock
(
&
data
->
thermal_lock
);
dev_dbg
(
&
data
->
pdev
->
dev
,
"id=%d, irq=%d, temp=%
l
d, thres=%d
\n
"
,
dev_dbg
(
&
data
->
pdev
->
dev
,
"id=%d, irq=%d, temp=%d, thres=%d
\n
"
,
sensor
->
id
,
data
->
irq_enabled
,
*
temp
,
sensor
->
thres_temp
);
/*
* Bind irq to sensor for two cases:
...
...
drivers/thermal/imx_thermal.c
View file @
5a924a07
...
...
@@ -98,10 +98,10 @@ struct imx_thermal_data {
enum
thermal_device_mode
mode
;
struct
regmap
*
tempmon
;
u32
c1
,
c2
;
/* See formula in imx_get_sensor_data() */
unsigned
long
temp_passive
;
unsigned
long
temp_critical
;
unsigned
long
alarm_temp
;
unsigned
long
last_temp
;
int
temp_passive
;
int
temp_critical
;
int
alarm_temp
;
int
last_temp
;
bool
irq_enabled
;
int
irq
;
struct
clk
*
thermal_clk
;
...
...
@@ -109,7 +109,7 @@ struct imx_thermal_data {
};
static
void
imx_set_panic_temp
(
struct
imx_thermal_data
*
data
,
signed
long
panic_temp
)
int
panic_temp
)
{
struct
regmap
*
map
=
data
->
tempmon
;
int
critical_value
;
...
...
@@ -121,7 +121,7 @@ static void imx_set_panic_temp(struct imx_thermal_data *data,
}
static
void
imx_set_alarm_temp
(
struct
imx_thermal_data
*
data
,
signed
long
alarm_temp
)
int
alarm_temp
)
{
struct
regmap
*
map
=
data
->
tempmon
;
int
alarm_value
;
...
...
@@ -133,7 +133,7 @@ static void imx_set_alarm_temp(struct imx_thermal_data *data,
TEMPSENSE0_ALARM_VALUE_SHIFT
);
}
static
int
imx_get_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
static
int
imx_get_temp
(
struct
thermal_zone_device
*
tz
,
int
*
temp
)
{
struct
imx_thermal_data
*
data
=
tz
->
devdata
;
struct
regmap
*
map
=
data
->
tempmon
;
...
...
@@ -189,13 +189,13 @@ static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
if
(
data
->
alarm_temp
==
data
->
temp_critical
&&
*
temp
<
data
->
temp_passive
)
{
imx_set_alarm_temp
(
data
,
data
->
temp_passive
);
dev_dbg
(
&
tz
->
device
,
"thermal alarm off: T < %
lu
\n
"
,
dev_dbg
(
&
tz
->
device
,
"thermal alarm off: T < %
d
\n
"
,
data
->
alarm_temp
/
1000
);
}
}
if
(
*
temp
!=
data
->
last_temp
)
{
dev_dbg
(
&
tz
->
device
,
"millicelsius: %
l
d
\n
"
,
*
temp
);
dev_dbg
(
&
tz
->
device
,
"millicelsius: %d
\n
"
,
*
temp
);
data
->
last_temp
=
*
temp
;
}
...
...
@@ -262,8 +262,7 @@ static int imx_get_trip_type(struct thermal_zone_device *tz, int trip,
return
0
;
}
static
int
imx_get_crit_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
static
int
imx_get_crit_temp
(
struct
thermal_zone_device
*
tz
,
int
*
temp
)
{
struct
imx_thermal_data
*
data
=
tz
->
devdata
;
...
...
@@ -272,7 +271,7 @@ static int imx_get_crit_temp(struct thermal_zone_device *tz,
}
static
int
imx_get_trip_temp
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
imx_thermal_data
*
data
=
tz
->
devdata
;
...
...
@@ -282,7 +281,7 @@ static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
}
static
int
imx_set_trip_temp
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
temp
)
int
temp
)
{
struct
imx_thermal_data
*
data
=
tz
->
devdata
;
...
...
@@ -434,7 +433,7 @@ static irqreturn_t imx_thermal_alarm_irq_thread(int irq, void *dev)
{
struct
imx_thermal_data
*
data
=
dev
;
dev_dbg
(
&
data
->
tz
->
device
,
"THERMAL ALARM: T > %
lu
\n
"
,
dev_dbg
(
&
data
->
tz
->
device
,
"THERMAL ALARM: T > %
d
\n
"
,
data
->
alarm_temp
/
1000
);
thermal_zone_device_update
(
data
->
tz
);
...
...
drivers/thermal/int340x_thermal/int3400_thermal.c
View file @
5a924a07
...
...
@@ -186,7 +186,7 @@ static int int3400_thermal_run_osc(acpi_handle handle,
}
static
int
int3400_thermal_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
*
temp
=
20
*
1000
;
/* faked temp sensor with 20C */
return
0
;
...
...
drivers/thermal/int340x_thermal/int340x_thermal_zone.c
View file @
5a924a07
...
...
@@ -20,7 +20,7 @@
#include "int340x_thermal_zone.h"
static
int
int340x_thermal_get_zone_temp
(
struct
thermal_zone_device
*
zone
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
int34x_thermal_zone
*
d
=
zone
->
devdata
;
unsigned
long
long
tmp
;
...
...
@@ -49,7 +49,7 @@ static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
}
static
int
int340x_thermal_get_trip_temp
(
struct
thermal_zone_device
*
zone
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
int34x_thermal_zone
*
d
=
zone
->
devdata
;
int
i
;
...
...
@@ -114,7 +114,7 @@ static int int340x_thermal_get_trip_type(struct thermal_zone_device *zone,
}
static
int
int340x_thermal_set_trip_temp
(
struct
thermal_zone_device
*
zone
,
int
trip
,
unsigned
long
temp
)
int
trip
,
int
temp
)
{
struct
int34x_thermal_zone
*
d
=
zone
->
devdata
;
acpi_status
status
;
...
...
@@ -136,7 +136,7 @@ static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
static
int
int340x_thermal_get_trip_hyst
(
struct
thermal_zone_device
*
zone
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
int34x_thermal_zone
*
d
=
zone
->
devdata
;
acpi_status
status
;
...
...
@@ -163,7 +163,7 @@ static struct thermal_zone_device_ops int340x_thermal_zone_ops = {
};
static
int
int340x_thermal_get_trip_config
(
acpi_handle
handle
,
char
*
name
,
unsigned
long
*
temp
)
int
*
temp
)
{
unsigned
long
long
r
;
acpi_status
status
;
...
...
drivers/thermal/int340x_thermal/int340x_thermal_zone.h
View file @
5a924a07
...
...
@@ -21,7 +21,7 @@
#define INT340X_THERMAL_MAX_ACT_TRIP_COUNT 10
struct
active_trip
{
unsigned
long
temp
;
int
temp
;
int
id
;
bool
valid
;
};
...
...
@@ -31,11 +31,11 @@ struct int34x_thermal_zone {
struct
active_trip
act_trips
[
INT340X_THERMAL_MAX_ACT_TRIP_COUNT
];
unsigned
long
*
aux_trips
;
int
aux_trip_nr
;
unsigned
long
psv_temp
;
int
psv_temp
;
int
psv_trip_id
;
unsigned
long
crt_temp
;
int
crt_temp
;
int
crt_trip_id
;
unsigned
long
hot_temp
;
int
hot_temp
;
int
hot_trip_id
;
struct
thermal_zone_device
*
zone
;
struct
thermal_zone_device_ops
*
override_ops
;
...
...
drivers/thermal/int340x_thermal/processor_thermal_device.c
View file @
5a924a07
...
...
@@ -145,7 +145,7 @@ static int get_tjmax(void)
return
-
EINVAL
;
}
static
int
read_temp_msr
(
unsigned
long
*
temp
)
static
int
read_temp_msr
(
int
*
temp
)
{
int
cpu
;
u32
eax
,
edx
;
...
...
@@ -177,7 +177,7 @@ static int read_temp_msr(unsigned long *temp)
}
static
int
proc_thermal_get_zone_temp
(
struct
thermal_zone_device
*
zone
,
unsigned
long
*
temp
)
int
*
temp
)
{
int
ret
;
...
...
drivers/thermal/intel_pch_thermal.c
0 → 100644
View file @
5a924a07
/* intel_pch_thermal.c - Intel PCH Thermal driver
*
* Copyright (c) 2015, Intel Corporation.
*
* Authors:
* Tushar Dave <tushar.n.dave@intel.com>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#include <linux/module.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/thermal.h>
/* Intel PCH thermal Device IDs */
#define PCH_THERMAL_DID_WPT 0x9CA4
/* Wildcat Point */
/* Wildcat Point-LP PCH Thermal registers */
#define WPT_TEMP 0x0000
/* Temperature */
#define WPT_TSC 0x04
/* Thermal Sensor Control */
#define WPT_TSS 0x06
/* Thermal Sensor Status */
#define WPT_TSEL 0x08
/* Thermal Sensor Enable and Lock */
#define WPT_TSREL 0x0A
/* Thermal Sensor Report Enable and Lock */
#define WPT_TSMIC 0x0C
/* Thermal Sensor SMI Control */
#define WPT_CTT 0x0010
/* Catastrophic Trip Point */
#define WPT_TAHV 0x0014
/* Thermal Alert High Value */
#define WPT_TALV 0x0018
/* Thermal Alert Low Value */
#define WPT_TL 0x00000040
/* Throttle Value */
#define WPT_PHL 0x0060
/* PCH Hot Level */
#define WPT_PHLC 0x62
/* PHL Control */
#define WPT_TAS 0x80
/* Thermal Alert Status */
#define WPT_TSPIEN 0x82
/* PCI Interrupt Event Enables */
#define WPT_TSGPEN 0x84
/* General Purpose Event Enables */
/* Wildcat Point-LP PCH Thermal Register bit definitions */
#define WPT_TEMP_TSR 0x00ff
/* Temp TS Reading */
#define WPT_TSC_CPDE 0x01
/* Catastrophic Power-Down Enable */
#define WPT_TSS_TSDSS 0x10
/* Thermal Sensor Dynamic Shutdown Status */
#define WPT_TSS_GPES 0x08
/* GPE status */
#define WPT_TSEL_ETS 0x01
/* Enable TS */
#define WPT_TSEL_PLDB 0x80
/* TSEL Policy Lock-Down Bit */
#define WPT_TL_TOL 0x000001FF
/* T0 Level */
#define WPT_TL_T1L 0x1ff00000
/* T1 Level */
#define WPT_TL_TTEN 0x20000000
/* TT Enable */
static
char
driver_name
[]
=
"Intel PCH thermal driver"
;
struct
pch_thermal_device
{
void
__iomem
*
hw_base
;
const
struct
pch_dev_ops
*
ops
;
struct
pci_dev
*
pdev
;
struct
thermal_zone_device
*
tzd
;
int
crt_trip_id
;
unsigned
long
crt_temp
;
int
hot_trip_id
;
unsigned
long
hot_temp
;
};
static
int
pch_wpt_init
(
struct
pch_thermal_device
*
ptd
,
int
*
nr_trips
)
{
u8
tsel
;
u16
trip_temp
;
*
nr_trips
=
0
;
/* Check if BIOS has already enabled thermal sensor */
if
(
WPT_TSS_TSDSS
&
readb
(
ptd
->
hw_base
+
WPT_TSS
))
goto
read_trips
;
tsel
=
readb
(
ptd
->
hw_base
+
WPT_TSEL
);
/*
* When TSEL's Policy Lock-Down bit is 1, TSEL become RO.
* If so, thermal sensor cannot enable. Bail out.
*/
if
(
tsel
&
WPT_TSEL_PLDB
)
{
dev_err
(
&
ptd
->
pdev
->
dev
,
"Sensor can't be enabled
\n
"
);
return
-
ENODEV
;
}
writeb
(
tsel
|
WPT_TSEL_ETS
,
ptd
->
hw_base
+
WPT_TSEL
);
if
(
!
(
WPT_TSS_TSDSS
&
readb
(
ptd
->
hw_base
+
WPT_TSS
)))
{
dev_err
(
&
ptd
->
pdev
->
dev
,
"Sensor can't be enabled
\n
"
);
return
-
ENODEV
;
}
read_trips:
ptd
->
crt_trip_id
=
-
1
;
trip_temp
=
readw
(
ptd
->
hw_base
+
WPT_CTT
);
trip_temp
&=
0x1FF
;
if
(
trip_temp
)
{
/* Resolution of 1/2 degree C and an offset of -50C */
ptd
->
crt_temp
=
trip_temp
*
1000
/
2
-
50000
;
ptd
->
crt_trip_id
=
0
;
++
(
*
nr_trips
);
}
ptd
->
hot_trip_id
=
-
1
;
trip_temp
=
readw
(
ptd
->
hw_base
+
WPT_PHL
);
trip_temp
&=
0x1FF
;
if
(
trip_temp
)
{
/* Resolution of 1/2 degree C and an offset of -50C */
ptd
->
hot_temp
=
trip_temp
*
1000
/
2
-
50000
;
ptd
->
hot_trip_id
=
*
nr_trips
;
++
(
*
nr_trips
);
}
return
0
;
}
static
int
pch_wpt_get_temp
(
struct
pch_thermal_device
*
ptd
,
unsigned
long
*
temp
)
{
u8
wpt_temp
;
wpt_temp
=
WPT_TEMP_TSR
&
readl
(
ptd
->
hw_base
+
WPT_TEMP
);
/* Resolution of 1/2 degree C and an offset of -50C */
*
temp
=
(
wpt_temp
*
1000
/
2
-
50000
);
return
0
;
}
struct
pch_dev_ops
{
int
(
*
hw_init
)(
struct
pch_thermal_device
*
ptd
,
int
*
nr_trips
);
int
(
*
get_temp
)(
struct
pch_thermal_device
*
ptd
,
unsigned
long
*
temp
);
};
/* dev ops for Wildcat Point */
static
struct
pch_dev_ops
pch_dev_ops_wpt
=
{
.
hw_init
=
pch_wpt_init
,
.
get_temp
=
pch_wpt_get_temp
,
};
static
int
pch_thermal_get_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
{
struct
pch_thermal_device
*
ptd
=
tzd
->
devdata
;
return
ptd
->
ops
->
get_temp
(
ptd
,
temp
);
}
static
int
pch_get_trip_type
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
enum
thermal_trip_type
*
type
)
{
struct
pch_thermal_device
*
ptd
=
tzd
->
devdata
;
if
(
ptd
->
crt_trip_id
==
trip
)
*
type
=
THERMAL_TRIP_CRITICAL
;
else
if
(
ptd
->
hot_trip_id
==
trip
)
*
type
=
THERMAL_TRIP_HOT
;
else
return
-
EINVAL
;
return
0
;
}
static
int
pch_get_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
*
temp
)
{
struct
pch_thermal_device
*
ptd
=
tzd
->
devdata
;
if
(
ptd
->
crt_trip_id
==
trip
)
*
temp
=
ptd
->
crt_temp
;
else
if
(
ptd
->
hot_trip_id
==
trip
)
*
temp
=
ptd
->
hot_temp
;
else
return
-
EINVAL
;
return
0
;
}
static
struct
thermal_zone_device_ops
tzd_ops
=
{
.
get_temp
=
pch_thermal_get_temp
,
.
get_trip_type
=
pch_get_trip_type
,
.
get_trip_temp
=
pch_get_trip_temp
,
};
static
int
intel_pch_thermal_probe
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
id
)
{
struct
pch_thermal_device
*
ptd
;
int
err
;
int
nr_trips
;
char
*
dev_name
;
ptd
=
devm_kzalloc
(
&
pdev
->
dev
,
sizeof
(
*
ptd
),
GFP_KERNEL
);
if
(
!
ptd
)
return
-
ENOMEM
;
switch
(
pdev
->
device
)
{
case
PCH_THERMAL_DID_WPT
:
ptd
->
ops
=
&
pch_dev_ops_wpt
;
dev_name
=
"pch_wildcat_point"
;
break
;
default:
dev_err
(
&
pdev
->
dev
,
"unknown pch thermal device
\n
"
);
return
-
ENODEV
;
}
pci_set_drvdata
(
pdev
,
ptd
);
ptd
->
pdev
=
pdev
;
err
=
pci_enable_device
(
pdev
);
if
(
err
)
{
dev_err
(
&
pdev
->
dev
,
"failed to enable pci device
\n
"
);
return
err
;
}
err
=
pci_request_regions
(
pdev
,
driver_name
);
if
(
err
)
{
dev_err
(
&
pdev
->
dev
,
"failed to request pci region
\n
"
);
goto
error_disable
;
}
ptd
->
hw_base
=
pci_ioremap_bar
(
pdev
,
0
);
if
(
!
ptd
->
hw_base
)
{
err
=
-
ENOMEM
;
dev_err
(
&
pdev
->
dev
,
"failed to map mem base
\n
"
);
goto
error_release
;
}
err
=
ptd
->
ops
->
hw_init
(
ptd
,
&
nr_trips
);
if
(
err
)
goto
error_cleanup
;
ptd
->
tzd
=
thermal_zone_device_register
(
dev_name
,
nr_trips
,
0
,
ptd
,
&
tzd_ops
,
NULL
,
0
,
0
);
if
(
IS_ERR
(
ptd
->
tzd
))
{
dev_err
(
&
pdev
->
dev
,
"Failed to register thermal zone %s
\n
"
,
dev_name
);
err
=
PTR_ERR
(
ptd
->
tzd
);
goto
error_cleanup
;
}
return
0
;
error_cleanup:
iounmap
(
ptd
->
hw_base
);
error_release:
pci_release_regions
(
pdev
);
error_disable:
pci_disable_device
(
pdev
);
dev_err
(
&
pdev
->
dev
,
"pci device failed to probe
\n
"
);
return
err
;
}
static
void
intel_pch_thermal_remove
(
struct
pci_dev
*
pdev
)
{
struct
pch_thermal_device
*
ptd
=
pci_get_drvdata
(
pdev
);
thermal_zone_device_unregister
(
ptd
->
tzd
);
iounmap
(
ptd
->
hw_base
);
pci_set_drvdata
(
pdev
,
NULL
);
pci_release_region
(
pdev
,
0
);
pci_disable_device
(
pdev
);
}
static
struct
pci_device_id
intel_pch_thermal_id
[]
=
{
{
PCI_DEVICE
(
PCI_VENDOR_ID_INTEL
,
PCH_THERMAL_DID_WPT
)
},
{
0
,
},
};
MODULE_DEVICE_TABLE
(
pci
,
intel_pch_thermal_id
);
static
struct
pci_driver
intel_pch_thermal_driver
=
{
.
name
=
"intel_pch_thermal"
,
.
id_table
=
intel_pch_thermal_id
,
.
probe
=
intel_pch_thermal_probe
,
.
remove
=
intel_pch_thermal_remove
,
};
module_pci_driver
(
intel_pch_thermal_driver
);
MODULE_LICENSE
(
"GPL v2"
);
MODULE_DESCRIPTION
(
"Intel PCH Thermal driver"
);
drivers/thermal/intel_powerclamp.c
View file @
5a924a07
...
...
@@ -693,11 +693,14 @@ static const struct x86_cpu_id intel_powerclamp_ids[] __initconst = {
{
X86_VENDOR_INTEL
,
6
,
0x3f
},
{
X86_VENDOR_INTEL
,
6
,
0x45
},
{
X86_VENDOR_INTEL
,
6
,
0x46
},
{
X86_VENDOR_INTEL
,
6
,
0x47
},
{
X86_VENDOR_INTEL
,
6
,
0x4c
},
{
X86_VENDOR_INTEL
,
6
,
0x4d
},
{
X86_VENDOR_INTEL
,
6
,
0x4e
},
{
X86_VENDOR_INTEL
,
6
,
0x4f
},
{
X86_VENDOR_INTEL
,
6
,
0x56
},
{
X86_VENDOR_INTEL
,
6
,
0x57
},
{
X86_VENDOR_INTEL
,
6
,
0x5e
},
{}
};
MODULE_DEVICE_TABLE
(
x86cpu
,
intel_powerclamp_ids
);
...
...
drivers/thermal/intel_quark_dts_thermal.c
View file @
5a924a07
...
...
@@ -186,7 +186,7 @@ static int soc_dts_disable(struct thermal_zone_device *tzd)
return
ret
;
}
static
int
_get_trip_temp
(
int
trip
,
unsigned
long
*
temp
)
static
int
_get_trip_temp
(
int
trip
,
int
*
temp
)
{
int
status
;
u32
out
;
...
...
@@ -212,19 +212,18 @@ static int _get_trip_temp(int trip, unsigned long *temp)
}
static
inline
int
sys_get_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
return
_get_trip_temp
(
trip
,
temp
);
}
static
inline
int
sys_get_crit_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
static
inline
int
sys_get_crit_temp
(
struct
thermal_zone_device
*
tzd
,
int
*
temp
)
{
return
_get_trip_temp
(
QRK_DTS_ID_TP_CRITICAL
,
temp
);
}
static
int
update_trip_temp
(
struct
soc_sensor_entry
*
aux_entry
,
int
trip
,
unsigned
long
temp
)
int
trip
,
int
temp
)
{
u32
out
;
u32
temp_out
;
...
...
@@ -272,7 +271,7 @@ static int update_trip_temp(struct soc_sensor_entry *aux_entry,
}
static
inline
int
sys_set_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
temp
)
int
temp
)
{
return
update_trip_temp
(
tzd
->
devdata
,
trip
,
temp
);
}
...
...
@@ -289,7 +288,7 @@ static int sys_get_trip_type(struct thermal_zone_device *thermal,
}
static
int
sys_get_curr_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
int
*
temp
)
{
u32
out
;
int
ret
;
...
...
drivers/thermal/intel_soc_dts_iosf.c
View file @
5a924a07
...
...
@@ -80,7 +80,7 @@ static int get_tj_max(u32 *tj_max)
}
static
int
sys_get_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
*
temp
)
int
*
temp
)
{
int
status
;
u32
out
;
...
...
@@ -106,7 +106,7 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
}
static
int
update_trip_temp
(
struct
intel_soc_dts_sensor_entry
*
dts
,
int
thres_index
,
unsigned
long
temp
,
int
thres_index
,
int
temp
,
enum
thermal_trip_type
trip_type
)
{
int
status
;
...
...
@@ -196,7 +196,7 @@ static int update_trip_temp(struct intel_soc_dts_sensor_entry *dts,
}
static
int
sys_set_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
temp
)
int
temp
)
{
struct
intel_soc_dts_sensor_entry
*
dts
=
tzd
->
devdata
;
struct
intel_soc_dts_sensors
*
sensors
=
dts
->
sensors
;
...
...
@@ -226,7 +226,7 @@ static int sys_get_trip_type(struct thermal_zone_device *tzd,
}
static
int
sys_get_curr_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
int
*
temp
)
{
int
status
;
u32
out
;
...
...
drivers/thermal/kirkwood_thermal.c
View file @
5a924a07
...
...
@@ -33,7 +33,7 @@ struct kirkwood_thermal_priv {
};
static
int
kirkwood_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
unsigned
long
reg
;
struct
kirkwood_thermal_priv
*
priv
=
thermal
->
devdata
;
...
...
drivers/thermal/of-thermal.c
View file @
5a924a07
...
...
@@ -91,7 +91,7 @@ struct __thermal_zone {
/*** DT thermal zone device callbacks ***/
static
int
of_thermal_get_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -177,7 +177,7 @@ EXPORT_SYMBOL_GPL(of_thermal_get_trip_points);
* Return: zero on success, error code otherwise
*/
static
int
of_thermal_set_emul_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
temp
)
int
temp
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -311,7 +311,7 @@ static int of_thermal_get_trip_type(struct thermal_zone_device *tz, int trip,
}
static
int
of_thermal_get_trip_temp
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -324,7 +324,7 @@ static int of_thermal_get_trip_temp(struct thermal_zone_device *tz, int trip,
}
static
int
of_thermal_set_trip_temp
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
temp
)
int
temp
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -338,7 +338,7 @@ static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip,
}
static
int
of_thermal_get_trip_hyst
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
*
hyst
)
int
*
hyst
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -351,7 +351,7 @@ static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip,
}
static
int
of_thermal_set_trip_hyst
(
struct
thermal_zone_device
*
tz
,
int
trip
,
unsigned
long
hyst
)
int
hyst
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
...
...
@@ -365,7 +365,7 @@ static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
}
static
int
of_thermal_get_crit_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
__thermal_zone
*
data
=
tz
->
devdata
;
int
i
;
...
...
drivers/thermal/power_allocator.c
View file @
5a924a07
...
...
@@ -92,8 +92,8 @@ struct power_allocator_params {
* Return: The power budget for the next period.
*/
static
u32
pid_controller
(
struct
thermal_zone_device
*
tz
,
unsigned
long
current_temp
,
unsigned
long
control_temp
,
int
current_temp
,
int
control_temp
,
u32
max_allocatable_power
)
{
s64
p
,
i
,
d
,
power_range
;
...
...
@@ -102,7 +102,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
max_power_frac
=
int_to_frac
(
max_allocatable_power
);
err
=
((
s32
)
control_temp
-
(
s32
)
current_temp
)
;
err
=
control_temp
-
current_temp
;
err
=
int_to_frac
(
err
);
/* Calculate the proportional term */
...
...
@@ -223,8 +223,8 @@ static void divvy_up_power(u32 *req_power, u32 *max_power, int num_actors,
}
static
int
allocate_power
(
struct
thermal_zone_device
*
tz
,
unsigned
long
current_temp
,
unsigned
long
control_temp
)
int
current_temp
,
int
control_temp
)
{
struct
thermal_instance
*
instance
;
struct
power_allocator_params
*
params
=
tz
->
governor_data
;
...
...
@@ -331,7 +331,7 @@ static int allocate_power(struct thermal_zone_device *tz,
granted_power
,
total_granted_power
,
num_actors
,
power_range
,
max_allocatable_power
,
current_temp
,
(
s32
)
control_temp
-
(
s32
)
current_temp
);
control_temp
-
current_temp
);
kfree
(
req_power
);
unlock:
...
...
@@ -416,7 +416,7 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
{
int
ret
;
struct
power_allocator_params
*
params
;
unsigned
long
switch_on_temp
,
control_temp
;
int
switch_on_temp
,
control_temp
;
u32
temperature_threshold
;
if
(
!
tz
->
tzp
||
!
tz
->
tzp
->
sustainable_power
)
{
...
...
@@ -481,7 +481,7 @@ static void power_allocator_unbind(struct thermal_zone_device *tz)
static
int
power_allocator_throttle
(
struct
thermal_zone_device
*
tz
,
int
trip
)
{
int
ret
;
unsigned
long
switch_on_temp
,
control_temp
,
current_temp
;
int
switch_on_temp
,
control_temp
,
current_temp
;
struct
power_allocator_params
*
params
=
tz
->
governor_data
;
/*
...
...
drivers/thermal/qcom-spmi-temp-alarm.c
View file @
5a924a07
...
...
@@ -117,7 +117,7 @@ static int qpnp_tm_update_temp_no_adc(struct qpnp_tm_chip *chip)
return
0
;
}
static
int
qpnp_tm_get_temp
(
void
*
data
,
long
*
temp
)
static
int
qpnp_tm_get_temp
(
void
*
data
,
int
*
temp
)
{
struct
qpnp_tm_chip
*
chip
=
data
;
int
ret
,
mili_celsius
;
...
...
drivers/thermal/rcar_thermal.c
View file @
5a924a07
...
...
@@ -200,8 +200,7 @@ static int rcar_thermal_update_temp(struct rcar_thermal_priv *priv)
return
ret
;
}
static
int
rcar_thermal_get_temp
(
struct
thermal_zone_device
*
zone
,
unsigned
long
*
temp
)
static
int
rcar_thermal_get_temp
(
struct
thermal_zone_device
*
zone
,
int
*
temp
)
{
struct
rcar_thermal_priv
*
priv
=
rcar_zone_to_priv
(
zone
);
...
...
@@ -235,7 +234,7 @@ static int rcar_thermal_get_trip_type(struct thermal_zone_device *zone,
}
static
int
rcar_thermal_get_trip_temp
(
struct
thermal_zone_device
*
zone
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
rcar_thermal_priv
*
priv
=
rcar_zone_to_priv
(
zone
);
struct
device
*
dev
=
rcar_priv_to_dev
(
priv
);
...
...
@@ -299,7 +298,7 @@ static void _rcar_thermal_irq_ctrl(struct rcar_thermal_priv *priv, int enable)
static
void
rcar_thermal_work
(
struct
work_struct
*
work
)
{
struct
rcar_thermal_priv
*
priv
;
unsigned
long
cctemp
,
nctemp
;
int
cctemp
,
nctemp
;
priv
=
container_of
(
work
,
struct
rcar_thermal_priv
,
work
.
work
);
...
...
drivers/thermal/rockchip_thermal.c
View file @
5a924a07
...
...
@@ -64,7 +64,7 @@ struct rockchip_tsadc_chip {
void
(
*
control
)(
void
__iomem
*
reg
,
bool
on
);
/* Per-sensor methods */
int
(
*
get_temp
)(
int
chn
,
void
__iomem
*
reg
,
long
*
temp
);
int
(
*
get_temp
)(
int
chn
,
void
__iomem
*
reg
,
int
*
temp
);
void
(
*
set_tshut_temp
)(
int
chn
,
void
__iomem
*
reg
,
long
temp
);
void
(
*
set_tshut_mode
)(
int
chn
,
void
__iomem
*
reg
,
enum
tshut_mode
m
);
};
...
...
@@ -191,7 +191,7 @@ static u32 rk_tsadcv2_temp_to_code(long temp)
return
0
;
}
static
long
rk_tsadcv2_code_to_temp
(
u32
code
)
static
int
rk_tsadcv2_code_to_temp
(
u32
code
)
{
unsigned
int
low
=
0
;
unsigned
int
high
=
ARRAY_SIZE
(
v2_code_table
)
-
1
;
...
...
@@ -277,7 +277,7 @@ static void rk_tsadcv2_control(void __iomem *regs, bool enable)
writel_relaxed
(
val
,
regs
+
TSADCV2_AUTO_CON
);
}
static
int
rk_tsadcv2_get_temp
(
int
chn
,
void
__iomem
*
regs
,
long
*
temp
)
static
int
rk_tsadcv2_get_temp
(
int
chn
,
void
__iomem
*
regs
,
int
*
temp
)
{
u32
val
;
...
...
@@ -366,7 +366,7 @@ static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
return
IRQ_HANDLED
;
}
static
int
rockchip_thermal_get_temp
(
void
*
_sensor
,
long
*
out_temp
)
static
int
rockchip_thermal_get_temp
(
void
*
_sensor
,
int
*
out_temp
)
{
struct
rockchip_thermal_sensor
*
sensor
=
_sensor
;
struct
rockchip_thermal_data
*
thermal
=
sensor
->
thermal
;
...
...
@@ -374,7 +374,7 @@ static int rockchip_thermal_get_temp(void *_sensor, long *out_temp)
int
retval
;
retval
=
tsadc
->
get_temp
(
sensor
->
id
,
thermal
->
regs
,
out_temp
);
dev_dbg
(
&
thermal
->
pdev
->
dev
,
"sensor %d - temp: %
l
d, retval: %d
\n
"
,
dev_dbg
(
&
thermal
->
pdev
->
dev
,
"sensor %d - temp: %d, retval: %d
\n
"
,
sensor
->
id
,
*
out_temp
,
retval
);
return
retval
;
...
...
drivers/thermal/samsung/exynos_tmu.c
View file @
5a924a07
...
...
@@ -207,8 +207,7 @@ struct exynos_tmu_data {
int
(
*
tmu_initialize
)(
struct
platform_device
*
pdev
);
void
(
*
tmu_control
)(
struct
platform_device
*
pdev
,
bool
on
);
int
(
*
tmu_read
)(
struct
exynos_tmu_data
*
data
);
void
(
*
tmu_set_emulation
)(
struct
exynos_tmu_data
*
data
,
unsigned
long
temp
);
void
(
*
tmu_set_emulation
)(
struct
exynos_tmu_data
*
data
,
int
temp
);
void
(
*
tmu_clear_irqs
)(
struct
exynos_tmu_data
*
data
);
};
...
...
@@ -216,7 +215,7 @@ static void exynos_report_trigger(struct exynos_tmu_data *p)
{
char
data
[
10
],
*
envp
[]
=
{
data
,
NULL
};
struct
thermal_zone_device
*
tz
=
p
->
tzd
;
unsigned
long
temp
;
int
temp
;
unsigned
int
i
;
if
(
!
tz
)
{
...
...
@@ -517,7 +516,7 @@ static int exynos5433_tmu_initialize(struct platform_device *pdev)
struct
thermal_zone_device
*
tz
=
data
->
tzd
;
unsigned
int
status
,
trim_info
;
unsigned
int
rising_threshold
=
0
,
falling_threshold
=
0
;
unsigned
long
temp
,
temp_hist
;
int
temp
,
temp_hist
;
int
ret
=
0
,
threshold_code
,
i
,
sensor_id
,
cal_type
;
status
=
readb
(
data
->
base
+
EXYNOS_TMU_REG_STATUS
);
...
...
@@ -610,7 +609,7 @@ static int exynos5440_tmu_initialize(struct platform_device *pdev)
struct
exynos_tmu_data
*
data
=
platform_get_drvdata
(
pdev
);
unsigned
int
trim_info
=
0
,
con
,
rising_threshold
;
int
ret
=
0
,
threshold_code
;
unsigned
long
crit_temp
=
0
;
int
crit_temp
=
0
;
/*
* For exynos5440 soc triminfo value is swapped between TMU0 and
...
...
@@ -663,7 +662,7 @@ static int exynos7_tmu_initialize(struct platform_device *pdev)
unsigned
int
status
,
trim_info
;
unsigned
int
rising_threshold
=
0
,
falling_threshold
=
0
;
int
ret
=
0
,
threshold_code
,
i
;
unsigned
long
temp
,
temp_hist
;
int
temp
,
temp_hist
;
unsigned
int
reg_off
,
bit_off
;
status
=
readb
(
data
->
base
+
EXYNOS_TMU_REG_STATUS
);
...
...
@@ -876,7 +875,7 @@ static void exynos7_tmu_control(struct platform_device *pdev, bool on)
writel
(
con
,
data
->
base
+
EXYNOS_TMU_REG_CONTROL
);
}
static
int
exynos_get_temp
(
void
*
p
,
long
*
temp
)
static
int
exynos_get_temp
(
void
*
p
,
int
*
temp
)
{
struct
exynos_tmu_data
*
data
=
p
;
...
...
@@ -896,7 +895,7 @@ static int exynos_get_temp(void *p, long *temp)
#ifdef CONFIG_THERMAL_EMULATION
static
u32
get_emul_con_reg
(
struct
exynos_tmu_data
*
data
,
unsigned
int
val
,
unsigned
long
temp
)
int
temp
)
{
if
(
temp
)
{
temp
/=
MCELSIUS
;
...
...
@@ -926,7 +925,7 @@ static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
}
static
void
exynos4412_tmu_set_emulation
(
struct
exynos_tmu_data
*
data
,
unsigned
long
temp
)
int
temp
)
{
unsigned
int
val
;
u32
emul_con
;
...
...
@@ -946,7 +945,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
}
static
void
exynos5440_tmu_set_emulation
(
struct
exynos_tmu_data
*
data
,
unsigned
long
temp
)
int
temp
)
{
unsigned
int
val
;
...
...
@@ -955,7 +954,7 @@ static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
writel
(
val
,
data
->
base
+
EXYNOS5440_TMU_S0_7_DEBUG
);
}
static
int
exynos_tmu_set_emulation
(
void
*
drv_data
,
unsigned
long
temp
)
static
int
exynos_tmu_set_emulation
(
void
*
drv_data
,
int
temp
)
{
struct
exynos_tmu_data
*
data
=
drv_data
;
int
ret
=
-
EINVAL
;
...
...
@@ -978,7 +977,7 @@ static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
#else
#define exynos4412_tmu_set_emulation NULL
#define exynos5440_tmu_set_emulation NULL
static
int
exynos_tmu_set_emulation
(
void
*
drv_data
,
unsigned
long
temp
)
static
int
exynos_tmu_set_emulation
(
void
*
drv_data
,
int
temp
)
{
return
-
EINVAL
;
}
#endif
/* CONFIG_THERMAL_EMULATION */
...
...
drivers/thermal/spear_thermal.c
View file @
5a924a07
...
...
@@ -38,7 +38,7 @@ struct spear_thermal_dev {
};
static
inline
int
thermal_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
spear_thermal_dev
*
stdev
=
thermal
->
devdata
;
...
...
drivers/thermal/st/st_thermal.c
View file @
5a924a07
...
...
@@ -111,8 +111,7 @@ static int st_thermal_calibration(struct st_thermal_sensor *sensor)
}
/* Callback to get temperature from HW*/
static
int
st_thermal_get_temp
(
struct
thermal_zone_device
*
th
,
unsigned
long
*
temperature
)
static
int
st_thermal_get_temp
(
struct
thermal_zone_device
*
th
,
int
*
temperature
)
{
struct
st_thermal_sensor
*
sensor
=
th
->
devdata
;
struct
device
*
dev
=
sensor
->
dev
;
...
...
@@ -159,7 +158,7 @@ static int st_thermal_get_trip_type(struct thermal_zone_device *th,
}
static
int
st_thermal_get_trip_temp
(
struct
thermal_zone_device
*
th
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
struct
st_thermal_sensor
*
sensor
=
th
->
devdata
;
struct
device
*
dev
=
sensor
->
dev
;
...
...
drivers/thermal/step_wise.c
View file @
5a924a07
...
...
@@ -113,7 +113,7 @@ static void update_passive_instance(struct thermal_zone_device *tz,
static
void
thermal_zone_trip_update
(
struct
thermal_zone_device
*
tz
,
int
trip
)
{
long
trip_temp
;
int
trip_temp
;
enum
thermal_trip_type
trip_type
;
enum
thermal_trend
trend
;
struct
thermal_instance
*
instance
;
...
...
@@ -135,7 +135,7 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
trace_thermal_zone_trip
(
tz
,
trip
,
trip_type
);
}
dev_dbg
(
&
tz
->
device
,
"Trip%d[type=%d,temp=%
l
d]:trend=%d,throttle=%d
\n
"
,
dev_dbg
(
&
tz
->
device
,
"Trip%d[type=%d,temp=%d]:trend=%d,throttle=%d
\n
"
,
trip
,
trip_type
,
trip_temp
,
trend
,
throttle
);
mutex_lock
(
&
tz
->
lock
);
...
...
drivers/thermal/tegra_soctherm.c
View file @
5a924a07
...
...
@@ -293,7 +293,7 @@ static int enable_tsensor(struct tegra_soctherm *tegra,
* H denotes an addition of 0.5 Celsius and N denotes negation
* of the final value.
*/
static
long
translate_temp
(
u16
val
)
static
int
translate_temp
(
u16
val
)
{
long
t
;
...
...
@@ -306,7 +306,7 @@ static long translate_temp(u16 val)
return
t
;
}
static
int
tegra_thermctl_get_temp
(
void
*
data
,
long
*
out_temp
)
static
int
tegra_thermctl_get_temp
(
void
*
data
,
int
*
out_temp
)
{
struct
tegra_thermctl_zone
*
zone
=
data
;
u32
val
;
...
...
drivers/thermal/thermal_core.c
View file @
5a924a07
...
...
@@ -426,7 +426,7 @@ static void handle_non_critical_trips(struct thermal_zone_device *tz,
static
void
handle_critical_trips
(
struct
thermal_zone_device
*
tz
,
int
trip
,
enum
thermal_trip_type
trip_type
)
{
long
trip_temp
;
int
trip_temp
;
tz
->
ops
->
get_trip_temp
(
tz
,
trip
,
&
trip_temp
);
...
...
@@ -465,7 +465,7 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip)
}
/**
* thermal_zone_get_temp() - returns
its the temperature of
thermal zone
* thermal_zone_get_temp() - returns
the temperature of a
thermal zone
* @tz: a valid pointer to a struct thermal_zone_device
* @temp: a valid pointer to where to store the resulting temperature.
*
...
...
@@ -474,14 +474,12 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip)
*
* Return: On success returns 0, an error code otherwise
*/
int
thermal_zone_get_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
int
thermal_zone_get_temp
(
struct
thermal_zone_device
*
tz
,
int
*
temp
)
{
int
ret
=
-
EINVAL
;
#ifdef CONFIG_THERMAL_EMULATION
int
count
;
unsigned
long
crit_temp
=
-
1UL
;
int
crit_temp
=
INT_MAX
;
enum
thermal_trip_type
type
;
#endif
if
(
!
tz
||
IS_ERR
(
tz
)
||
!
tz
->
ops
->
get_temp
)
goto
exit
;
...
...
@@ -489,25 +487,26 @@ int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
mutex_lock
(
&
tz
->
lock
);
ret
=
tz
->
ops
->
get_temp
(
tz
,
temp
);
#ifdef CONFIG_THERMAL_EMULATION
if
(
!
tz
->
emul_temperature
)
goto
skip_emul
;
for
(
count
=
0
;
count
<
tz
->
trips
;
count
++
)
{
ret
=
tz
->
ops
->
get_trip_type
(
tz
,
count
,
&
type
);
if
(
!
ret
&&
type
==
THERMAL_TRIP_CRITICAL
)
{
ret
=
tz
->
ops
->
get_trip_temp
(
tz
,
count
,
&
crit_temp
);
break
;
}
}
if
(
ret
)
goto
skip_emul
;
if
(
IS_ENABLED
(
CONFIG_THERMAL_EMULATION
)
&&
tz
->
emul_temperature
)
{
for
(
count
=
0
;
count
<
tz
->
trips
;
count
++
)
{
ret
=
tz
->
ops
->
get_trip_type
(
tz
,
count
,
&
type
);
if
(
!
ret
&&
type
==
THERMAL_TRIP_CRITICAL
)
{
ret
=
tz
->
ops
->
get_trip_temp
(
tz
,
count
,
&
crit_temp
);
break
;
}
}
if
(
*
temp
<
crit_temp
)
*
temp
=
tz
->
emul_temperature
;
skip_emul:
#endif
/*
* Only allow emulating a temperature when the real temperature
* is below the critical temperature so that the emulation code
* cannot hide critical conditions.
*/
if
(
!
ret
&&
*
temp
<
crit_temp
)
*
temp
=
tz
->
emul_temperature
;
}
mutex_unlock
(
&
tz
->
lock
);
exit:
return
ret
;
...
...
@@ -516,8 +515,7 @@ EXPORT_SYMBOL_GPL(thermal_zone_get_temp);
static
void
update_temperature
(
struct
thermal_zone_device
*
tz
)
{
long
temp
;
int
ret
;
int
temp
,
ret
;
ret
=
thermal_zone_get_temp
(
tz
,
&
temp
);
if
(
ret
)
{
...
...
@@ -577,15 +575,14 @@ static ssize_t
temp_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
thermal_zone_device
*
tz
=
to_thermal_zone
(
dev
);
long
temperature
;
int
ret
;
int
temperature
,
ret
;
ret
=
thermal_zone_get_temp
(
tz
,
&
temperature
);
if
(
ret
)
return
ret
;
return
sprintf
(
buf
,
"%
l
d
\n
"
,
temperature
);
return
sprintf
(
buf
,
"%d
\n
"
,
temperature
);
}
static
ssize_t
...
...
@@ -689,7 +686,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
{
struct
thermal_zone_device
*
tz
=
to_thermal_zone
(
dev
);
int
trip
,
ret
;
long
temperature
;
int
temperature
;
if
(
!
tz
->
ops
->
get_trip_temp
)
return
-
EPERM
;
...
...
@@ -702,7 +699,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
if
(
ret
)
return
ret
;
return
sprintf
(
buf
,
"%
l
d
\n
"
,
temperature
);
return
sprintf
(
buf
,
"%d
\n
"
,
temperature
);
}
static
ssize_t
...
...
@@ -711,7 +708,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
{
struct
thermal_zone_device
*
tz
=
to_thermal_zone
(
dev
);
int
trip
,
ret
;
unsigned
long
temperature
;
int
temperature
;
if
(
!
tz
->
ops
->
set_trip_hyst
)
return
-
EPERM
;
...
...
@@ -719,7 +716,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
if
(
!
sscanf
(
attr
->
attr
.
name
,
"trip_point_%d_hyst"
,
&
trip
))
return
-
EINVAL
;
if
(
kstrto
ul
(
buf
,
10
,
&
temperature
))
if
(
kstrto
int
(
buf
,
10
,
&
temperature
))
return
-
EINVAL
;
/*
...
...
@@ -738,7 +735,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
{
struct
thermal_zone_device
*
tz
=
to_thermal_zone
(
dev
);
int
trip
,
ret
;
unsigned
long
temperature
;
int
temperature
;
if
(
!
tz
->
ops
->
get_trip_hyst
)
return
-
EPERM
;
...
...
@@ -748,7 +745,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
ret
=
tz
->
ops
->
get_trip_hyst
(
tz
,
trip
,
&
temperature
);
return
ret
?
ret
:
sprintf
(
buf
,
"%
l
d
\n
"
,
temperature
);
return
ret
?
ret
:
sprintf
(
buf
,
"%d
\n
"
,
temperature
);
}
static
ssize_t
...
...
@@ -847,7 +844,27 @@ policy_show(struct device *dev, struct device_attribute *devattr, char *buf)
return
sprintf
(
buf
,
"%s
\n
"
,
tz
->
governor
->
name
);
}
#ifdef CONFIG_THERMAL_EMULATION
static
ssize_t
available_policies_show
(
struct
device
*
dev
,
struct
device_attribute
*
devattr
,
char
*
buf
)
{
struct
thermal_governor
*
pos
;
ssize_t
count
=
0
;
ssize_t
size
=
PAGE_SIZE
;
mutex_lock
(
&
thermal_governor_lock
);
list_for_each_entry
(
pos
,
&
thermal_governor_list
,
governor_list
)
{
size
=
PAGE_SIZE
-
count
;
count
+=
scnprintf
(
buf
+
count
,
size
,
"%s "
,
pos
->
name
);
}
count
+=
scnprintf
(
buf
+
count
,
size
,
"
\n
"
);
mutex_unlock
(
&
thermal_governor_lock
);
return
count
;
}
static
ssize_t
emul_temp_store
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
...
...
@@ -873,7 +890,6 @@ emul_temp_store(struct device *dev, struct device_attribute *attr,
return
ret
?
ret
:
count
;
}
static
DEVICE_ATTR
(
emul_temp
,
S_IWUSR
,
NULL
,
emul_temp_store
);
#endif
/*CONFIG_THERMAL_EMULATION*/
static
ssize_t
sustainable_power_show
(
struct
device
*
dev
,
struct
device_attribute
*
devattr
,
...
...
@@ -1032,6 +1048,7 @@ static DEVICE_ATTR(temp, 0444, temp_show, NULL);
static
DEVICE_ATTR
(
mode
,
0644
,
mode_show
,
mode_store
);
static
DEVICE_ATTR
(
passive
,
S_IRUGO
|
S_IWUSR
,
passive_show
,
passive_store
);
static
DEVICE_ATTR
(
policy
,
S_IRUGO
|
S_IWUSR
,
policy_show
,
policy_store
);
static
DEVICE_ATTR
(
available_policies
,
S_IRUGO
,
available_policies_show
,
NULL
);
/* sys I/F for cooling device */
#define to_cooling_device(_dev) \
...
...
@@ -1803,11 +1820,12 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
goto
unregister
;
}
#ifdef CONFIG_THERMAL_EMULATION
result
=
device_create_file
(
&
tz
->
device
,
&
dev_attr_emul_temp
);
if
(
result
)
goto
unregister
;
#endif
if
(
IS_ENABLED
(
CONFIG_THERMAL_EMULATION
))
{
result
=
device_create_file
(
&
tz
->
device
,
&
dev_attr_emul_temp
);
if
(
result
)
goto
unregister
;
}
/* Create policy attribute */
result
=
device_create_file
(
&
tz
->
device
,
&
dev_attr_policy
);
if
(
result
)
...
...
@@ -1818,6 +1836,11 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
if
(
result
)
goto
unregister
;
/* Create available_policies attribute */
result
=
device_create_file
(
&
tz
->
device
,
&
dev_attr_available_policies
);
if
(
result
)
goto
unregister
;
/* Update 'this' zone's governor information */
mutex_lock
(
&
thermal_governor_lock
);
...
...
@@ -1849,9 +1872,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
INIT_DELAYED_WORK
(
&
(
tz
->
poll_queue
),
thermal_zone_device_check
);
if
(
!
tz
->
ops
->
get_temp
)
thermal_zone_device_set_polling
(
tz
,
0
);
thermal_zone_device_update
(
tz
);
return
tz
;
...
...
@@ -1918,6 +1938,7 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
if
(
tz
->
ops
->
get_mode
)
device_remove_file
(
&
tz
->
device
,
&
dev_attr_mode
);
device_remove_file
(
&
tz
->
device
,
&
dev_attr_policy
);
device_remove_file
(
&
tz
->
device
,
&
dev_attr_available_policies
);
remove_trip_attrs
(
tz
);
thermal_set_governor
(
tz
,
NULL
);
...
...
drivers/thermal/thermal_hwmon.c
View file @
5a924a07
...
...
@@ -69,7 +69,7 @@ static DEVICE_ATTR(name, 0444, name_show, NULL);
static
ssize_t
temp_input_show
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
long
temperature
;
int
temperature
;
int
ret
;
struct
thermal_hwmon_attr
*
hwmon_attr
=
container_of
(
attr
,
struct
thermal_hwmon_attr
,
attr
);
...
...
@@ -83,7 +83,7 @@ temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
if
(
ret
)
return
ret
;
return
sprintf
(
buf
,
"%
l
d
\n
"
,
temperature
);
return
sprintf
(
buf
,
"%d
\n
"
,
temperature
);
}
static
ssize_t
...
...
@@ -95,14 +95,14 @@ temp_crit_show(struct device *dev, struct device_attribute *attr, char *buf)
=
container_of
(
hwmon_attr
,
struct
thermal_hwmon_temp
,
temp_crit
);
struct
thermal_zone_device
*
tz
=
temp
->
tz
;
long
temperature
;
int
temperature
;
int
ret
;
ret
=
tz
->
ops
->
get_trip_temp
(
tz
,
0
,
&
temperature
);
if
(
ret
)
return
ret
;
return
sprintf
(
buf
,
"%
l
d
\n
"
,
temperature
);
return
sprintf
(
buf
,
"%d
\n
"
,
temperature
);
}
...
...
@@ -142,7 +142,7 @@ thermal_hwmon_lookup_temp(const struct thermal_hwmon_device *hwmon,
static
bool
thermal_zone_crit_temp_valid
(
struct
thermal_zone_device
*
tz
)
{
unsigned
long
temp
;
int
temp
;
return
tz
->
ops
->
get_crit_temp
&&
!
tz
->
ops
->
get_crit_temp
(
tz
,
&
temp
);
}
...
...
drivers/thermal/ti-soc-thermal/ti-thermal-common.c
View file @
5a924a07
...
...
@@ -76,14 +76,14 @@ static inline int ti_thermal_hotspot_temperature(int t, int s, int c)
/* thermal zone ops */
/* Get temperature callback function for thermal zone */
static
inline
int
__ti_thermal_get_temp
(
void
*
devdata
,
long
*
temp
)
static
inline
int
__ti_thermal_get_temp
(
void
*
devdata
,
int
*
temp
)
{
struct
thermal_zone_device
*
pcb_tz
=
NULL
;
struct
ti_thermal_data
*
data
=
devdata
;
struct
ti_bandgap
*
bgp
;
const
struct
ti_temp_sensor
*
s
;
int
ret
,
tmp
,
slope
,
constant
;
unsigned
long
pcb_temp
;
int
pcb_temp
;
if
(
!
data
)
return
0
;
...
...
@@ -119,7 +119,7 @@ static inline int __ti_thermal_get_temp(void *devdata, long *temp)
}
static
inline
int
ti_thermal_get_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
struct
ti_thermal_data
*
data
=
thermal
->
devdata
;
...
...
@@ -229,7 +229,7 @@ static int ti_thermal_get_trip_type(struct thermal_zone_device *thermal,
/* Get trip temperature callback functions for thermal zone */
static
int
ti_thermal_get_trip_temp
(
struct
thermal_zone_device
*
thermal
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
if
(
!
ti_thermal_is_valid_trip
(
trip
))
return
-
EINVAL
;
...
...
@@ -280,7 +280,7 @@ static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
/* Get critical temperature callback functions for thermal zone */
static
int
ti_thermal_get_crit_temp
(
struct
thermal_zone_device
*
thermal
,
unsigned
long
*
temp
)
int
*
temp
)
{
/* shutdown zone */
return
ti_thermal_get_trip_temp
(
thermal
,
OMAP_TRIP_NUMBER
-
1
,
temp
);
...
...
drivers/thermal/x86_pkg_temp_thermal.c
View file @
5a924a07
...
...
@@ -164,7 +164,7 @@ static int get_tj_max(int cpu, u32 *tj_max)
return
err
;
}
static
int
sys_get_curr_temp
(
struct
thermal_zone_device
*
tzd
,
unsigned
long
*
temp
)
static
int
sys_get_curr_temp
(
struct
thermal_zone_device
*
tzd
,
int
*
temp
)
{
u32
eax
,
edx
;
struct
phy_dev_entry
*
phy_dev_entry
;
...
...
@@ -175,7 +175,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
if
(
eax
&
0x80000000
)
{
*
temp
=
phy_dev_entry
->
tj_max
-
((
eax
>>
16
)
&
0x7f
)
*
1000
;
pr_debug
(
"sys_get_curr_temp %
l
d
\n
"
,
*
temp
);
pr_debug
(
"sys_get_curr_temp %d
\n
"
,
*
temp
);
return
0
;
}
...
...
@@ -183,7 +183,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
}
static
int
sys_get_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
*
temp
)
int
trip
,
int
*
temp
)
{
u32
eax
,
edx
;
struct
phy_dev_entry
*
phy_dev_entry
;
...
...
@@ -214,13 +214,13 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd,
*
temp
=
phy_dev_entry
->
tj_max
-
thres_reg_value
*
1000
;
else
*
temp
=
0
;
pr_debug
(
"sys_get_trip_temp %
l
d
\n
"
,
*
temp
);
pr_debug
(
"sys_get_trip_temp %d
\n
"
,
*
temp
);
return
0
;
}
static
int
sys_set_trip_temp
(
struct
thermal_zone_device
*
tzd
,
int
trip
,
unsigned
long
temp
)
int
temp
)
{
u32
l
,
h
;
struct
phy_dev_entry
*
phy_dev_entry
;
...
...
include/linux/thermal.h
View file @
5a924a07
...
...
@@ -92,23 +92,19 @@ struct thermal_zone_device_ops {
struct
thermal_cooling_device
*
);
int
(
*
unbind
)
(
struct
thermal_zone_device
*
,
struct
thermal_cooling_device
*
);
int
(
*
get_temp
)
(
struct
thermal_zone_device
*
,
unsigned
long
*
);
int
(
*
get_temp
)
(
struct
thermal_zone_device
*
,
int
*
);
int
(
*
get_mode
)
(
struct
thermal_zone_device
*
,
enum
thermal_device_mode
*
);
int
(
*
set_mode
)
(
struct
thermal_zone_device
*
,
enum
thermal_device_mode
);
int
(
*
get_trip_type
)
(
struct
thermal_zone_device
*
,
int
,
enum
thermal_trip_type
*
);
int
(
*
get_trip_temp
)
(
struct
thermal_zone_device
*
,
int
,
unsigned
long
*
);
int
(
*
set_trip_temp
)
(
struct
thermal_zone_device
*
,
int
,
unsigned
long
);
int
(
*
get_trip_hyst
)
(
struct
thermal_zone_device
*
,
int
,
unsigned
long
*
);
int
(
*
set_trip_hyst
)
(
struct
thermal_zone_device
*
,
int
,
unsigned
long
);
int
(
*
get_crit_temp
)
(
struct
thermal_zone_device
*
,
unsigned
long
*
);
int
(
*
set_emul_temp
)
(
struct
thermal_zone_device
*
,
unsigned
long
);
int
(
*
get_trip_temp
)
(
struct
thermal_zone_device
*
,
int
,
int
*
);
int
(
*
set_trip_temp
)
(
struct
thermal_zone_device
*
,
int
,
int
);
int
(
*
get_trip_hyst
)
(
struct
thermal_zone_device
*
,
int
,
int
*
);
int
(
*
set_trip_hyst
)
(
struct
thermal_zone_device
*
,
int
,
int
);
int
(
*
get_crit_temp
)
(
struct
thermal_zone_device
*
,
int
*
);
int
(
*
set_emul_temp
)
(
struct
thermal_zone_device
*
,
int
);
int
(
*
get_trend
)
(
struct
thermal_zone_device
*
,
int
,
enum
thermal_trend
*
);
int
(
*
notify
)
(
struct
thermal_zone_device
*
,
int
,
...
...
@@ -332,9 +328,9 @@ struct thermal_genl_event {
* temperature.
*/
struct
thermal_zone_of_device_ops
{
int
(
*
get_temp
)(
void
*
,
long
*
);
int
(
*
get_temp
)(
void
*
,
int
*
);
int
(
*
get_trend
)(
void
*
,
long
*
);
int
(
*
set_emul_temp
)(
void
*
,
unsigned
long
);
int
(
*
set_emul_temp
)(
void
*
,
int
);
};
/**
...
...
@@ -406,7 +402,7 @@ thermal_of_cooling_device_register(struct device_node *np, char *, void *,
const
struct
thermal_cooling_device_ops
*
);
void
thermal_cooling_device_unregister
(
struct
thermal_cooling_device
*
);
struct
thermal_zone_device
*
thermal_zone_get_zone_by_name
(
const
char
*
name
);
int
thermal_zone_get_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
);
int
thermal_zone_get_temp
(
struct
thermal_zone_device
*
tz
,
int
*
temp
);
int
get_tz_trend
(
struct
thermal_zone_device
*
,
int
);
struct
thermal_instance
*
get_thermal_instance
(
struct
thermal_zone_device
*
,
...
...
@@ -457,7 +453,7 @@ static inline struct thermal_zone_device *thermal_zone_get_zone_by_name(
const
char
*
name
)
{
return
ERR_PTR
(
-
ENODEV
);
}
static
inline
int
thermal_zone_get_temp
(
struct
thermal_zone_device
*
tz
,
unsigned
long
*
temp
)
struct
thermal_zone_device
*
tz
,
int
*
temp
)
{
return
-
ENODEV
;
}
static
inline
int
get_tz_trend
(
struct
thermal_zone_device
*
tz
,
int
trip
)
{
return
-
ENODEV
;
}
...
...
include/trace/events/thermal_power_allocator.h
View file @
5a924a07
...
...
@@ -11,7 +11,7 @@ TRACE_EVENT(thermal_power_allocator,
u32
total_req_power
,
u32
*
granted_power
,
u32
total_granted_power
,
size_t
num_actors
,
u32
power_range
,
u32
max_allocatable_power
,
unsigned
long
current_temp
,
s32
delta_temp
),
int
current_temp
,
s32
delta_temp
),
TP_ARGS
(
tz
,
req_power
,
total_req_power
,
granted_power
,
total_granted_power
,
num_actors
,
power_range
,
max_allocatable_power
,
current_temp
,
delta_temp
),
...
...
@@ -24,7 +24,7 @@ TRACE_EVENT(thermal_power_allocator,
__field
(
size_t
,
num_actors
)
__field
(
u32
,
power_range
)
__field
(
u32
,
max_allocatable_power
)
__field
(
unsigned
long
,
current_temp
)
__field
(
int
,
current_temp
)
__field
(
s32
,
delta_temp
)
),
TP_fast_assign
(
...
...
@@ -42,7 +42,7 @@ TRACE_EVENT(thermal_power_allocator,
__entry
->
delta_temp
=
delta_temp
;
),
TP_printk
(
"thermal_zone_id=%d req_power={%s} total_req_power=%u granted_power={%s} total_granted_power=%u power_range=%u max_allocatable_power=%u current_temperature=%
lu
delta_temperature=%d"
,
TP_printk
(
"thermal_zone_id=%d req_power={%s} total_req_power=%u granted_power={%s} total_granted_power=%u power_range=%u max_allocatable_power=%u current_temperature=%
d
delta_temperature=%d"
,
__entry
->
tz_id
,
__print_array
(
__get_dynamic_array
(
req_power
),
__entry
->
num_actors
,
4
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment