Linux/pinctrl subsystem,统一了各SOC/MCU厂商的PIN引脚管理了吗? pin命名遵循IC spec上的命名。它是如何实现驱动到硬件的对接的呢?在CPU、Memory等完成初始化加载之后,显然就进入到了嵌入式linux的核心部分,管理对接硬件,这正是pinctrl要完成的工作。
Linux®pinctrl架构
光有设备树显然不够,硬件怎么联系起来,Linux®pinctrl架构就是实现这个功能的。许多MCU pin具有数字I/O或模拟I/O,有的还要多路复用。pinctrl框架可以:
1、配置引脚硬件设置:多路复用、上拉pull-up/下拉pull-down电阻、漏极开路、配置引脚的driver strength等。
2、通过调试提供信息
pinctrl框架是用于配置和控制MCU引脚的Linux框架。有两种使用方法:
1、一个pin引脚(或一组pin引脚)由硬件块控制,然后pinctrl将应用device tree设备树给出的引脚配置(注意是:应用)
2、pin引脚需由软件(通常是GPIO)控制,然后GPIOLib框架将用于在pinctrl框架之上控制该引脚。
pinctrl会提供API给其他驱动drivers,调用相关设备商的配置回调函数,创建逻辑pin映射mapping。