高通平台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

[objc] view plain copy
  1. static const struct of_device_id iqs263_of_match[] = {
  2. { .compatible = "azopteq,iqs263", },
  3. { },
  4. };

2,由此compatible可以找到dts中对应的设备

kernel\arch\arm64\boot\dts\qcom\msm8953-mtp.dts

[objc] view plain copy
  1. &i2c_8 { /* BLSP2 QUP4 */
  2. iqs263@44 { //Capacitive Touch Controller Driver
  3. compatible = "azopteq,iqs263";
  4. reg = <0x44>;
  5. pinctrl-names = "default";
  6. pinctrl-0 = <&iqs263_irq_config>;
  7. vdd-supply = <&pm8953_l5>;
  8. vio-supply = <&pm8953_l5>;
  9. interrupt-parent = <&tlmm>;
  10. interrupts = <48 0x2>;
  11. azopteq,irq-gpio =<&tlmm 48 0x2>;
  12. };
  13. };

2.1,其中compatible属性标识的名字是与驱动程序中名字相匹配的

2.2,其中reg属性及@符号后的十六进制数字标识了该设备iqs263的i2c地址为0x44

2.3,&i2c_8前的&表明此处仅仅是对i2c_8节点的补充,我们可以找到该节点定义的地方

kernel\arch\arm64\boot\dts\qcom\msm8953.dtsi

