二十一、pinctrl子系统

前言

前面我们写的GPIO驱动程序都是自己在驱动里面定义好gpio引脚需要用到的寄存器,然后在驱动程序里面直接去配置这些寄存器。Linux是一个成熟的,跨平台的通用操作系统,对于配置引脚这样的最基本的功能,是已经有一套现成的框架可以用的,这就是pinctrl子系统。

需要注意的是pinctrl子系统是用于配置引脚的,包括引脚的复用功能,电气属性等。而当将引脚复用为gpio功能之后,就可以使用另一个叫做gpio的子系统去操作这个gpio引脚,包括将其设置为输入还是输出,输出高电平还是低电平等等。

设备树描述

在IMX6ULL中,负责引脚复用功能以及引脚电气属性配置的模块是IOMUXC控制器,其在设备树中的节点是iomuxc:

/* imx6ull.dtsi */ iomuxc: iomuxc@020e0000{compatible="fsl,imx6ul-iomuxc";reg=<0x020e0000 0x4000>;};/* imx6ull_alientek_emmc.dts */&iomuxc{pinctrl-names="default";pinctrl-0=<&pinctrl_hog_1>;imx6ul-evk{pinctrl_hog_1: hoggrp-1{fsl,pins=<MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */ /* MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 SD1 RESET */ MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x13058 /* USB_OTG1_ID */>;};pinctrl_led: ledgrp{fsl,pins=<MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x10B0 /* LED0 */>;};pinctrl_beep: beepgrp{fsl,pins=<MX6ULL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x10B0 /* beep */>;};...};};
  • iomuxc:IOMUXC控制器(也可说是pinctrl子系统)的设备树节点
  • compatible:与IOMUXC控制器的平台驱动做匹配
  • reg:IOMUXC控制器的寄存器组起始地址和长度
  • iomuxc节点中的每个子节点都是一个group,也就是一组实现特定功能的物理引脚配置的集合。pinctrl子系统会解析出这些group节点,并在内核中建立和设置很多关于这些group中的每个pin(引脚)配置的映射关系,供其它外设使用到这些引脚时能快速索引并进行配置。

iomuxc节点除了作为IOMUXC控制器节点,其还是一个虚拟的外设节点,对于那些需要在系统启动时就需要配置成特定功能的引脚,可以直接在iomuxc节点中配置。这样,iomuxc节点匹配上IOMUXC控制器驱动的时候,pinctrl子系统就会直接配置这些引脚,比如示例中的:

&iomuxc{pinctrl-names="default";pinctrl-0=<&pinctrl_hog_1>;imx6ul-evk{...};};

就表示在系统启动并初始化pinctrl子系统的时候,就将pinctrl_hog_1引脚组里面的引脚配置成给定的复用功能和电气属性(hog是霸占,强制使用的意思)。

源码数据结构

platform总线调用pinctrl子系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1132055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能学习-AI-MIT公开课第 17.-学习:boosting 算法】

人工智能学习-AI-MIT公开课第 17.-学习&#xff1a;boosting 算法1-前言2-课程链接3-具体内容解释说明一、Boosting 在讲什么&#xff08;一句话&#xff09;二、为什么要讲 Boosting&#xff1f;&#xff08;动机&#xff09;三、Boosting 的基本流程&#xff08;入试超爱&…

基于Java+SpringBoot+SSM博客系统(源码+LW+调试文档+讲解等)/博客平台/博客软件/个人博客系统/博客网站系统/博客管理系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

Java Web 社区医院信息平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着信息技术的快速发展&#xff0c;传统社区医院的管理模式已难以满足现代医疗服务的需求。社区医院在日常运营中涉及患者信息管理、医生排班、药品库存、预约挂号等多方面业务&#xff0c;传统的手工记录或单机系统存在效率低下、数据易丢失、信息共享困难等问题。为了提…

【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(1):再次起航】

日语学习-日语知识点小记-日本語体系構造-JLPT-N&#xff12;前期阶段-第一阶段&#xff08;1&#xff09;&#xff1a;再次起航1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰2、知识点&#xff11;、とされている&#xff12;、にかけては&…

SpringBoot+Vue 师生健康信息管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着信息技术的快速发展&#xff0c;健康信息管理系统的需求日益增长&#xff0c;尤其是在教育领域&#xff0c;师生健康数据的实时监控和管理显得尤为重要。传统的健康信息管理方式依赖纸质记录或简单的电子表格&#xff0c;存在数据易丢失、查询效率低、统计困难等问题。…

实验一 安全威胁与攻击实验

一、实验目的安全威胁与攻击实验与理论教学第一章信息安全概论相对应。本实验在学生完成MAC地址欺骗攻击与防御实验、OSPF路由项欺骗攻击和防御实验的基础上&#xff0c;使学生能够理解威胁、攻击、资产的关系&#xff0c;并理解基本安全设计原则的重要性。具体如下&#xff1a…

智慧停车解决方案

扫描下载文档详情页: https://www.didaidea.com/wenku/16319.html

【JavaSE】多线程之安全使用容器

