[我嘗試開發一個驅動程式,以通過樹莓派上的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";
[email protected] {
target = ;
__overlay__ {
carrera_pins: carrera_pins {
compatible = "kru,carrera";
brcm,pins = <18>;
brcm,function = <1>; // out
brcm,pull = <0>;
};
};
};
[email protected] {
target = ;
__overlay__ {
carrera: carrera {
compatible = "kru,carrera";
#gpio-cells = <2>;
pinctrl-names = "default";
pinctrl-0 = ;
carr-gpios = ;
};
};
};
};
我認為這是發生與驅動程式進行裝置樹映射的部分struct platform_device linuxmag = {
.name = "carrera",
.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上找到的所有内容都有不完整的裝置樹或沒有代碼。