linux内核gpio设备树,linux-kernel - 如何将树莓派上的gpio引脚与设备驱动程序中的设备树一起使用? - SO中文参考 - www.soinside.com...

[我尝试开发一个驱动程序,以通过树莓派上的gpio引脚控制自定义硬件。

我希望将新的gpio_desc与设备树结合使用。但是我无法使它正常工作。

如果我尝试通过red = gpio_to_desc( 17 );一切正常,但

green = gpiod_get(dev, "carr", GPIOD_OUT_LOW);

似乎跳过了设备树。

在dmesg中:[ 4326.023976] carrera_driver carrera.0: GPIO lookup for consumer carr

[ 4326.023986] carrera_driver carrera.0: using lookup tables for GPIO lookup

[ 4326.023999] carrera_driver carrera.0: No GPIO consumer carr found

[ 4326.024010] carrera_driver carrera.0: Failed to get carr GPIO: -2

[ 4326.024034] carrera_driver: probe of carrera.0 failed with error -2

设备树:/dts-v1/;

/plugin/;

/{

compatible = "brcm,bcm2835";

fragment@0 {

target = ;

__overlay__ {

carrera_pins: carrera_pins {

compatible = "kru,carrera";

brcm,pins = <18>;

brcm,function = <1>; // out

brcm,pull = <0>;

};

};

};

fragment@1 {

target = ;

__overlay__ {

carrera: carrera {

compatible = "kru,carrera";

#gpio-cells = <2>;

pinctrl-names = "default";

pinctrl-0 = ;

carr-gpios = ;

};

};

};

};

我认为这是发生与驱动程序进行设备树映射的部分struct platform_device linuxmag = {

.name = "carrera", /* driver identification */

.id = 0,

.dev = {

.release = linuxmag_release,

}

};

static struct of_device_id linmag_match[] = {

{.compatible = "kru,carrera"},

{}

};

static struct platform_driver mydriver = {

.probe = linuxmag_probe_device,

.remove = linuxmag_remove_device,

.driver = {

.name = "carrera_driver",

.of_match_table = linmag_match,

}

};

我认为我缺少非常重要的东西。

有人举了一个例子,说明如何至少在带设备树的gpiod子模块上使用led?我在Internet上找到的所有内容都有不完整的设备树或没有代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值