linux设备树中pinctrl的配置(下)
来源:互联网 发布:比特彗星监听端口 编辑:程序博客网 时间:2024/06/02 13:13
上一篇记录了设备树文件中管脚普通配置的查找与确定,这篇介绍一下特殊的配置。
首先还是先看代码,看看到底特殊到哪里。
<span style="font-size:14px;">pinctrl_gpio_leds: gpioledsgrp {fsl,pins = <MX6QDL_PAD_DISP0_DAT21__GPIO5_IO150x80000000>;};pinctrl_i2c2: i2c2grp {fsl,pins = <MX6QDL_PAD_EIM_EB2__I2C2_SCL0x4001b8b1MX6QDL_PAD_KEY_ROW3__I2C2_SDA0x4001b8b1>;};</span>
可以看出来特殊的配置就是后面的值也就是上一篇讲的config(pad_ctrl)的值改变了,变为0x80000000和0x4001b8b1了,当我们查找相应的pad值时是这样的:
这明显不和常理,在上图中显示高15位全部置0,取值也没啥用,那么为什么设置为0x80000000和0x4001b8b1呢?在网上搜罗一番没有任何有帮助的文档,只能靠自己了。还是老思路,查找设备树文件的读取源码,linux-3.18.22/drivers/pinctrl/freescale/pinctrl-imx.c中,找到了惊喜!!!代码如下
<span style="font-size:14px;">/* The bits in CONFIG cell defined in binding doc*/#define IMX_NO_PAD_CTL0x80000000/* no pin config need */#define IMX_PAD_SION 0x40000000/* set SION */</span>再将IMX_NO_PAD_CTL使用部分的代码贴上(随便找一处)
<span style="font-size:14px;">for (i = j = 0; i < grp->npins; i++) {if (!(grp->pins[i].config & IMX_NO_PAD_CTL)) {new_map[j].type = PIN_MAP_TYPE_CONFIGS_PIN;new_map[j].data.configs.group_or_pin =pin_get_name(pctldev, grp->pins[i].pin);new_map[j].data.configs.configs = &grp->pins[i].config;new_map[j].data.configs.num_configs = 1;j++;}}</span>可以看出来确实如注释(/* no pin config need */)所述,表示该管脚的配置config(pad_ctrl)无效,或者说不需要。
同理0x40000000表示设置了SION。但是0x4001b8b1表示什么意思呢,从上一个注释(/* The bits in CONFIG cell defined in binding doc*/)可以找到方向,即取binding doc中找,所以打开linux-3.18.22/Documentation/devicetree/bindings/pinctrl目录下的fsl,imx6dl-pinctrl.txt文件,里面有关于SION的介绍,如下:
再从芯片的参考手册中查阅可知,SION就相当于一个标志为(第30位),去掉这一位后config=0x1b8b1,这个值就是从pad_ctrl一节找到的,具体可以参见上一篇关于第6个参数的确定方法。
0 0
- linux设备树中pinctrl的配置(下)
- linux设备树中pinctrl的配置(上)
- linux设备树中pinctrl的配置(上)
- imx6设备树pinctrl解析 (配置引脚功能)
- tiny4412 设备树之pinctrl(番外)
- linux pinctrl 配置
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6设备树pinctrl解析
- imx6ul设备树pinctrl解析
- imx6设备树(dts)pinctrl解析
- 如何在Linux下实现设备的配置(下)
- Zookeeper已经分布式环境中的假死脑裂
- hdu5563 ( Clarke and five-pointed star )
- 排序算法JAVA实现三
- 对js中的引用类型的理解(2)——Object类型
- SimpleDateFormat在jdk1.6与jdk1.7之间的差别
- linux设备树中pinctrl的配置(下)
- 【FOJ2206 11月月赛B】【观察找规律】函数求解 分析函数求值
- 文档的吐槽
- C++ 在函数中用static定义的变量的
- FastDFS的配置、部署与API使用解读(7)Nginx的FastDFS模块
- GBDT(MART) 迭代决策树入门教程 | 简介
- NDK编译OpenCV-3.0.0的配置文件
- 对js中的引用类型的理解(3)——Array类型
- NSString