欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > linux pinctrl 驱动初始化时机分析

linux pinctrl 驱动初始化时机分析

2025/11/10 6:42:04 来源:https://blog.csdn.net/liuyinggui163/article/details/137338403  浏览:    关键词:linux pinctrl 驱动初始化时机分析

linux pinctrl 驱动初始化时机分析

为什么需要分析pinctrl 初始化时机

硬件电路中经常会看到如下这样的控制,GPIO 控制电源,GPIO控制各模块的使能脚。有些GPIO一上电时随系统一起上电,有些有特殊的控制

在这里插入图片描述
在这里插入图片描述
所以我以经常在设备树中看到如下写法

&dsi {status = "okay";panel@0 {compatible ="simple-panel-dsi";reg = <0>;backlight = <&backlight>;.......pinctrl-names = "default"; // <------------这里pinctrl-0 = <&vdd_5v_3v3_h>; // <------------这里.......}}

以及这样


&pinctrl {/delete-property/ rp_init;pinctrl-names = "default";pinctrl-0 = <&vcc12v &lcd_blacklight_enable>;pinctrl_init {vcc12v: vcc12v {rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_output_high>;};lcd_blacklight_enable: lcd_blacklight_enable {rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_output_high>;};};};

这样仅在设备树中的配置,不用写驱动和代码就能控制GPIO的状态,确实比较省事。

但是在一些情况下我们需要控制GPIO 的时序时,我们就得弄清楚,哪些控制在前哪些控制在后,例如
系统启动时出现闪屏的现象;
分析这个问题的原因,其基本原因是屏上电时序有要求,而屏的使能,与电源的控制又与pinctrl 相关;
在这里插入图片描述

分析过程

pinctrl rockchip_pinctrl_probe 的初始化时机
使用dump_stack() 打印堆栈

 [    0.296121] [<b040b420>] (rockchip_pinctrl_probe) from [<b04dafb8>] (platform_drv_probe+0x48/0x9c)
[    0.305667] [<b04dafb8>] (platform_drv_probe) from [<b04d92c0>] (really_probe+0x210/0x2bc)
[    0.314476] [<b04d92c0>] (really_probe) from [<[b04d94d0>] (driver_probe_device+0x60/0x160)
[    0.323285] [<b04d94d0>] (driver_probe_device) from [<b04d7758>] (bus_for_each_drv+0x74/0xb8)
[    0.332377] [<b04d7758>] (bus_for_each_drv) from  [<b04d9040>]  (__d1evic0e_attach+0xd0/0x138)
[    0.341184] [<b04d9040>] (__device_attach) from [<b04d8434>] (bus_probe_device+0x84/0x8c)
[    0.349906] [<b04d8434>] (bus_probe_device) from [<b04d5870>] (device_add+0x65c/0x784)
[    0.358353] [<b04d5870>] (device_add) from [<b06e4250>] (of_platform_device_create_pdata+0x94/0xcc)
[    0.367993] [<b06e4250>] (of_platform_device_create_pdata) from [<4b06e4408>] (of_platform_bus_create+0x138/0x36c)
[    0.378932] [<b06e4408>] (of_p.latf7orm_bus_create3) fr9om [<b06e4770>] (of_platform_populate+0x60/0xb4)
[    0.388669] [<b06e4770>] (of_platform_populate) from [<b0d20c18>] (of_platform_default_populate_init+0xa4/0xbc)
[    0.399419] [<b0d20c18>] (of_platform_default_populate_ini9t) from [5<b0102650>] (d5o_on]e_initcall+0x54/0x194)
[     0.40f9799] [<b0102650>] (do_one_initcall) from [<b0d00ecc>] (kernel_init_freeable+0x144/0x1dc)
[    0.419069] [<b0d00ecc>] (kernel_init_freeable) from [<b0946204>] (kernel_init+0x8/0x110)
[    0.427790] [<b0946204>] (kernel_init) ffroms [<b_0101d0d8>a] (rtet_faom_fork+0x14/0x3c)

。。。。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词