高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)
高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)
本系列导航:
高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)
高通平台8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)
高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)
在前两篇中我们了解了DTS的背景基础知识以及发挥作用的流程,这篇文章我们以android 7.1 高通的MSM8953平台为例来添加一个基础的i2c设备(包含一个gpio中断)。
1,首先我们在该i2c设备的驱动中找到了匹配设备与驱动程序的compatible
- static const struct of_device_id iqs263_of_match[] = {
- { .compatible = "azopteq,iqs263", },
- { },
- };
2,由此compatible可以找到dts中对应的设备
kernel\arch\arm64\boot\dts\qcom\msm8953-mtp.dts
- &i2c_8 { /* BLSP2 QUP4 */
- iqs263@44 { //Capacitive Touch Controller Driver
- compatible = "azopteq,iqs263";
- reg = <0x44>;
- pinctrl-names = "default";
- pinctrl-0 = <&iqs263_irq_config>;
- vdd-supply = <&pm8953_l5>;
- vio-supply = <&pm8953_l5>;
- interrupt-parent = <&tlmm>;
- interrupts = <48 0x2>;
- azopteq,irq-gpio =<&tlmm 48 0x2>;
- };
- };
2.1,其中compatible属性标识的名字是与驱动程序中名字相匹配的
2.2,其中reg属性及@符号后的十六进制数字标识了该设备iqs263的i2c地址为0x44
2.3,&i2c_8前的&表明此处仅仅是对i2c_8节点的补充,我们可以找到该节点定义的地方
kernel\arch\arm64\boot\dts\qcom\msm8953.dtsi
- &soc {
- i2c_8: i2c@7af8000 { /* BLSP2 QUP4 */
- compatible = "qcom,i2c-msm-v2";
- #address-cells = <1>;
- #size-cells = <0>;
- reg-names = "qup_phys_addr";
- reg = <0x7af8000 0x600>;
- interrupt-names = "qup_irq";
- interrupts = <0 302 0>;
- qcom,clk-freq-out = <400000>;
- qcom,clk-freq-in = <19200000>;
- clock-names = "iface_clk", "core_clk";
- clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
- <&clock_gcc clk_gcc_blsp2_qup4_i2c_apps_clk>;
- pinctrl-names = "i2c_active", "i2c_sleep";
- pinctrl-0 = <&i2c_8_active>;
- pinctrl-1 = <&i2c_8_sleep>;
- qcom,noise-rjct-scl = <0>;
- qcom,noise-rjct-sda = <0>;
- qcom,master-id = <84>;
- dmas = <&dma_blsp2 10 64 0x20000020 0x20>,
- <&dma_blsp2 11 32 0x20000020 0x20>;
- dma-names = "tx", "rx";
- };
- rpm_bus: qcom,rpm-smd {
- compatible = "qcom,rpm-smd";
- rpm-channel-name = "rpm_requests";
- rpm-channel-type = <15>; /* SMD_APPS_RPM */
- };
这当中的大部分属性都与平台相关了,可以看到定义了该i2c接口的时钟源、中断格式等。这部分一般由平台提供,作为驱动工程师了解即可。
2.3.1,i2c_8节点中的pinctrl-0指向了定义其io口的节点i2c_8_active和i2c_8_sleep,代码如下可见该i2c的IO口为Gpio98和Gpio99
kernel\arch\arm64\boot\dts\qcom\msm8953-pinctrl.dtsi
- &soc {
- tlmm: pinctrl@1000000 {
- i2c_8 {
- i2c_8_active: i2c_8_active {
- /* active state */
- mux {
- pins = "gpio98", "gpio99";
- function = "blsp_i2c8";
- };
- config {
- pins = "gpio98", "gpio99";
- drive-strength = <2>;
- bias-disable;
- };
- };
- i2c_8_sleep: i2c_8_sleep {
- /* suspended state */
- mux {
- pins = "gpio98", "gpio99";
- function = "gpio";
- };
- config {
- pins = "gpio98", "gpio99";
- drive-strength = <2>;
- bias-disable;
- };
- };
- };
- iqs263_irq_config: iqs263_irq_config {
- mux {
- pins = "gpio48";
- function = "gpio";
- };
- config {
- pins = "gpio48";
- drive-strength = <2>;
- bias-pull-up;
- };
- };
2.4,iqs263节点中的pinctrl-0 属性指向了表明其io口属性的节点为iqs263_irq_config,相关代码也在2.3.1指示的msm8953-pinctrl.dtsi文件中。
其中定义了iqs263的中断IO脚为Gpio48
2.5,iqs263节点中的vdd-supply,vio-supply属性指示了表明iqs263芯片供电的引脚的节点pm8953_l5,代码如下
kernel\arch\arm64\boot\dts\qcom\msm8953-regulator.dtsi
- &rpm_bus {
- rpm-regulator-ldoa5 {
- status = "okay";
- pm8953_l5: regulator-l5 {
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- qcom,init-voltage = <1800000>;
- status = "okay";
- };
- };
2.6,iqs263的interrupts = <48 0x2>属性表明中断号为48,2代表下降沿触发。相关知识可以参考: 高通平台8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)
##########################################################
欢迎广大学子交流嵌入式和安卓开发
aiku老师 微信号 :aiku868
微信公众平台:aiku嵌入式视频教程创科之龙
aiku老师QQ:1653687969
技术解答QQ群:234945702
##########################################################
高通平台8953 Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953 android7.1实例分析篇)相关推荐
- 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)
本系列导航: 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...
- 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)
本系列导航: 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...
- Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解
Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...
- Linux DTS (Device Tree Source)设备树源码
Linux DTS 设备树源码 1. 简介 1.1 引入DTS的原因 1.2 文件格式 2. DTS语法 2.1 .dtsi头文件 2.2 设备节点 2.2.1 设备树中节点命名格式 2.2.2 设备 ...
- [device tree] How to decompile a compiled .dtb (device tree blog) into .dts (device tree source).
$ ./out/target/product/project_name/obj/KERNEL_OBJ/scripts/dtc/dtc -I dtb -O dts -o decompiled.dts ~ ...
- linux 设备树详解
2 Linux 设备树 2.1 什么是设备树? 设备树(Device Tree),将这个词分开就是"设备"和"树",描述设备树的文件叫做DTS(Device T ...
- imx6平台设备树详解
设备树详解 在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device.i2c_board_info等) ...
- 【Linux驱动开发】Linux设备树详解
目录 一.设备树基础 1.概念 2.文件格式 3.编译工具 二.DTS语法 1..dtsi 头文件 2. 设备节点 3.标准属性 4.compatible 属性详解 5.修改设备树文件,增加或修改节点 ...
- Linux设备树详解
Linux设备树详解 设备树小故事 设备树文件 使用设备树 修改设备树文件 编译设备树 异常处理 编写驱动文件 参考资料 设备树小故事 设备树(Device Tree),将这个词分开就是"设 ...
- 【Linux驱动开发】设备树详解(二)设备树语法详解
活动地址:CSDN21天学习挑战赛 [Linux驱动开发]设备树详解(一)设备树基础介绍 [Linux驱动开发]设备树详解(二)设备树语法详解 [Linux驱动开发]设备树详解(三)设备树Kern ...
最新文章
- linux偏向swap,solaris/linux 增加swap交换空间的方法
- [jQuery]使用jQuery.Validate进行客户端验证(高级篇-下)——不使用微软验证控件的理由...
- C语言与数据库操作入门(Win版)
- python:直接插入和简单选择排序
- weblogic 负载均衡搭建
- 文件系统之-JAVA Sftp远程操作:
- 字符串string和内存流MemoryStream及比特数组byte[]互转
- Android应用程序线程消息循环模型分析(5)
- WAV文件的二进制格式解析
- 深入 Composer autoload
- fluent-bit 本地安装及配置
- 汇编语言(十二)颜色搭配显示+BIOS功能调用表+INT 10H功能详细列表
- Win10控制网卡启停脚本
- 合取范式 (CNF)
- android谷歌服务框架(GoogleServicesFramework)
- 走进tensorflow第六步——拟合一元二次函数
- excel单元格下拉选项怎么设置_单元格下拉效果怎么实现?
- 超微服务器芯片,北京超微GPU服务器
- 二进制以上的计算机,计算机中的二进制
- 点云文件格式转换——TXT、xyz等转换成pcd
热门文章
- Windows 无法打开“添加打印机”本地打印后台处理程序服务没有运行。请重新启动打印后台处理程序
- App Tamer for Mac v2.6 应用CPU使用率管理
- 关于网络异常的英文词汇总结
- HTML5期末大作业:HTML+CSS茶叶官网网页设计实例 企业网站制作
- i3处理器_千元英特尔10代I3处理器套装跑分72万?微星差异化赢得市场
- 《关键对话》读书笔记
- JAVA计算机毕业设计的问卷调查系统设计与实现源码+数据库+系统+lw文档
- Android系统build.prop文件生成过程
- 造一个智能语音音箱!!!太简单了【语音智能管家】
- python sql语句占位符_Python sqlite3占位符