[RK3399][Android7.1] Pinctrl的默认配置
问题:针对GPIO的MUX的功能,RK平台的配置有些区别于高通平台,高通的平台中即便是“default”的状态也是需要在Driver中去设置的,但是RK平台针对“default”的状态是不需要在Driver中去配置,而是由平台统一的实现了。
DTS:
&dsi {compatible = "rockchip,rk3399-dsi";enable-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;reset-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;standby-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;pinctrl-names = "default";pinctrl-0 = <&bridge_gpio>;....
&pinctrl {backlight {pwm_en_gpio: pwm-en-gpio {rockchip,pins = <4 24 RK_FUNC_GPIO &pcfg_pull_up>;};};dsi {bridge_gpio: bridge-gpio {rockchip,pins =<1 0 RK_FUNC_GPIO &pcfg_pull_none>,<1 1 RK_FUNC_GPIO &pcfg_pull_none>,<1 2 RK_FUNC_GPIO &pcfg_pull_none>;};};
};
只需要如上的配置即可,驱动中我们完全不用再去管了。
BUT,WHY?之前一直对这个功能很疑惑,既然驱动中没有去做配置,那么平台是在哪个地方完成的呢?其实就是在设备和驱动Match成功后,在触发probe之前。如下:
[ 1.400918] [<ffffff800808a564>] dump_backtrace+0x0/0x1ec
[ 1.400929] [<ffffff800808a764>] show_stack+0x14/0x1c
[ 1.400941] [<ffffff80083a13b8>] dump_stack+0x94/0xb4
[ 1.400952] [<ffffff80083dfaf0>] rockchip_set_mux+0x21c/0x324
[ 1.400962] [<ffffff80083e0418>] rockchip_pmx_set+0x94/0xf0
[ 1.400972] [<ffffff80083db2a8>] pinmux_enable_setting+0x1b8/0x248
[ 1.400984] [<ffffff80083d8668>] pinctrl_commit_state+0x78/0x120
[ 1.400995] [<ffffff80083d872c>] pinctrl_select_state+0x1c/0x2c
[ 1.401007] [<ffffff8008519c64>] pinctrl_bind_pins+0xa4/0x11c
[ 1.401020] [<ffffff80084f8490>] driver_probe_device+0x90/0x2ac
[ 1.401029] [<ffffff80084f8710>] __driver_attach+0x64/0x90
[ 1.401038] [<ffffff80084f75cc>] bus_for_each_dev+0x80/0xb0
[ 1.401047] [<ffffff80084f805c>] driver_attach+0x20/0x28
[ 1.401056] [<ffffff80084f7c14>] bus_add_driver+0xe8/0x1e4
[ 1.401066] [<ffffff80084f92c4>] driver_register+0x94/0xe0
[ 1.401076] [<ffffff80084fa200>] __platform_driver_register+0x48/0x50
[ 1.401086] [<ffffff800908cb30>] rockchip_dsi_driver_init+0x18/0x20
[ 1.401095] [<ffffff80080839f0>] do_one_initcall+0x178/0x194
[ 1.401105] [<ffffff8009060ddc>] kernel_init_freeable+0x1a4/0x25c
[ 1.401117] [<ffffff8008b1b3b0>] kernel_init+0x10/0xf8
[ 1.401126] [<ffffff80080832a0>] ret_from_fork+0x10/0x30
通过上面的堆栈打印,可以充分的说明这个问题。
really_probe->pinctrl_bind_pins->devm_pinctrl_get->pinctrl_lookup_state(dev->pins->p,PINCTRL_STATE_DEFAULT) //"default"->pinctrl_lookup_state(dev->pins->p,PINCTRL_STATE_INIT) //"init"->pinctrl_select_state(dev->pins->p,dev->pins->init_state/default_state)->pinctrl_init_done
如上所示,如果init状态存在则初始化为init,否则初始化为default.
[RK3399][Android7.1] Pinctrl的默认配置相关推荐
- RK3399 Android7.1修改系统默认USB功能
在device\rockchip\common\device.mk中修改persist.sys.usb.config的值,如下将USB功能默认设置为MTP(去掉ADB): ifeq ($(strip ...
- RK3399 Android7.1修改系统默认壁纸
替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg 替换frameworks/base/core/res/res/d ...
- [RK3399][Android7.1] 调试笔记 --- 系统默认时钟配置
OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 分两个模块,一个是cpu,还有一个是pmu模块,这里只举例cpu,cpu又分在两个文件中定义 ...
- [RK3399][Android7.1]勿扰模式的默认设置修改
需求是要求固件默认关闭优先打扰内容里边所有选项,删除自动规则里边的所有内容 开始以为是在默认设置里边修改,后面发现这个配置使用的是/data/system/notification_policy.xm ...
- Android 系统(69)---Android7.1.1系统设置默认值大全
Android7.1.1系统设置默认值大全 在寻找一个开关的默认值时,首先要明白一点,该开关是否存在默认值,以及该开关状态是否有状态保存(一般状态存settings的db中). 判断条件: 在r ...
- [Android系统]android7.1 修改系统默认输入法
参看博客: Android 7.0 删除原生输入法(AOSP)&更换系统默认输入法_Photon128的博客-CSDN博客_aosp输入法 [RK3288][Android6.0] 调试笔记 ...
- RK3399 Android7.1 编译
RK3399 Android7.1 编译 文章目录 RK3399 Android7.1 编译 前言 设置 Linux 编译环境 安装 JDK 可选- 更新默认的 Java 版本 安装所需的程序包(Ub ...
- android手机底噪,[RK3399][Android7.1] 调试笔记 --- Codec播放音乐会有底噪
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 背景: 移植完Codec RT5640之后,发现播放声音的时候底部有噪声. 用示波器测量到的左右声道波 ...
- [RK3399][Android7.1] 调试笔记 --- I2S1工作输出是12MHz问题
Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 现象: 使用I2S1通道,测量到的I2S MCLK是12MHz. 理论上应该是11.288MHz. 原 ...
- java获取apk启动activity_[RK3399] android7.1 设置开机启动apk
平台: RK3399+android7.1 开机启动apk (1)修改类: ./frameworks/base/services/core/java/com/android/server/am/Act ...
最新文章
- 使用Windows远程桌面(mstsc)通过RDP协议访问Ubuntu/Debian服务器
- c语言实现补码加减,C语言实现用位移运算符进行加减乘…
- 前端工程师的修真秘籍(css、javascript和其它)
- MySQL案例-open too many files,MyISAM与partition
- Windows server 2016 安装补丁报错 - The update is not applicable to your computer Error:0x800f0823
- 设计模式之MVC设计模式初阶
- linux后台运行程序(secureCRT断掉或关闭后继续运行程序)
- (原创)用红黄蓝RYB色相环(伊登色相环)代替RGB(RGI/RGV)色相环
- 如何删除word中怎么也删不掉的顽固空白页
- linux安装硬盘超过2t,linux 硬盘超过2T问题
- 《地球信息科学学报》发表宋关福博士论文:当GIS遇到人工智能
- 常用颜色大全---RGB值及中英文名称
- 如何使用JavaScript来判断用户设备类型
- 2022年湖南省中医执业医师考试第二单元中医诊断学(四)
- 微信小程序:40029错误(invalid code)
- 文件系统/var空间100%的问题
- linux aio 线程,linux AIO (异步IO) 那点事儿
- VnlnHub GeminiInc-Pentest-v2
- 更新iOS 15失败, iPhone变成白苹果怎么办呢?
- CSDN 简单的MD编辑器-基础知识