linux driver中的dts定义传值进内核问题。
gpio-dev {compatible = "gpio-dev";
reset3g {
label = "reset3g";
gpios = <&gpio3 0 1>;
};
我在 dts 文件定义了以上内容,用于控制GPIO口输出电平 。
我在内核驱动里面已经把自己想要的功能实现了 ,但是我是把针脚数写死了 。
google 了各种关键字 , 找不到相关的 。
请问我应该可以把dts 传进来的值 ,在内核里面调用?
============以下是一些自己的分析=========================static int gpio_probe(struct platform_device *dev)我在定义probe 的时候,发现如果没有 “ struct platform_device *dev " 就会编译出错 ,
所以我觉得 dts 里面的table 应该是在 *dev 里面的 ,
而就算这样 ,但我不知道应该怎么样把*dev 里面的值拿出来啊 , 我不知道里面是有什么东西的。
DTS就是内核驱动的配置文件,主要就是给驱动服务的。驱动是可以把这些值读出来的。读写的函数是在drivers/of的目录里面。 具体用法根据fdt.c里面的函数,顺藤摸瓜,随便查查源码就可以了。 你的这个驱动,完全没必要重复造轮子,内核里有 drivers/leds/leds-gpio.c
你可以参考这个驱动,看看他是怎么从dts中获取gpio信息的 回复 3# senioryzc
恩 ,我已经搞掂了 , 只不过leds 的驱动是加载到 /sys/class/led 里面 ,而我是需要加载到 /dev
不过我都是参考这个驱动搞掂的 .
而其实我代码本来就是没有问题的 ,只是因为我写如下的样式倒是获取不到gpio号.
gpio-dev {
.compatible = "gpio-dev"
reset3g {
.label = "reset3g"
.gpios = "xxxxx"
自作聪明了 ,而如果以上格式 ,还需要一个 for each 的函数用来获取 child node
页:
[1]