Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » SK-A40i
Пробуждение по кнопке PWRON
phantom36
Добавлено 06.02.2026 04:19
0
Сообщение: 1
phantom36
0

Пункты: 1114
Регистрация: 13.06.2015
помогите разобраться с включением по кнопке PWRON...

до этого добавлял в DTS нужное для пробуждения по GPIO, с подтянутого к плюсу Pin H6 плата просыпалась из сна mem. теперь появилась необходимость пробудить с кнопки PWRON, вытер назад всё что дописывал для работы H6 как wakeup-source. в DTS добавил:

axp20x_pek: axp20x-pek {
compatible = "x-powers,axp221-pek";
status = "okay";
wakeup-source;
};

появился axp221-pek:
# cat /sys/class/wakeup/*/name
1c20400.rtc
alarmtimer.0.auto
axp221-pek
mmc2
1-1.1

nmi видит нажатие на кнопку (61)
# cat /proc/interrupts | grep -E "nmi|pek"
88: 61 0 0 0 sunxi-nmi 0 Level

но из сна не выводит. не понимаю что делать дальше...
Спуститься к концу Подняться к началу
Персональная информация
phantom36
Добавлено 07.02.2026 02:51 Сообщение: 2
phantom36
0

Пункты: 1114
Регистрация: 13.06.2015
сутки прошли, хочу повторить вопрос: как сконфигурировать buildroot-2022.08.8-sk-a40i чтобы на вашей плате SK-A40i работало пробуждение из спящего режима кнопкой PWRON или входом PWRON на разъёме X9, контакт 8? не выключение зажатой кнопкой, а именно задействовать её как "wakeup-source" в .dts?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.02.2026 10:57 Сообщение: 3
sasamy
4.71

Пункты: 96462
Регистрация: 14.08.2009
Цитата
сутки прошли, хочу повторить вопрос: как сконфигурировать buildroot-2022.08.8-sk-a40i чтобы на вашей плате SK-A40i работало пробуждение из спящего режима кнопкой PWRON или входом PWRON на разъёме X9, контакт 8? не выключение зажатой кнопкой, а именно задействовать её как "wakeup-source" в .dts?


этим не buildroot занимается а ядро, у вас вроде все верно сделано - должны быть включены прерывания и не должны отключаться во время засыпания - wakeup-source, могу предложить включить отладку в ядре и искать причину

make linux-menuconfig

Power management options ->
[*] Power Management Debug Support
[*] Extra PM attributes in sysfs for low-level debugging/testing
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.02.2026 13:05 Сообщение: 4
sasamy
4.71

Пункты: 96462
Регистрация: 14.08.2009
Цитата
могу предложить включить отладку в ядре и искать причину

make linux-menuconfig

Power management options ->
[*] Power Management Debug Support
[*] Extra PM attributes in sysfs for low-level debugging/testing


включил отладку - по логу обнаружил что прерывание nmi исключается из списка wakeup потому что нет ф-ции включения этого wakeup, добавил флаг в описание контроллера чтобы это игноировалось и заработало пробужде6ние по кнопке power on/off - ничего добавлять в DTS не надо, нужно только добавить флаг IRQCHIP_SKIP_SET_WAKE в файле

buildroot-2022.08.8-sk-a40i/output/build/linux-custom/drivers/irqchip/irq-sunxi-nmi.c

gc->chip_types[0].chip.flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED | IRQCHIP_SKIP_SET_WAKE;
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.02.2026 13:14 Сообщение: 5
sasamy
4.71

Пункты: 96462
Регистрация: 14.08.2009
Цитата
заработало пробужде6ние по кнопке power on/off - ничего добавлять в DTS не надо


чтобы не отключалось питание после нажатия кнопки - удалите обработчик

/etc/acpi/PWRF/00000080

или поменяйте на своё усмотрение - это простой скрипт
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.02.2026 13:49 Сообщение: 6
sasamy
4.71

Пункты: 96462
Регистрация: 14.08.2009
Цитата

чтобы не отключалось питание после нажатия кнопки - удалите обработчик

/etc/acpi/PWRF/00000080

или поменяйте на своё усмотрение - это простой скрипт


описание busybox acpid есть тут

https://wiki.alpinelinux.org/wiki/Power_management#Busybox_acpid

еще можно подправить драйвер кнопки pek и слать дополнительно события suspend при коротком нажатии, но там у них axp223 и заработает ли на нашем неизвестно

https://forum.clockworkpi.com/t/enabling-standby-mode-using-the-power-key/5695
Спуститься к концу Подняться к началу
Персональная информация
phantom36
Добавлено 08.02.2026 16:10 Сообщение: 7
phantom36
0

Пункты: 1114
Регистрация: 13.06.2015
понял, спасибо большое за ответ. сегодня буду пробовать - завтра отпишусь.
Спуститься к концу Подняться к началу
Персональная информация
phantom36
Добавлено 08.02.2026 19:00 Сообщение: 8
phantom36
0

Пункты: 1114
Регистрация: 13.06.2015
добавлена в buildroot-2022.08.8-sk-a40i/output/build/linux-custom/drivers/irqchip/irq-sunxi-nmi.c как вы указали IRQCHIP_SKIP_SET_WAKE;
пересобрано ядро.

засыпает по команде echo mem > /sys/power/state, просыпается и с GPIO H6 и с кнопки PWRON.

что удивило, в списке прерываний не видится прерывание самой кнопки axp22x_irq_chip, видится только прерывание nmi.
91: 20 0 0 0 sunxi-nmi 0 Level axp22x_irq_chip
114: 0 0 0 5 axp22x_irq_chip 22 Edge axp20x-pek-dbr
115: 0 0 0 5 axp22x_irq_chip 23 Edge axp20x-pek-dbf

большое спасибо за помощь, объяснение и оперативность!
Спуститься к концу Подняться к началу
Персональная информация
phantom36
Добавлено 08.02.2026 19:03 Сообщение: 9
phantom36
0

Пункты: 1114
Регистрация: 13.06.2015
ошибся, имел в виду не видятся прерывания Edge axp20x-pek-dbr и Edge axp20x-pek-dbl.
хотя в .dts указанно именно на них:

&i2c0 {
status = "okay";

axp22x: pmic@34 {
compatible = "x-powers,axp221";
reg = <0x34>;
interrupt-parent = <&nmi_intc>;
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
//wakeup-source;
axp20x_pek: axp20x-pek {
compatible = "x-powers,axp221-pek";
status = "okay";
wakeup-source;
};
};
};
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.02.2026 19:15 Сообщение: 10
sasamy
4.71

Пункты: 96462
Регистрация: 14.08.2009
Цитата

имел в виду не видятся прерывания Edge axp20x-pek-dbr и Edge axp20x-pek-dbl


смотрите внимательно - они на 4 ядре у вас в логе

91: 20 0 0 0 sunxi-nmi 0 Level axp22x_irq_chip
114: 0 0 0 5 axp22x_irq_chip 22 Edge axp20x-pek-dbr
115: 0 0 0 5 axp22x_irq_chip 23 Edge axp20x-pek-dbf

nmi в два раза чаще срабатывает - это настоящее прерываание (родительское) и его обработчик вызывается на каждый фронт, 2 * (dbr + dbf) = nmi
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-A40i