[dts]AM4378的dts中配置和数据手册映射关系
最近在设置AM4378 GPIO的时候产生了困惑
- 如何设置GPIO为output_pullup, output_pulldown, input_pullup, input_pulldown, high-impedency, output_disable, input_disable
- 在dts中0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (B10) gpmc_ad8.gpio0[22] */是什么意思,和数据手册怎么对应
首先在官方的TI PinMux Tool只有outpu/input的三种pull_up, pull_down, no_pull,也就是在dts中input和output只对应三种配置方式,NOPULL, PULLUP, PULLDOWN,并没有像飞思卡尔imx6那么多可配的属性, 这三个和MUX_MODE7定义在:
include/dt-bindings/pinctrl/am43xx.h
中可以看出, 在kernel里面关于上下拉确实没有高阻等配置方式,
- PIN_OUTPUT即为PULL_DISABLE (1<<16)
- PIN_OUTPUT_PULLUP为PULL_UP (1<<17)
- PIN_OUTPUT_PULLDOWN为0
- PIN_INPUT为INPUT_EN和PULL_DISABLE (1<<18 | 1<<16)
- PIN_INPUT_PULLUP为INPUT_EN和INPUT_UP (1<<18 | 1<<17)
- PIN_INPUT_PULLDOWN为INPUT_EN (1<<18)
接下来,0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)这个是在设置哪个寄存器呢,0x020是什么意思呢?
查看手册AM437x TRM的Chapter2.Memory Map, CONTROL_MODULE 0x44E1_0000 0x44E1_FFFF和Chapter7.Control Module (800h CTRL_CONF_GPMC_AD0),这其中,0x44E1_0000+0x800之和就是GPIO配置的基地址,上面的0x020就是基于当前基地址的偏移,在Register地址映射能看出820h CTRL_CONF_GPMC_AD8,这个和之前dts中(B10) gpmc_ad8.gpio[0[22]可以对应起来
也就能推断出来0x020 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) 这个脚本是在设置Control Module的寄存器,而非GPIO章节的寄存器,那么我们来看下这个寄存器的内容
从上述可以看出来,0-3bit为Mux Mode,16bit为pullup/pulldown使能/失能,17bit为pullup/pulldown选择,18bit为Input使能
这样从数据手册到kernel源码再到device tree整套就齐整了。
另外上述提到的MODE0和MODE7到底代表什么属性?
在Processor文档中,有如下pin说明
为什么N4是mode0因为该引脚只有ddr_wen功能,A24引脚有8个功能,而Reset之后是Mode7,也就是表中的gpio2_25,普通gpio功能
相关文章
- cisco光纤交换机配置「建议收藏」
- 大数据NiFi(九):NiFi集群页面的添加、配置处理器操作
- phpstorm+xdebug 配置断点调试
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | multiple-dex-core 依赖库开发 | 配置元数据 | 获取 apk 文件并准备相关目录 )
- iis配置绑定二级域名的问题
- 基于redis.properties文件的配置及说明介绍
- Hadoop 2.8集群安装及配置记录详解大数据
- Linux环境下的IP地址配置方法(linux命令ip设置)
- Oracle 参数 ADG_ACCOUNT_INFO_TRACKING 官方解释,作用,如何配置最优化建议
- 如何在Linux系统中配置EFI分区(linuxefi分区)
- Linux服务器网卡配置指南(linux服务器网卡配置)
- Linux下SVN配置实践指南(linuxsvn配置)
- 简单易懂的Linux防火墙配置指南(linux配置防火墙命令)
- 如何配置 Redis 集群? 详解 Redis 集群配置方法(redis集群配置)
- 让Linux时间更加准确:配置正确的Date时区(linux date时区)
- 驱动Hive使用Oracle驱动配置实现数据连通(hive配置oracle)
- oracle主从同步配置让数据同步变得更稳定(oracle主从同步配置)
- 利用YML配置Redis主从实现数据同步(yml redis主从)
- 简易Redis数据目录配置搞定(redis配置数据目录)
- 提高数据存取性能Redis提升服务器数据存取性能的配置方法(redis 配置为服务器)
- Redis 加速数据访问 配置合理的空闲时间(redis 设置空闲时间)
- php4与php5的区别小结(配置异同)
- opensips源代码安装与配置的技巧方法
- 基于php-fpm的配置详解
- mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)