嵌入式linux中pinctrl子系统驱动用法分析

作者 : admin 本文共626个字,预计阅读时间需要2分钟 发布时间: 2024-06-16 共1人阅读

     Linux系统是一个庞大而完善的系统,尤其是驱动框架,像GPIO这样最基本的驱动不可能采用原始的裸机驱动开发方式,否则就相当于买了一辆车,结果每天推着车去上班。Linux内核提供了pinctrl和gpio子系统用于GPIO驱动,学习借助pinctrl子系统简化GPIO驱动开发。

第一:pinctrl子系统简介

      大家好,对于大多数的32位SOC而言,引脚的设置基本都是这两方面:

       1、设置PIN的复用功能。

        2、如果PIN复用为GPIO功能,设置GPIO相关属性。

       大多数SOC的pin都是支持复用的,比如RK3568的GPIO3_4即可作为普通的GPIO使用,也可以作为PWM1_M0引脚、GPU_AVS引脚等, 此外还需要配置pin的电气特性,比如上/下拉、驱动能力等等。传统的配置 pin的方式就是直接操作相应的寄存器,但是这种配置方式比较繁琐、而且容易出问题(比如pin功能冲突)。pinctrl子系统就是为了解决这个问题而引入的,pinctrl子系统主要工作内容如下:

       1、获取设备树中pin信息。

       2、根据获取的pin信息来设置pin的复用功能。

       3、根据获取到的pin信息来设置pin的电气特性,如驱动能力。

      对于我们使用者来说,只需要在设备树里面设置好某个pin的相关属性即可,其他的初始化工作均有pinctrl子系统来完成,pinctrl子系统源码目录为drivers/pinctrl。</

本站无任何商业行为
个人在线分享 » 嵌入式linux中pinctrl子系统驱动用法分析
E-->