跳到主要内容

04_编写一个虚拟GPIO控制器的驱动程序

编写一个虚拟GPIO控制器的驱动程序

参考资料:

  • Linux 5.x内核文档

    • Linux-5.4/Documentation/driver-api
    • Linux-5.4/Documentation/devicetree/bindings/gpio/gpio.txt
    • Linux-5.4/drivers/gpio/gpio-74x164.c
  • Linux 4.x内核文档

    • Linux-4.9.88/Documentation/gpio
    • Linux-4.9.88/Documentation/devicetree/bindings/gpio/gpio.txt
    • Linux-4.9.88/drivers/gpio/gpio-74x164.c
  • 本章课程源码位于GIT仓库里(未调试)

    doc_and_source_for_drivers\IMX6ULL\source\07_GPIO\02_virtual_gpio
    doc_and_source_for_drivers\STM32MP157\source\A7\07_GPIO\02_virtual_gpio

1. 硬件功能

假设这个虚拟的GPIO Controller有4个引脚:

image-20210528113749611

2. 编写设备树文件

gpio_virt: virtual_gpiocontroller {
compatible = "100ask,virtual_gpio";
gpio-controller;
#gpio-cells = <2>;
ngpios = <4>;
};

3. 编写驱动程序

现场编写。

核心:分配/设置/注册一个gpio_chip结构体。