版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/code_style/article/details/53739634
一、网上的文章一般都是分析pinctrl驱动的,从头到尾分析了一遍,搞的相当复杂,实际上没那么复杂

二、pinmux的概要分析,有关文件如下/pinctrl/core.c、/pinctrl/Pinmux.c、平台相关的结构体pinctrl_state,pinctrl_setting,pinmux_ops,pinctrl_desc,pinctrl_map,基本原理如下:
1、通过在平台相关的pinctrl驱动初始化函数pinctrl_probe,调用pinctrl_register函数,将平台相关的,已经定义好的函数指针等通过结构体封装,传给该函数,相当于已经注册好了;
2、不管是core.c里面的实现,还是Pinmux.c里面的实现,无非是最终会通过回调函数,调用到上面提到的平台相关的已经定义好的实现,包括以功能为依据的分组,比如SPI、UART的引脚的配置,完成引脚的功能配置
3、这就是linux下面抽象出了各种功能,形成了一个中间件,对上层app提供统一的接口,下层各个soc厂商按照定义好的格式对其进行实现,最后上层app就会调用到底层来
4、当然,pinmux的实现利用了很多机制,比如链表的插入、遍历等等

三、具体到代码,如何调用API实现引脚功能复用呢?
1、直接在代码中调用这个API即可,devm_pinctrl_get_select( struct device *dev, const char *name),参考其他地方的调用,可以直接针对功能进行引脚复用的配置,当然,前提是pinctrl-soc.c里面已经做好了相关配置,这里的soc指的是ARM平台,比如高通、三星、MTK、TI等等。
————————————————
版权声明:本文为CSDN博主「coding梦想_起点」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/code_style/article/details/53739634

linux pinmux 引脚多路复用驱动分析与使用的更多相关文章

  1. Linux SD/MMC/SDIO驱动分析_转

    转自:Linux SD/MMC/SDIO驱动分析    https://www.cnblogs.com/cslunatic/p/3678045.html#3053341 一.SD/MMC/SDIO概念 ...

  2. linux内核SPI总线驱动分析(一)(转)

    linux内核SPI总线驱动分析(一)(转) 下面有两个大的模块: 一个是SPI总线驱动的分析            (研究了具体实现的过程) 另一个是SPI总线驱动的编写(不用研究具体的实现过程) ...

  3. linux驱动基础系列--Linux mmc sd sdio驱动分析

    前言 主要是想对Linux mmc子系统(包含mmc sd sdio)驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.块设备驱动.设备模型等也不进行详细说明原 ...

  4. Linux下 USB设备驱动分析(原创)

    之前做过STM32的usb HID复合设备,闲来看看linux下USB设备驱动是怎么一回事, 参考资料基于韦东山JZ2440开发板,以下,有错误欢迎指出. 1.准备知识 1.1USB相关概念: USB ...

  5. Linux SD/MMC/SDIO驱动分析

    一.SD/MMC/SDIO概念区分 SD(SecureDigital)与 MMC(MultimediaCard) SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆 ...

  6. [MMC]Linux MMC/SD/SDIO驱动分析

    转自:http://www.cnblogs.com/cslunatic/p/3678045.html 一.SD/MMC/SDIO概念区分 SD(SecureDigital)与 MMC(Multimed ...

  7. linux下usb转串口驱动分析【转】

    转自:http://blog.csdn.net/txxm520/article/details/8934706 首先说一下linux的风格,个人理解 1. linux大小结构体其实是面向对象的方法,( ...

  8. linux内核SPI总线驱动分析(二)(转)

    简而言之,SPI驱动的编写分为: 1.spi_device就构建并注册  在板文件中添加spi_board_info,并在板文件的init函数中调用spi_register_board_info(s3 ...

  9. Linux触摸驱动分析

    测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 触摸屏基础知识 一.结构 上图是电阻触摸屏的一个侧面剖视图 ...

随机推荐

  1. 「雕爷学编程」Arduino动手做(35)——模拟量声音传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  2. hdu6314 容斥+数学

    题意 : n*m的矩阵 可以涂黑白两色 问至少A行B列为黑色的涂色方案种类数,答案对998244353取模,1<=n,m,A,B<=3000 题解:  ans=sum{A,..n}sum( ...

  3. Istio-架构

    读书笔记整理 工作机制:分为控制面和数据面 控制面:Pilot, Mixer(接收来自Envoy上报的数据), Citadel(证书和密钥管理) 数据面:Envoy 工作流程: 自动注入 应用程序启动 ...

  4. Higher-Order Functions Fundamentals

    Higher-Order Functions A function that accepts and/or returns another function is called a higher-or ...

  5. Java——日期获取和日期格式化

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  6. JS中的bind 、call 、apply

    # 一 .bind 特点: ### 1.返回原函数的拷贝,我们称这个拷贝的函数为绑定函数 ### 2.将函数中的this固定为调用bind方法时的第一个参数,所以称之为绑定函数.注意是名词而非动词. ...

  7. mysql创建本地用户及赋予数据库权限的方法示例

    大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也是类似 ...

  8. MongoDB -MSC集群的部署

    一.Shard节点配置过程 1. 目录创建:mkdir -p /mongodb/38021/conf  /mongodb/38021/log  /mongodb/38021/datamkdir -p ...

  9. [ubuntu][mysql 5.7]安装后没有密码?如何登录

    环境:(2020-04-21) WSL ubuntu LTS 18.04.1 mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) 找到随机密码 # 显 ...

  10. [Android应用开发] 05.广播和服务

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...