起初使用如下方式
&i2c1 {
alsps@44 {
ldo_hrs_pin = <&pio 177 0>;
....
};
};
在驱动中按如下的写法
LDO_HRS_PIN = of_get_named_gpio(client->dev.of_node,"ldo_hrs_pin", 0);
gpio_request(LDO_HRS_PIN, "LDO_HRS_PIN");
上述写法在32位kernel上没有问题,但是在64位kernel上会报 invalid GPIO 23062,从而导致ic上电失败,具体原因不详,希望大牛们指点一二,为了不耽误项目进度,因此选择用下面的方式进行控制。
dts中的写法
&i2c1 {
alsps@44 {
/* customization */
pinctrl-names = "hrs_en_low", "hrs_en_high";
pinctrl-0 = <&hrs_en_low>;

本文探讨了在32位与64位内核环境下,使用GPIO进行设备控制的不同表现,特别是在64位kernel上遇到的invalid GPIO错误,导致IC上电失败的问题。文中提供了一种通过pinctrl进行替代控制的方法,详细展示了DTS配置与驱动代码的实现过程。
最低0.47元/天 解锁文章
4992

被折叠的 条评论
为什么被折叠?



