pinctrl子系统架构解析

pinctrl 子系统可以分为 provider 和 consumer 两部分驱动。即 pin controller 本身(provider)的驱动和为使用者(consumer)提供的一些列的接口。

从功能的角度看,pinctrl 子系统包括了 pin multiplexing,pin configuration,GPIO control,GPIO interrupt control 等功能。

单看 pin 相关的功能有:

  • pin 脚的描述与获取(pin desc)
  • pin 脚的功能复用(pin multiplexing)
  • pin 脚的属性配置(pin configuration)

  • HW layer:硬件层,不同厂家的 pin controller 各不相同,有的只有 pinmux 的功能,有的跟 GPIO 在一起。名字也不一样:pinmux,iomux,ioctl 等等,而 pin controller 只是一个软件的概念。
  • Pin Controller Driver layer:即 pinmux 的裸机硬件接口,这部分与 pinctrl 还没有关系。
  • HW Abstract layer:真正的 pinctrl 驱动层,这里抽象了一系列的数据结构和函数指针来操作我们的 pin controller
  • pin control core driver:提供了一些核心功能,对下提供了硬件驱动的编写框架,对上提供了其他驱动使用 pinctrl 的框架,其中,pin 脚的获取和描述也是在这一层实现的。
    • pin mux drvier:pin 脚的功能复用的配置,在这个模块中实现
    • pin configuration:pin 脚的属性配置(上下拉、驱动强度等),在这个模块中实现
  • Customer drivers:使用 pinctrl 的驱动

文件结构如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值