LV550-gpio使用pinctrl
gpio 怎么与 pinctrl 产生联系?gpio 怎么使用 pinctrl?若笔记中有错误或者不合适的地方,欢迎批评指正 😃。
一、一个示例
1. 硬件原理
假设使用这个虚拟的 GPIO Controller 的 pin0 来控制 LED:
要使用 pin0 来控制 LED,首先要通过 Pinctrl 子系统把它设置为 GPIO 功能,然后才能设置它为输出引脚、设置它的输出值。
2. 设备树
2.1 pincontroller 节点
c
virtual_pincontroller {
compatible = "100ask,virtual_pinctrl";
myled_pin: myled_pin {
functions = "gpio";
groups = "pin0";
configs = <0x11223344>;
};
};2.2 GPIO controller 节点
c
gpio_virt: virtual_gpiocontroller {
compatible = "100ask,virtual_gpio";
gpio-controller;
#gpio-cells = <2>;
ngpios = <4>;
};2.3 led 设备节点
c
myled {
compatible = "100ask,leddrv";
led-gpios = <&gpio_virt 0 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&myled_pin>;
};