Any success to read CPU temp?
On kernel 4.9, i can retrieved temp value, not sure the value is valid neither the unit. I have mtk_thermal and thermal_sys modules loaded.
# lsmod | grep ther
mtk_thermal 5385 0
thermal_sys 53003 1 mtk_thermal
# cat /sys/class/thermal/thermal_zone0/*temp
56934
47000
67000
87000
107000
cat *temp in that dir is not the right way:
see here:
[17:59] root@bpi-r2:~# cat /sys/class/thermal/thermal_zone0/*temp
cat: /sys/class/thermal/thermal_zone0/temp: Invalid argument
47000
67000
87000
107000
[18:00] root@bpi-r2:~# ls /sys/class/thermal/thermal_zone0/
available_policies offset trip_point_0_hyst trip_point_2_temp
integral_cutoff policy trip_point_0_temp trip_point_2_type
k_d power trip_point_0_type trip_point_3_hyst
k_i slope trip_point_1_hyst trip_point_3_temp
k_po subsystem trip_point_1_temp trip_point_3_type
k_pu sustainable_power trip_point_1_type type
mode temp trip_point_2_hyst uevent
first you don’t know which “file” do you cat, second there are not only temperature-sensors there
kernel i used: 4.14.44-main
I take the same example as you in a previous post.
# cat /sys/class/thermal/thermal_zone0/temp
56465
can you compare dts(i) and (def)config between 4.9 and 4.14?
thermal-node and auxadc
I can retrieved a value, not sure the value is valid neither of the unit. If it is degrees Celsius it is high.
$ grep -i thermal .config | grep -v '#'
CONFIG_THERMAL=m
CONFIG_THERMAL_OF=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_MTK_THERMAL=m
The thermal zone are describe in the arch/arm/boot/dts/mt7623.dtsi
Seems like Module i2c-dev and cpuid are need. sensors-detect
is unable to find any sensors.
It is milli (1/1000) degrees celcius…
Cpuid is not available on arm-systems, i have tried with i2c-dev too, but no success
config is (nearly) same im 4.14:
$ grep -i thermal .config | grep -v '#'
CONFIG_THERMAL=m
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
CONFIG_THERMAL_OF=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_MTK_THERMAL=m
@linkerosa have you an idea whats the Problem?
mtk-thermal is read by on-chip auxadc, not by i2c bus.
i had included auxadc as well
grep 'AUX' .config
# CONFIG_USB_SERIAL_QCAUX is not set
# CONFIG_AUXDISPLAY is not set
CONFIG_MEDIATEK_MT6577_AUXADC=m
and of course loaded the module:
[09:36] root@bpi-r2:~# lsmod
Module Size Used by
bridge 151552 0
spi_mt65xx 20480 0
mt6577_auxadc 16384 0
mtk_thermal 16384 0
thermal_sys 61440 1 mtk_thermal
pwm_mediatek 16384 0
fuse 102400 1
ipv6 413696 33 bridge
but still:
[09:38] root@bpi-r2:~# cat /sys/class/thermal/thermal_zone0/temp
cat: /sys/class/thermal/thermal_zone0/temp: Invalid argument
@linkerosa can you please look whats missing/wrong?
Hi, Frank. As I see it’s everyting works in 4.16 kernel
bpi-r2-gentoo /dev # cat /sys/class/thermal/thermal_zone0/temp
46968
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.16.14-bpi-r2-main armv7l)
root@bpi-r2-ubuntu:~# cat /sys/class/thermal/thermal_zone0/temp
29732
can confirm it works with 4.16…so it seems to be a problem in 4.14 (same system):
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.14.48-bpi-r2-main armv7l)
root@bpi-r2-ubuntu:~# cat /sys/class/thermal/thermal_zone0/temp
cat: /sys/class/thermal/thermal_zone0/temp: Invalid argument
CONFIG_MTK_EFUSE=m ?
also not set in 4.16…it seems efuse is not be needed
efuse: efuse@10206000 {
compatible = "mediatek,mt7623-efuse",
"mediatek,mt8173-efuse";
reg = <0 0x10206000 0 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
thermal_calibration_data: calib@424 {
reg = <0x424 0xc>;
};
};
thermal: thermal@1100b000 {
#thermal-sensor-cells = <1>;
compatible = "mediatek,mt7623-thermal",
"mediatek,mt2701-thermal";
reg = <0 0x1100b000 0 0x1000>;
interrupts = <0 70 IRQ_TYPE_LEVEL_LOW>;
clocks = <&pericfg CLK_PERI_THERM>, <&pericfg CLK_PERI_AUXADC>;
clock-names = "therm", "auxadc";
resets = <&pericfg MT2701_PERI_THERM_SW_RST>;
reset-names = "therm";
mediatek,auxadc = <&auxadc>;
mediatek,apmixedsys = <&apmixedsys>;
nvmem-cells = <&thermal_calibration_data>;
nvmem-cell-names = "calibration-data";
};
i have compared thermal,efuse and auxadc-node between 4.14-main and 4.16-main, they are identical
frank@frank-N56VZ:/media/data_ext/bpi-r2-kernel/github$ git diff 4.14-main..4.16-main -- ./drivers/thermal/mtk_thermal.c
diff --git a/drivers/thermal/mtk_thermal.c b/drivers/thermal/mtk_thermal.c
index 1e61c09153c9..c75661a3801a 100644
--- a/drivers/thermal/mtk_thermal.c
+++ b/drivers/thermal/mtk_thermal.c
@@ -32,15 +32,10 @@
#include <linux/types.h>
/* AUXADC Registers */
-#define AUXADC_CON0_V 0x000
-#define AUXADC_CON1_V 0x004
#define AUXADC_CON1_SET_V 0x008
#define AUXADC_CON1_CLR_V 0x00c
#define AUXADC_CON2_V 0x010
#define AUXADC_DATA(channel) (0x14 + (channel) * 4)
-#define AUXADC_MISC_V 0x094
-
-#define AUXADC_CON1_CHANNEL(x) BIT(x)
#define APMIXED_SYS_TS_CON1 0x604
@@ -158,8 +153,6 @@
/* The number of sensing points per bank */
#define MT2712_NUM_SENSORS_PER_ZONE 4
-#define THERMAL_NAME "mtk-thermal"
-
struct mtk_thermal;
struct thermal_bank_cfg {
@@ -765,7 +758,7 @@ static struct platform_driver mtk_thermal_driver = {
.probe = mtk_thermal_probe,
.remove = mtk_thermal_remove,
.driver = {
- .name = THERMAL_NAME,
+ .name = "mtk-thermal",
.of_match_table = mtk_thermal_of_match,
},
};
frank@frank-N56VZ:/media/data_ext/bpi-r2-kernel/github$ git diff 4.14-main..4.16-main -- ./drivers/iio/adc/mt6577_auxadc.c
diff --git a/drivers/iio/adc/mt6577_auxadc.c b/drivers/iio/adc/mt6577_auxadc.c
index 414cf44bf19d..95d76abb64ec 100644
--- a/drivers/iio/adc/mt6577_auxadc.c
+++ b/drivers/iio/adc/mt6577_auxadc.c
@@ -180,7 +180,6 @@ static int mt6577_auxadc_read_raw(struct iio_dev *indio_dev,
}
static const struct iio_info mt6577_auxadc_info = {
- .driver_module = THIS_MODULE,
.read_raw = &mt6577_auxadc_read_raw,
};
@@ -306,6 +305,7 @@ static SIMPLE_DEV_PM_OPS(mt6577_auxadc_pm_ops,
static const struct of_device_id mt6577_auxadc_of_match[] = {
{ .compatible = "mediatek,mt2701-auxadc", },
+ { .compatible = "mediatek,mt2712-auxadc", },
{ .compatible = "mediatek,mt7622-auxadc", },
{ .compatible = "mediatek,mt8173-auxadc", },
{ }
frank@frank-N56VZ:/media/data_ext/bpi-r2-kernel/github$
are any other files involved in the themal-read?
Hi Frank, I tested it again with
CONFIG_MTK_EFUSE = m
works mtk-thermal - without not
root@gate:~# uname -a
Linux gate 4.14.53-bpi-r2-main #8 SMP Thu Jul 5 22:57:48 CEST 2018 armv7l GNU/Linux
root@gate:~# lsmod
Module Size Used by
ip6_tables 24576 0
iptable_filter 16384 1
mtk_thermal 16384 0
thermal_sys 61440 1 mtk_thermal
spi_mt65xx 20480 0
pwm_mediatek 16384 0
mt6577_auxadc 16384 0
nvmem_mtk_efuse 16384 0
cryptodev 53248 0
sunrpc 311296 1
ip_tables 24576 1 iptable_filter
x_tables 28672 3 ip_tables,iptable_filter,ip6_tables
root@gate:~# cat /sys/class/thermal/thermal_zone0/temp
49430
Imho i set this option in my defconfig but the modulename nvmem_mtk_efuse looks new to me
mhm…strange 4.14.53 does not boot… seems like i made a mistake while merging (wonder why i merged 4.14.53 to gmac-branch)
reverted the strange merge, currently it displays 4.14.52, but i can’t merge 4.14.53 again…seems like i messed up my git-repo…any idea how to fix?
thermal with efuse works now (but still don’t know why it is neccessary in 4.14 but not in 4.16):
root@bpi-r2-ubuntu:~# modprobe mtk_thermal
root@bpi-r2-ubuntu:~# modprobe thermal_sys
root@bpi-r2-ubuntu:~# modprobe mt6577_auxadc
root@bpi-r2-ubuntu:~# modprobe nvmem_mtk_efuse
root@bpi-r2-ubuntu:~# cat /sys/class/thermal/thermal_zone0/temp
47320
Hi Frank
driver/thermal/Kconfig
4.16 -> 4.14
depends on NVMEM || !NVMEM
I was wrong was another driver