Nano Pi Neo Plus2 GPIO断电

时间:2018-01-19 16:28:52

标签: linux-kernel embedded-linux device-tree

我试图利用gpio-poweroff程序。我试图了解我所用方法的后果。

这就是我做的事情

1)添加

power_ctrl: power_ctrl {
   compatible = "gpio-poweroff";
   gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>;
    force;
};

arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-neo-plus2.dts

2)重新编译设备树blob并将其放在它所属的位置

gpio-poweroff的代码被探测但由于pm_poweroff_handler设置为某些内容而失败。所以我发现它在drivers/firmware/psci.c中设置为psci_sys_poweroff

3)我评论了这一行

4)使用新内核重新启动并在命令行上发出poweroff

5)GPIO按预期被拉高

6)通过外部电路关闭电路板

我非常渴望知道在嵌入式系统上这是否可行?好像我做了一件令人讨厌的事情。想到的唯一合理的方法是使用某种回调链,并将GPIO poweroff处理程序的优先级设置为低。这样我就可以切换GPIO,然后使用PSCI逻辑正确关闭。但是这种方法的RFC被拒绝了,似乎没有人踩到。

另一种解决方案是在gpio-poweroff.c中进行丑陋的黑客攻击并将旧回调保存到变量并在gpio切换后调用它。

那你们觉得怎么样?

0 个答案:

没有答案