打印
[Atmel]

rgb led驱动问题

[复制链接]
826|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-7-30 17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大佬 急需帮助,最近在写一个rgb led驱动,设备树是这样的:
leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_led_gpio_default>;
                status = "okay"; /* conflict with pwm0 */

                red {
                        label = "red";
                        r-gpios = <&pioA 38 GPIO_ACTIVE_LOW>;
                };

                green {
                        label = "green";
                        g-gpios = <&pioA 37 GPIO_ACTIVE_LOW>;
                };

                blue {
                        label = "blue";
                        b-gpios = <&pioA 32 GPIO_ACTIVE_LOW>;
                        linux,default-trigger = "heartbeat";
                };
        };

引脚是gpio的操作,其实就是对gpio操作的驱动,匹配成功后,我用
if(G)
gpio = of_get_named_gpio_flags(np, "g-gpios", 0, &g_flag);
gpio_direction_output(gpio, 0);
if(R)
gpio = of_get_named_gpio_flags(np, "r-gpios", 0, &r_flag);
gpio_direction_output(gpio, 0);

if(B)
gpio = of_get_named_gpio_flags(np, "b-gpios", 0, &b_flag);
gpio_direction_output(gpio, 0);

这两个函数首先读出三个子节点的gpio属性,然后再将gpio操作为低电平点亮灯,if简写了别计较语法了知道就行了,
可是有个奇怪的现象,让if判定是红(R),无论红灯在第几个if都可以使红灯亮,但是如果判定为G 或者B时都不能成功而且gpio是错误的返回值。
这种感觉就想of_get_named_gpio_flags函数只提取了第一个子节点的gpio的属性,但是呢函数的作用就是按照第二个参数"r-gpios" "r-gpios" "b-gpios"的标签提取的啊?
请问大神这是为什么啊。。
这是我第一次写驱动,所以相关的函数什么的都不太清楚求大神指点

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