Температура процессора на Orange Pi Zero под FreeBSD
Внимание!!!
С версии r354736 разработчиками дополнен оверлей sun8i-h3-sid.dtso и добавлен оверлей sun8i-h3-ths.dtso. Для чипсета h2+, по-прежнему, рекомендуется исправить объявление совместимости с "allwinner,sun8i-h3" на "allwinner,sun8i-h2-plus", предварительно скопировав файлы с новыми именами. Статья утратила актуальность.
Просто не смог пройти мимо интересной информации...
Угнетающе неторопливое реализация возможностей SoC-платформ под FreeBSD стимулирует поиск крупиц информации по этой тематике в поисковых системах. Уж не помню, что я искал, но натолкнулся на обсуждение патча к дереву устройств (DT), предлагаемого FreeBSD коммитером по имени Emmanuel Vadot, для объявления устройства aw_thermal - датчика температуры для ряда процессоров семейства Allwinner. Несмотря на десяток неудачных попыток реализовать DT-оверлей, используя патчи разной достоверности от разных авторов, этот патч все-же показался интересным тем, что, вдобавок к примелькавшимся описаниям устройства aw_thermal, содержал дополнительный фрагмент кода к устройству aw_sid. Вот этот фрагмент:
Thanks to Emmanuel Vadot for this thread: [PATCH 2/7] ARM: dts: sun8i: h3: Add thermal sensor controller node
С версии r354736 разработчиками дополнен оверлей sun8i-h3-sid.dtso и добавлен оверлей sun8i-h3-ths.dtso. Для чипсета h2+, по-прежнему, рекомендуется исправить объявление совместимости с "allwinner,sun8i-h3" на "allwinner,sun8i-h2-plus", предварительно скопировав файлы с новыми именами. Статья утратила актуальность.
Просто не смог пройти мимо интересной информации...
Угнетающе неторопливое реализация возможностей SoC-платформ под FreeBSD стимулирует поиск крупиц информации по этой тематике в поисковых системах. Уж не помню, что я искал, но натолкнулся на обсуждение патча к дереву устройств (DT), предлагаемого FreeBSD коммитером по имени Emmanuel Vadot, для объявления устройства aw_thermal - датчика температуры для ряда процессоров семейства Allwinner. Несмотря на десяток неудачных попыток реализовать DT-оверлей, используя патчи разной достоверности от разных авторов, этот патч все-же показался интересным тем, что, вдобавок к примелькавшимся описаниям устройства aw_thermal, содержал дополнительный фрагмент кода к устройству aw_sid. Вот этот фрагмент:
CODE:
--- a/arch/arm/boot/dts/sun8i-h3.dtsi
+++ b/arch/arm/boot/dts/sun8i-h3.dtsi
@@ -145,6 +145,25 @@
sid: eeprom@1c14000 {
compatible = "allwinner,sun8i-h3-sid";
reg = <0x1c14000 0x400>;
+
+ ths_calib: calib@234 {
+ reg = <0x234 0x2>;
+ };
+ };
+
+ ths: thermal_sensor@1c25000 {
+ compatible = "allwinner,sun8i-h3-ths";
+ reg = <0x01c25000 0x100>;
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
+ clock-names = "apb", "ths";
+ resets = <&ccu RST_BUS_THS>;
+ reset-names = "apb";
+ #thermal-sensor-cells = <0>;
+ status = "disabled";
+
+ nvmem-cells = <&ths_calib>;
+ nvmem-cell-names = "ths-calib";
};
mali: gpu@1c40000 {
Thanks to Emmanuel Vadot for this thread: [PATCH 2/7] ARM: dts: sun8i: h3: Add thermal sensor controller node
Ознакомившись с содержанием файла sun8i-h3-sid.dtso, расположенного в дереве исходного кода FreeBSD в папке /usr/src/sys/dts/arm/overlays/, я добавил сюда еще один файл sun8i-h3-ths.dtso, учтя пожелание еще одного разработчика по имени Rob Herring:
А теперь подведу итог, что, я думаю, я сделал:
Осталось загрузить оверлеи строкой в /boot/loader.conf:
Ещё одно ВАЖНОЕ ЗАМЕЧАНИЕ:
Мой Orange Pi Zero имеет чип h2+, эдакий облегчённый вариант чипа h3. DT подобных неточностей "не прощает"! Это значит, что объявление совместимости с DT (первый фрагмент) НЕОБХОДИМО исправить с "allwinner,sun8i-h3" на "allwinner,sun8i-h2-plus", и не только для sun8i-h3-ths.dtso, но и для sun8i-h3-sid.dtso. И пересобрать их командой make. Я бы скопировал эти файлы как sun8i-h2-plus-ths.dtso и sun8i-h2-plus-sid.dtso и редактировал именно их.
Уфф!!!
Блоб оверлея собран, помещен в надлежащую папку и загружен с помощью fdt_overlays в /boot/loader.conf. Следующие команды помогут посмотреть, появилось ли и работает ли устройство:
ищем слово aw_thermal...
Хотя, лично мне кажется, что к точности измерений есть вопросы - я спокойно держу на радиаторе палец, даже 40 градусов не ощущаю, а sysctl -a | grep aw_therm показывает 62C
Thanks to Emmanuel Vadot for this thread: [PATCH 2/7] ARM: dts: sun8i: h3: Add thermal sensor controller node.
Хорошего человека не грех и два раза поблагодарить
CODE:
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/sun8i-h3-ccu.h>
#include <dt-bindings/reset/sun8i-h3-ccu.h>
/ {
compatible = "allwinner,sun8i-h3";
};
&{/soc/eeprom@1c14000} {
ths_calib: calib@234 {
reg = <0x234 0x2>;
};
};
&{/soc} {
ths: thermal-sensor@1c25000 {
compatible = "allwinner,sun8i-h3-ths";
reg = <0x01c25000 0x100>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>;
clock-names = "apb", "ths";
resets = <&ccu RST_BUS_THS>;
reset-names = "apb";
#thermal-sensor-cells = <0>;
status = "okay";
nvmem-cells = <&ths_calib>;
nvmem-cell-names = "ths-calib";
};
};
А теперь подведу итог, что, я думаю, я сделал:
- Первый фрагмент для "/" объявляет совместимость создаваемого оверлея с DT;
- Второй фрагмент для "&{/soc/eeprom@1c14000}" содержит дополнение для устройства aw_sid, которое, следуя информации из sun8i-h3-sid.dtso, имеет настоящее имя eeprom@1c14000 и располагается в /soc.
ВНИМАНИЕ! Это означает, что Вы должны загрузить оверлей sun8i-h3-sid перед sun8i-h3-ths, чтобы новое устройство было успешно добавлено в систему. - И третий фрагмент "&{/soc}", собственно, и есть описание нового устройсва, создаваемого в /soc;
Осталось загрузить оверлеи строкой в /boot/loader.conf:
CODE:
fdt_overlays="sun8i-h3-sid,sun8i-h3-ths"
Ещё одно ВАЖНОЕ ЗАМЕЧАНИЕ:
Мой Orange Pi Zero имеет чип h2+, эдакий облегчённый вариант чипа h3. DT подобных неточностей "не прощает"! Это значит, что объявление совместимости с DT (первый фрагмент) НЕОБХОДИМО исправить с "allwinner,sun8i-h3" на "allwinner,sun8i-h2-plus", и не только для sun8i-h3-ths.dtso, но и для sun8i-h3-sid.dtso. И пересобрать их командой make. Я бы скопировал эти файлы как sun8i-h2-plus-ths.dtso и sun8i-h2-plus-sid.dtso и редактировал именно их.
Уфф!!!
Блоб оверлея собран, помещен в надлежащую папку и загружен с помощью fdt_overlays в /boot/loader.conf. Следующие команды помогут посмотреть, появилось ли и работает ли устройство:
CODE:
devinfo | grep aw_
dmesg | grep aw_
sysctl -a | grep aw_therm
ищем слово aw_thermal...
Хотя, лично мне кажется, что к точности измерений есть вопросы - я спокойно держу на радиаторе палец, даже 40 градусов не ощущаю, а sysctl -a | grep aw_therm показывает 62C
Thanks to Emmanuel Vadot for this thread: [PATCH 2/7] ARM: dts: sun8i: h3: Add thermal sensor controller node.
Хорошего человека не грех и два раза поблагодарить
Комментарии
Показывать комментарии Как список | Древовидной структурой