与 gpio相关的OF函数

一.  简介

前面在设备树文件中,创建了 Led设备节点。如下所示:

    gpioled{
        compatible = "alientek, gpioled";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpioled>;
        led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
        status = "okay";
    };
这里Led设备节点中,定义了一个名为 “led-gpio” 的属性,led-gpio属性描述了 gpioled 这个设备所使用的 GPIO。在驱动程序中需要读取 gpio 属性内容,Linux 内核提供了几个与 GPIO 有关的 OF 函数。

二. 与 gpio子系统相关的OF函数

1、of_gpio_named_count 函数

of_gpio_named_count 函数用于获取设备树某个属性里面定义了几个 GPIO 信息。此函数原型如下:
int of_gpio_named_count(struct device_node *np, const char *propname)
函数参数和返回值含义如下:
np :设备节点。
propname :要统计的 GPIO 属性。
返回值: 正值,统计到的 GPIO 数量;负值,失败。
要注意的是,当为 空的 GPIO 信息时,of_gpio_named_count 函数也会统计到,比如:
gpios = <0
 &gpio1 1 2
 0
 &gpio2 3 4>;
上述代码的 “ gpios ” 节点一共定义了 4 GPIO ,但是有 2 个是空的,没有实际的含义。 通过 of_gpio_named_count 函数统计出来的 GPIO 数量就是 4 个。

2、of_gpio_count 函数

of_gpio_named_count 函数一样,但是不同的地方在于,此函数统计的是“ gpios ”这个属性的 GPIO 数量,而 of_gpio_named_count 函数可以统计任意属性的 GPIO 信息,函数原型如下 所示:
int of_gpio_count(struct device_node *np)
函数参数和返回值含义如下:
np :设备节点。
返回值: 正值,统计到的 GPIO 数量;负值,失败。

3、of_get_named_gpio 函数

此函数获取 GPIO 编号,因为 Linux 内核中关于 GPIO API 函数都要使用 GPIO 编号, 此函数会将设备树中类似 <&gpio5 7 GPIO_ACTIVE_LOW> 的属性信息转换为对应的 GPIO 号。
注意:此函数在驱动中使用很频繁!
函数原型如下:
int of_get_named_gpio(struct device_node *np, const char *propname, int index)
函数参数和返回值含义如下:
np :设备节点。
propname :包含要获取 GPIO 信息的属性名。
index GPIO 索引,因为一个属性里面可能包含多个 GPIO ,此参数指定要获取哪个 GPIO的编号,如果只有一个 GPIO 信息的话此参数为 0
返回值: 正值,获取到的 GPIO 编号;负值,失败。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值