不出意外这是多线程的最后一篇文章&#xff0c;主要介绍的是面试中比较常考的一个点——多线程下使用容器&#xff0c;我们开始吧~我们知道&#xff0c;在单线程环境下ArrayList、HashMap等容器使用起来非常方便&#xff0c;但在多线程环境中&#xff0c;如果多个线程同时对容器…

Thinkphp的基于微服务教材征订系统(编号:

目录基于ThinkPHP的微服务教材征订系统核心功能与服务拆分技术实现与优化应用价值与扩展性项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理基于ThinkPHP的微服务教材征订系统 该系统采用ThinkPHP框架结合微服务架构设计&#xff0c;旨在实现教材征…

基于SpringBoot+Vue的IT交流和分享平台管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着互联网技术的快速发展&#xff0c;IT技术交流与知识分享的需求日益增长。传统的技术论坛和社交媒体平台虽然提供了基础的交流功能&#xff0c;但在专业性、系统性和用户体验方面仍有较大提升空间。尤其是在技术问答、资源共享和项目管理等方面&#xff0c;缺乏高效的整…

【JavaSE】文件基础与File类

在日常开发中&#xff0c;我们几乎每天都在和“文件”打交道&#xff1a;读取配置文件、写日志、上传下载文件…… 但很多时候&#xff0c;我们对“文件”的理解其实是比较模糊的&#xff0c;这篇文章我们将从文件的基本概念出发&#xff0c;重新了解一下文件~1. 文件基础 1.1 …

SpringBoot+Vue “衣依”服装销售平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着互联网技术的快速发展&#xff0c;电子商务平台已成为现代商业的重要组成部分。服装行业作为传统零售业的代表&#xff0c;亟需通过数字化转型提升竞争力。“衣依”服装销售平台基于SpringBoot和Vue技术栈开发&#xff0c;旨在为用户提供便捷的在线购物体验。该平台整…

Thinkphp的农贸市场摊位 夜市摊位租赁系统设计与实现

目录摘要关键词项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 农贸市场与夜市摊位租赁系统基于ThinkPHP框架开发&#xff0c;旨在解决传统摊位管理中效率低、信息不透明等问题。系统采用B/S架构&#xff0c;结合MySQL数据库&#xff0c;实现…

Claude Code 永动机:ralph-loop 无限循环迭代插件详解(安装 / 原理 / 最佳实践 / 避坑)

Claude Code 永动机&#xff1a;ralph-loop 无限循环迭代插件详解&#xff08;安装 / 原理 / 最佳实践 / 避坑&#xff09; Claude Code 插件 ralph-loop 全解析&#xff1a;Stop Hook 无限迭代、completion-promise 退出条件与最佳实践ralph-loop 使用指南&#xff1a;让 Cla…

Java SpringBoot+Vue3+MyBatis 学科竞赛管理系统源码|前后端分离+MySQL数据库

摘要 随着信息技术的快速发展&#xff0c;学科竞赛作为高校人才培养的重要环节&#xff0c;其管理效率与信息化水平直接影响竞赛的公平性和参与度。传统的学科竞赛管理多依赖人工操作&#xff0c;存在报名流程繁琐、数据统计滞后、信息共享困难等问题。为解决这些问题&#xff…

Thinkphp的吉他谱分享平台的设计与实现

目录研究背景与意义系统设计目标技术实现要点创新与特色应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理研究背景与意义 随着音乐爱好者的增多&#xff0c;吉他谱共享需求日益增长。传统分享方式效率低、资源分散&#xff0c;亟需一个专业…

Java SpringBoot+Vue3+MyBatis 墙绘产品展示交易平台系统源码|前后端分离+MySQL数据库

摘要 随着数字化技术的快速发展&#xff0c;传统墙绘行业逐渐向线上平台转型&#xff0c;以满足消费者对个性化艺术品的需求。墙绘作为一种独特的装饰艺术形式&#xff0c;具有高度的定制化和艺术价值&#xff0c;但在传统交易模式下&#xff0c;供需双方的信息不对称问题显著&…

Thinkphp的基于协同过滤算法的动漫推荐系统

目录基于协同过滤算法的动漫推荐系统&#xff08;ThinkPHP实现&#xff09;项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理基于协同过滤算法的动漫推荐系统&#xff08;ThinkPHP实现&#xff09; 该系统采用ThinkPHP框架结合协同过滤算法&#x…

前后端分离IT交流和分享平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着互联网技术的快速发展&#xff0c;传统的前后端耦合架构逐渐暴露出开发效率低、维护成本高、扩展性差等问题。前后端分离架构因其模块化、灵活性高和协作效率高等优势&#xff0c;成为现代Web开发的主流模式。在此背景下&#xff0c;设计并实现一个基于前后端分离的IT…

SpringBoot + Aviator + 规则中心:轻量级表达式引擎实现营销优惠动态计算

电商大促活动时&#xff0c;营销规则复杂多变&#xff0c;今天满300减50&#xff0c;明天买2送1&#xff0c;后天又变成阶梯式折扣&#xff1f;每次改规则都得改代码、重新发布&#xff0c;简直是开发人员的噩梦&#xff01;今天就来聊聊如何用SpringBoot Aviator表达式引擎&a…