首页 > 编程语言 >Pinctrl子系统中Pincontroller和client驱动程序的编写

Pinctrl子系统中Pincontroller和client驱动程序的编写

时间:2024-11-04 12:17:05浏览次数:3  
标签:__ 驱动程序 pin pinctrl virtual Pinctrl client static struct

往期内容

本专栏往期内容:

  1. Pinctrl子系统和其主要结构体引入
  2. Pinctrl子系统pinctrl_desc结构体进一步介绍
  3. Pinctrl子系统中client端设备树相关数据结构介绍和解析
  4. inctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体
  5. Pinctrl子系统中client端使用pinctrl过程的驱动分析

input子系统专栏:

  1. 专栏地址:input子系统
  2. input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序
    – 末片,有往期内容观看顺序

I2C子系统专栏:

  1. 专栏地址:IIC子系统
  2. 具体芯片的IIC控制器驱动程序分析:i2c-imx.c-CSDN博客
    – 末篇,有往期内容观看顺序

总线和设备树专栏:

  1. 专栏地址:总线和设备树
  2. 设备树与 Linux 内核设备驱动模型的整合-CSDN博客
    – 末篇,有往期内容观看顺序

img

目录

1.回顾Pinctrl的三大作用

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

  • 引脚枚举与命名(Enumerating and naming)

    • 单个引脚
    • 各组引脚
  • 引脚复用(Multiplexing):比如用作GPIO、I2C或其他功能

  • 引脚配置(Configuration):比如上拉、下拉、open drain、驱动强度等

Pinctrl子系统和其主要结构体引入

Pinctrl子系统pinctrl_desc结构体进一步介绍

Pinctrl子系统中client端设备树相关数据结构介绍和解析

2.需要做什么

img

  • pin controller:

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

    • 创建client设备树节点
    • 编写驱动程序

3.硬件功能

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

img

  • pin0,1,2,3都可以配置为GPIO功能 — function 1
  • pin0,1还可以配置为I2C功能 — function 2
  • pin2,3还可以配置为UART功能 — function 3

4.编写设备树

       Pincontroller:
virtual_pincontroller {
	compatible = "XXX,virtual_pinctrl";
	i2cgrp: i2cgrp {
			functions = "i2c", "i2c";
			groups = "pin0", "pin1";
			configs = <0x11223344  0x55667788>;
	};
};

      client:
virtual_i2c {
	compatible = "XXX,virtual_i2c";
	pinctrl-names = "default";
	pinctrl-0 = <&i2cgrp>;
};

5.编写Pinctrl驱动程序

5.1 核心:pinctrl_desc

  • 分配pinctrl_desc结构体
  • 设置pinctrl_desc结构体
  • 注册pinctrl_desc结构体

5.2 辅助函数

\Linux-4.9.88\include\linux\of.h

标签:__,驱动程序,pin,pinctrl,virtual,Pinctrl,client,static,struct
From: https://blog.csdn.net/caiji0169/article/details/143473255

相关文章

  • Springboot使用 jenkins-client 调用Jenkins REST API教程和构建 build时 报错 403
    前言:最近在工作中,遇到一个需求,使用java调用Jenkins进行全自动测试的需求于是在网上查找大量资料,可以使用jenkins-client这个工具可以调用JenkinsRESTAPI在执行GET请求获取Jenkins信息的时候没有任何问题,但是执行POST请求时,比如build构建job,create创建jo......
  • 手把手教你学PCIE(12.1)--开发一个简单的 PCIe 设备驱动程序
    目录手把手教你学PCIe实战实例目标环境准备步骤一:理解PCIe基本概念步骤二:设置开发环境步骤三:开发PCIe设备驱动程序步骤四:测试和调试驱动程序步骤五:深入学习和实践结语PCIe(PeripheralComponentInterconnectExpress)是一种高速串行计算机扩展总线标准,广泛用......
  • 手把手教你学PCIE(12.2)--开发一个简单的 PCIe 设备驱动程序
    目录PCIe实战实例:开发一个简单的PCIe设备驱动程序目标环境准备步骤一:理解PCIe基本概念步骤二:设置开发环境步骤三:开发PCIe设备驱动程序步骤四:测试和调试驱动程序步骤五:深入学习和实践结语PCIe实战实例来展示如何开发一个简单的PCIe设备驱动程序,该驱动程序......
  • Pinctrl子系统pinctrl_desc结构体进一步介绍
    往期内容本专栏往期内容:Pinctrl子系统和其主要结构体引入input子系统专栏:专栏地址:input子系统input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序–末片,有往期内容观看顺序I2C子系统专栏:专栏地址:IIC子系统具体芯片的IIC控制器驱动程序分析:i2c-imx.c-CSDN博客......
  • python3 tcp_client
    tcp_client.py#-*-coding:utf-8-*-#tcp客户端,使用单例模式实现#create:2023-06-26importsocketimporttimeimporttracebackclassTCPConnection:__instance=None#存储单例对象的类属性def__new__(cls,host,port):"""实现......
  • ES操作RestHighLevelClient手册
    //设置分页searchSourceBuilder.from(1);searchSourceBuilder.size(5);//排序searchSourceBuilder.sort("age",SortOrder.DESC);searchSourceBuilder.sort("id",SortOrder.DESC);//数据过滤创建SearchSourceBuilder条件构造......
  • System.Data.SqlClient老版本引发内存溢出的问题
    有一个朋友和我说他负责的项目有内存溢出的情况,内存一直居高不下达到了8G。生产环境碰到内存溢出的情况我还没有碰到过,这次有机会实践一下,准备试试,拿到了dump文件,压缩包300M,解压出来3G。该事件是发生在2023年,写这篇文件的是已经是2024年了,为什么会间隔这么久才写这篇文章,因为当时......
  • input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序
    往期内容本专栏往期内容:input子系统的框架和重要数据结构详解-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客inputdevice和inputhandler的注册以及匹配过程解析-CSDN博客编写一个简单的Iinput_dev框架-CSDN博客GPIO按键驱动分析与使用:input_dev......
  • client-go DiscoveryClient和ClientSet长连接数
    packagemainimport( "context" "test/signals" "time" core_v1"k8s.io/api/core/v1" metav1"k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/discovery" "k8s.io/client-go/kuber......
  • Bd-Ticket-Guard-Client-Data逆向
    'Bd-Ticket-Guard-Client-Data':'eyJ0c19zaWduIjoidHMuMS43ODhkMTE1OTUwMTM1NDVhNjg5M2I0OGU3NTQ2NDk5NjZjNTMyYzBhZmMxMjRjMTUwNGQ1OTVjNDJiOWI1ZDk0YzRmYmU4N2QyMzE5Y2YwNTMxODYyNGNlZGExNDkxMWNhNDA2ZGVkYmViZWRkYjJlMzBmY2U4ZDRmYTAyNTc1ZCIsInJlcV9jb250Z......