前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >07_编写虚拟的Pinctrl驱动程序

07_编写虚拟的Pinctrl驱动程序

作者头像
韦东山
发布2021-12-08 11:05:02
5210
发布2021-12-08 11:05:02
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看

百问网驱动大全

编写虚拟的Pinctrl驱动程序

参考资料:

1. 回顾Pinctrl的三大作用

记住pinctrl的三大作用,有助于理解所涉及的数据结构:

  • 引脚枚举与命名(Enumerating and naming)
    • 单个引脚
    • 各组引脚
  • 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能
  • 引脚配置(Configuration):比如上拉、下拉、open drain、驱动强度等

Pinctrl驱动程序的核心是构造一个pinctrl_desc结构体:

在这里插入图片描述
在这里插入图片描述
1.1 作用1:描述、获得引脚

分为2部分:

  • 描述、获得单个引脚的信息
  • 描述、获得某组引脚的信息
在这里插入图片描述
在这里插入图片描述
1.2 作用2:引脚复用

用来把某组引脚(group)复用为某个功能(function)。

在这里插入图片描述
在这里插入图片描述
1.3 作用3:引脚配置

用来配置:某个引脚(pin)或某组引脚(group)。

在这里插入图片描述
在这里插入图片描述

2. 编写Pinctrl驱动程序要做什么

在这里插入图片描述
在这里插入图片描述

我们要做的事情:

  • pin controller:
    • 创建设备树节点
    • 编写驱动程序
  • 测试:
    • 创建client设备树节点
    • 编写驱动程序

3. 硬件功能

假设这个虚拟的pin controller有4个引脚:

在这里插入图片描述
在这里插入图片描述
  • pin0,1,2,3都可以配置为GPIO功能
  • pin0,1还可以配置为I2C功能
  • pin2,3还可以配置为UART功能

4. 编写设备树文件

代码语言:javascript
复制
virtual_pincontroller {
	compatible = "100ask,virtual_pinctrl";
	i2cgrp: i2cgrp {
			functions = "i2c", "i2c";
			groups = "pin0", "pin1";
			configs = <0x11223344  0x55667788>;
	};
};

virtual_i2c {
	compatible = "100ask,virtual_i2c";
	pinctrl-names = "default";
	pinctrl-0 = <&i2cgrp>;
};

5. 编写Pinctrl驱动程序

5.1 核心:pinctrl_desc
  • 分配pinctrl_desc结构体
  • 设置pinctrl_desc结构体
  • 注册pinctrl_desc结构体
5.2 辅助函数
代码语言:javascript
复制
include/linux/of.h
    for_each_child_of_node
    of_get_child_count
    of_find_property
    of_property_read_u32
    of_property_read_u32_index
    of_property_read_string_index

6. 编写测试用的client驱动

编写、注册一个platform_driver即可。

y_read_u32 of_property_read_u32_index of_property_read_string_index

代码语言:javascript
复制
### 6. 编写测试用的client驱动

编写、注册一个platform_driver即可。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 编写虚拟的Pinctrl驱动程序
    • 1. 回顾Pinctrl的三大作用
      • 1.1 作用1:描述、获得引脚
      • 1.2 作用2:引脚复用
      • 1.3 作用3:引脚配置
    • 2. 编写Pinctrl驱动程序要做什么
      • 3. 硬件功能
        • 4. 编写设备树文件
          • 5. 编写Pinctrl驱动程序
            • 5.1 核心:pinctrl_desc
            • 5.2 辅助函数
          • 6. 编写测试用的client驱动
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档