设备树之gpio和自定义属性获取

如下图:
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux内核中,可以使用 `devm_gpio_request()` 函数来请求一个GPIO资源,然后使用 `gpio_to_desc()` 函数将GPIO号转换为GPIO描述符,最后使用 `gpio_desc_to_chip()` 函数获取描述符对应的GPIO控制器,从而获取设备树中的GPIO号。 具体的代码实现如下: ```c #include <linux/gpio/driver.h> static int my_probe(struct platform_device *pdev) { int ret; struct gpio_desc *desc; struct gpio_chip *gpio_chip; /* 请求GPIO资源 */ ret = devm_gpio_request(&pdev->dev, MY_GPIO, "my-gpio"); if (ret < 0) return ret; /* 将GPIO号转换为GPIO描述符 */ desc = gpio_to_desc(MY_GPIO); /* 获取GPIO描述符对应的GPIO控制器 */ gpio_chip = gpio_desc_to_chip(desc); /* 获取设备树中的GPIO号 */ int dt_num = of_get_gpio_count(pdev->dev.of_node); if (dt_num > 0) { int dt_gpio = of_get_gpio(pdev->dev.of_node, 0); if (dt_gpio >= 0) { int gpio_num = gpio_chip->base + dt_gpio; printk(KERN_INFO "Device tree GPIO number: %d\n", gpio_num); } } return 0; } static const struct of_device_id my_of_match[] = { { .compatible = "my-device" }, { }, }; MODULE_DEVICE_TABLE(of, my_of_match); static struct platform_driver my_driver = { .probe = my_probe, .driver = { .name = "my-device", .of_match_table = my_of_match, }, }; module_platform_driver(my_driver); ``` 其中,`MY_GPIO` 是在设备树定义GPIO号,可以在设备树中使用 `gpio` 属性进行定义和配置。当设备树定义GPIO号时,`of_get_gpio_count()` 函数返回的值大于0,可以使用 `of_get_gpio()` 函数获取GPIO号。最后需要计算出实际的GPIO号,即 `gpio_chip->base + dt_gpio`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值