问题:针对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的默认配置相关推荐

  1. RK3399 Android7.1修改系统默认USB功能

    在device\rockchip\common\device.mk中修改persist.sys.usb.config的值,如下将USB功能默认设置为MTP(去掉ADB): ifeq ($(strip ...

  2. RK3399 Android7.1修改系统默认壁纸

    替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg 替换frameworks/base/core/res/res/d ...

  3. [RK3399][Android7.1] 调试笔记 --- 系统默认时钟配置

    OS: Android 7.1 Board: Firefly-RK3399 Kernel: v4.4.55 分两个模块,一个是cpu,还有一个是pmu模块,这里只举例cpu,cpu又分在两个文件中定义 ...

  4. [RK3399][Android7.1]勿扰模式的默认设置修改

    需求是要求固件默认关闭优先打扰内容里边所有选项,删除自动规则里边的所有内容 开始以为是在默认设置里边修改,后面发现这个配置使用的是/data/system/notification_policy.xm ...

  5. Android 系统(69)---Android7.1.1系统设置默认值大全

    Android7.1.1系统设置默认值大全  在寻找一个开关的默认值时,首先要明白一点,该开关是否存在默认值,以及该开关状态是否有状态保存(一般状态存settings的db中).  判断条件:  在r ...

  6. [Android系统]android7.1 修改系统默认输入法

    参看博客: Android 7.0 删除原生输入法(AOSP)&更换系统默认输入法_Photon128的博客-CSDN博客_aosp输入法 [RK3288][Android6.0] 调试笔记 ...

  7. RK3399 Android7.1 编译

    RK3399 Android7.1 编译 文章目录 RK3399 Android7.1 编译 前言 设置 Linux 编译环境 安装 JDK 可选- 更新默认的 Java 版本 安装所需的程序包(Ub ...

  8. android手机底噪,[RK3399][Android7.1] 调试笔记 --- Codec播放音乐会有底噪

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 背景: 移植完Codec RT5640之后,发现播放声音的时候底部有噪声. 用示波器测量到的左右声道波 ...

  9. [RK3399][Android7.1] 调试笔记 --- I2S1工作输出是12MHz问题

    Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 现象: 使用I2S1通道,测量到的I2S MCLK是12MHz. 理论上应该是11.288MHz. 原 ...

  10. java获取apk启动activity_[RK3399] android7.1 设置开机启动apk

    平台: RK3399+android7.1 开机启动apk (1)修改类: ./frameworks/base/services/core/java/com/android/server/am/Act ...

最新文章

  1. 使用Windows远程桌面(mstsc)通过RDP协议访问Ubuntu/Debian服务器
  2. c语言实现补码加减,C语言实现用位移运算符进行加减乘…
  3. 前端工程师的修真秘籍(css、javascript和其它)
  4. MySQL案例-open too many files,MyISAM与partition
  5. Windows server 2016 安装补丁报错 - The update is not applicable to your computer Error:0x800f0823
  6. 设计模式之MVC设计模式初阶
  7. linux后台运行程序(secureCRT断掉或关闭后继续运行程序)
  8. (原创)用红黄蓝RYB色相环(伊登色相环)代替RGB(RGI/RGV)色相环
  9. 如何删除word中怎么也删不掉的顽固空白页
  10. linux安装硬盘超过2t,linux 硬盘超过2T问题
  11. 《地球信息科学学报》发表宋关福博士论文:当GIS遇到人工智能
  12. 常用颜色大全---RGB值及中英文名称
  13. 如何使用JavaScript来判断用户设备类型
  14. 2022年湖南省中医执业医师考试第二单元中医诊断学(四)
  15. 微信小程序:40029错误(invalid code)
  16. 文件系统/var空间100%的问题
  17. linux aio 线程,linux AIO (异步IO) 那点事儿
  18. VnlnHub GeminiInc-Pentest-v2
  19. 更新iOS 15失败, iPhone变成白苹果怎么办呢?
  20. CSDN 简单的MD编辑器-基础知识

热门文章

  1. 最小二乘法2阶拟合数据
  2. 【译】WebSocket协议第五章——数据帧(Data Framing)
  3. PHP排序算法之快速排序
  4. win下MySQL 8.0.11 修改密码、开启远程访问
  5. 史上最失败系统!微软正式终止对Vista支持
  6. MySql中in和exists效率
  7. mui ajax请求 登录
  8. Day10(--JSP与JSP内置对象)
  9. spring学习4-bean配置文件
  10. [置顶] Eclipse显示中文 在线安装教程