[objc] view plain copy
  1. &soc {
  2. i2c_8: i2c@7af8000 { /* BLSP2 QUP4 */
  3. compatible = "qcom,i2c-msm-v2";
  4. #address-cells = <1>;
  5. #size-cells = <0>;
  6. reg-names = "qup_phys_addr";
  7. reg = <0x7af8000 0x600>;
  8. interrupt-names = "qup_irq";
  9. interrupts = <0 302 0>;
  10. qcom,clk-freq-out = <400000>;
  11. qcom,clk-freq-in  = <19200000>;
  12. clock-names = "iface_clk", "core_clk";
  13. clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
  14. <&clock_gcc clk_gcc_blsp2_qup4_i2c_apps_clk>;
  15. pinctrl-names = "i2c_active", "i2c_sleep";
  16. pinctrl-0 = <&i2c_8_active>;
  17. pinctrl-1 = <&i2c_8_sleep>;
  18. qcom,noise-rjct-scl = <0>;
  19. qcom,noise-rjct-sda = <0>;
  20. qcom,master-id = <84>;
  21. dmas = <&dma_blsp2 10 64 0x20000020 0x20>,
  22. <&dma_blsp2 11 32 0x20000020 0x20>;
  23. dma-names = "tx", "rx";
  24. };
  25. rpm_bus: qcom,rpm-smd {
  26. compatible = "qcom,rpm-smd";
  27. rpm-channel-name = "rpm_requests";
  28. rpm-channel-type = <15>; /* SMD_APPS_RPM */
  29. };

这当中的大部分属性都与平台相关了,可以看到定义了该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

[objc] view plain copy
  1. &soc {
  2. tlmm: pinctrl@1000000 {
  3. i2c_8 {
  4. i2c_8_active: i2c_8_active {
  5. /* active state */
  6. mux {
  7. pins = "gpio98", "gpio99";
  8. function = "blsp_i2c8";
  9. };
  10. config {
  11. pins = "gpio98", "gpio99";
  12. drive-strength = <2>;
  13. bias-disable;
  14. };
  15. };
  16. i2c_8_sleep: i2c_8_sleep {
  17. /* suspended state */
  18. mux {
  19. pins = "gpio98", "gpio99";
  20. function = "gpio";
  21. };
  22. config {
  23. pins = "gpio98", "gpio99";
  24. drive-strength = <2>;
  25. bias-disable;
  26. };
  27. };
  28. };
  29. iqs263_irq_config: iqs263_irq_config {
  30. mux {
  31. pins = "gpio48";
  32. function = "gpio";
  33. };
  34. config {
  35. pins = "gpio48";
  36. drive-strength = <2>;
  37. bias-pull-up;
  38. };
  39. };

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

[objc] view plain copy
  1. &rpm_bus {
  2. rpm-regulator-ldoa5 {
  3. status = "okay";
  4. pm8953_l5: regulator-l5 {
  5. regulator-min-microvolt = <1800000>;
  6. regulator-max-microvolt = <1800000>;
  7. qcom,init-voltage = <1800000>;
  8. status = "okay";
  9. };
  10. };

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实例分析篇)相关推荐

  1. 高通平台8953 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  2. 高通平台msm8953 Linux DTS(Device Tree Source)设备树详解之二(DTS设备树匹配过程)

    本系列导航: 高通平台8953  Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) 高通平台8953 Linux DTS(Device Tree Source ...

  3. Android 驱动(12)---Linux DTS(Device Tree Source)设备树详解

    Linux DTS(Device Tree Source)设备树详解 Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇) Linux DTS(Device Tr ...

  4. 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 设备 ...

  5. [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 ~ ...

  6. linux 设备树详解

    2 Linux 设备树 2.1 什么是设备树? 设备树(Device Tree),将这个词分开就是"设备"和"树",描述设备树的文件叫做DTS(Device T ...

  7. imx6平台设备树详解

    设备树详解 在Linux3.x版本后,arch/arm/plat-xxx和arch/arm/mach-xxx中,描述板级细节的代码(比如platform_device.i2c_board_info等) ...

  8. 【Linux驱动开发】Linux设备树详解

    目录 一.设备树基础 1.概念 2.文件格式 3.编译工具 二.DTS语法 1..dtsi 头文件 2. 设备节点 3.标准属性 4.compatible 属性详解 5.修改设备树文件,增加或修改节点 ...

  9. Linux设备树详解

    Linux设备树详解 设备树小故事 设备树文件 使用设备树 修改设备树文件 编译设备树 异常处理 编写驱动文件 参考资料 设备树小故事 设备树(Device Tree),将这个词分开就是"设 ...

  10. 【Linux驱动开发】设备树详解(二)设备树语法详解

    ​ 活动地址:CSDN21天学习挑战赛 [Linux驱动开发]设备树详解(一)设备树基础介绍 [Linux驱动开发]设备树详解(二)设备树语法详解 [Linux驱动开发]设备树详解(三)设备树Kern ...

最新文章

  1. linux偏向swap,solaris/linux 增加swap交换空间的方法
  2. [jQuery]使用jQuery.Validate进行客户端验证(高级篇-下)——不使用微软验证控件的理由...
  3. C语言与数据库操作入门(Win版)
  4. python:直接插入和简单选择排序
  5. weblogic 负载均衡搭建
  6. 文件系统之-JAVA Sftp远程操作:
  7. 字符串string和内存流MemoryStream及比特数组byte[]互转
  8. Android应用程序线程消息循环模型分析(5)
  9. WAV文件的二进制格式解析
  10. 深入 Composer autoload
  11. fluent-bit 本地安装及配置
  12. 汇编语言(十二)颜色搭配显示+BIOS功能调用表+INT 10H功能详细列表
  13. Win10控制网卡启停脚本
  14. 合取范式 (CNF)
  15. android谷歌服务框架(GoogleServicesFramework)
  16. 走进tensorflow第六步——拟合一元二次函数
  17. excel单元格下拉选项怎么设置_单元格下拉效果怎么实现?
  18. 超微服务器芯片,北京超微GPU服务器
  19. 二进制以上的计算机,计算机中的二进制
  20. 点云文件格式转换——TXT、xyz等转换成pcd

热门文章

  1. Windows 无法打开“添加打印机”本地打印后台处理程序服务没有运行。请重新启动打印后台处理程序
  2. App Tamer for Mac v2.6 应用CPU使用率管理
  3. 关于网络异常的英文词汇总结
  4. HTML5期末大作业:HTML+CSS茶叶官网网页设计实例 企业网站制作
  5. i3处理器_千元英特尔10代I3处理器套装跑分72万?微星差异化赢得市场
  6. 《关键对话》读书笔记
  7. JAVA计算机毕业设计的问卷调查系统设计与实现源码+数据库+系统+lw文档
  8. Android系统build.prop文件生成过程
  9. 造一个智能语音音箱!!!太简单了【语音智能管家】
  10. python sql语句占位符_Python sqlite3占位符