首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

2——Pinctrl子系统重要概念

主要参考文档是:内核Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt 这会涉及2个对象:pin controller、client...Pinctrl系统的客户,那就是使用Pinctrl系统的设备,使用引脚的设备。它在设备树里会被定义为一个节点,在节点里声明要用哪些引脚。...16.1.3 示例 16.1.4 代码中怎么引用pinctrl 这是透明的,我们的驱动基本不用管。当设备切换状态时,对应的pinctrl就会被调用。...非要自己调用,也有函数: devm_pinctrl_get_select_default(struct device *dev); // 使用"default"状态的引脚 pinctrl_get_select...(struct device *dev, const char *name); // 根据name选择某种状态的引脚 pinctrl_put(struct pinctrl *p); // 不再使用,

63930

pinctrl 子系统深入分析

工具 分析源码可以在线查看 Linux 内核源码,在线网址跳转函数和查找结构体也很方便: https://elixir.bootlin.com/linux/latest/source 对嵌入式工程师来讲...,较少谈及设计模式、重构等,因为我们受限于两个方面:硬件、系统(Linux、Android)。...在 Linux 内核源码中,pinctrl 子系统的代码大都在 kernel/drivers/pinctrl/...,不同平台有不同的文件夹。...module_init,只是 arch_initcall 会先调用,具体我在这边写过: Linux 驱动挂载顺序分析 我们从下往上看,可以看到最后调用的是 imx6ul_pinctrl_probe...pinctrl_register probe 函数后面的调用中,最重要的是调用 pinctrl_register 函数,此函数用于向 Linux 内核注册一个 PIN 控制器,,此函数原型如下: struct

74920

【深度】韦东山:GPIO和Pinctrl子系统的使用

Linux下针对引脚有2个重要的子系统:GPIO、Pinctrl。 1.Pinctrl子系统重要概念 1.1 引入 无论是哪种芯片,都有类似下图的结构: ?...驱动程序中要包含头文件, #include // descriptor-based 或 #include // legacy...比如在Linux开发过程中,先申请了GPIO,再申请内存;如果内存申请失败,那么在返回之前就需要先释放GPIO资源。...使用GIT命令载后,源码leddrv.c位于这个目录下: 01_all_series_quickstart\ 04_快速入门_正式开始\ 02_嵌入式Linux驱动开发基础知识\source\ 05_gpio_and_pinctrl...我们也把它上传到GIT去了,使用GIT命令载后,在这个目录下: 01_all_series_quickstart\ 04_快速入门_正式开始\ 02_嵌入式Linux驱动开发基础知识\source\ 05

7.7K64

06_client端使用pinctrl过程的情景分析_基于IMX6ULL

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 client端使用pinctrl过程的情景分析_基于IMX6ULL 参考资料: Linux 5.x内核 Documentation\devicetree\bindings...\stm32\pinctrl-stm32.c Linux 4.x内核 Documentation\pinctrl.txt Documentation\devicetree\bindings\pinctrl...来处理设备树的pinctrl节点信息,得到一系列的pinctrl_map 这些pinctrl_map放在pinctrl.dt_maps链表中 每个pinctrl_map都被转换为pinctrl_setting...pinctrl_map: 转换为多少个pinctrl_map,完全由具体的驱动决定 每个pinctrl_map,又被转换为一个pinctrl_setting 举例,设备节点里有:pinctrl-0 =

47340

高通GPIO驱动(DTS方式)

gpio调试的方式有很多,linux3.0以上ARM架构的处理器基本上都采用了DTS的方式,在linux3.0可以通过获取sysfs的方式来获取gpio状态; sysfs文件系统的建立可以参照下面的博客...:http://www.cnblogs.com/linhaostudy/p/8377895.html 一、GPIO的调试方法:  在Linux下,通过sysfs,获取gpio状态,也可以操作gpio。...子系统设备树: Pin Control Subsystem是Linux内核抽象出的一套用于控制硬件引脚的一套子系统。...linux内核中的GPIO系统之(2):pin control subsystem Linux内核中的GPIO系统之(3):pin controller driver代码分析 linux内核中的GPIO...系统之(4):pinctrl驱动的理解和总结 linux内核中的GPIO系统之(5):gpio subsysem和pinctrl subsystem之间的耦合 DTS代码: 1 device_node

4.6K40

GPIO 软件框架

2、嵌入式 Linux 平台 先总结一句:不管是单片机还是高端 ARM 平台,最底层都是寄存器,硬件之上就是寄存器,任何封装形式到最底层就是操作寄存器。...对于上了 Linux 系统的平台,我们有其他方法,让它可以像单片机一样简单的操作 IO 口,这得益于各路 Linux 大神对系统底层的封装。...在 Linux 中有 pinctrl 和 gpio 子系统,它们提供了 API 接口给你使用,让你方便的操控 GPIO 口。...Linux 内核针对 PIN 的配置推出了 pinctrl 子系统,对 GPIO 的配置推出了 gpio 子系统。...(具体原因看下面这篇文章) Linux 驱动挂载顺序分析 pinctrl 和 gpio 子系统软件框架如下: pinctrl gpio 可以看出其实两者软件框架一样的,主要是 HW Abstract

94020
领券