User Tools

Site Tools


Sidebar

Go Back

Refresh

You are not allowed to add pages

Direct Link

library:rk3568:dtsguide

This is an old revision of the document!


DTS简述

1. node节点结构

{}包围起来的结构称之为节点,dts中最开头的/ {},称为根节点。

节点的标准结构是xxx@yyy{属性1;属性2;…},其中:

xxx:节点名
yyy(可选):节点的地址(寄存器地址或其他地址)
例:
i2c1:i2c@021a0000
rtc:pcf8523@68

1.1 属性

1.1.1 地址(reg)

reg的格式通常为<address length>
例:reg = <0x021a0000 0x4000>; 0x021a0000是寄存器基地址,0x4000是长度。
address 和length的个数是可变的,由父节点的属性#address-cells 和#size-cells 决定,
比如节点i2c@021a0000的父节点是aips-bus@02000000,其#address-cells 和#size-cells均为1,所以下面的i2c节点的reg属性就有一个address 和length,
而i2c节点本身#address-cells 和#size-cells 分别为1和0,所以其下的rtc: pcf8523@68 的reg属性就只有一个0x68(i2c地址)了

i2c1: i2c@021a0000 {
  #address-cells = <1>;
  #size-cells = <0>;
  compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
  reg = <0x021a0000 0x4000>;
  interrupts = <0 36 IRQ_TYPE_LEVEL_HIGH>;
  clocks = <&clks IMX6QDL_CLK_I2C1>;
  status = "disabled";
};

配置node可以根据compatible,在kernel/Documentation/devicetree/bindings中查到说明,
或在 kernel/drivers/tty/serial/ 早到驱动代码。例如:

v2m_serial0: uart@090000 {
  compatible = "arm,pl011", "arm,primecell";
  reg = <0x090000 0x1000>;
  interrupts = <5>;
  clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
  clock-names = "uartclk", "apb_pclk";
};
&i2c1 {
  pinctrl-names = "default";
  pinctrl-0 = <&pinctrl_hummingboard_i2c1>;
  rtc: pcf8523@68 {
      compatible = "nxp,pcf8523";
      reg = <0x68>;
};
#<path to sdk>  
cd kernel
cd Documentation/devicetree/bindings/
grep "arm,pl011" -rn *
#<path to sdk>
cd kernel/drivers/tty/serial/
grep "arm,pl011" -rn *
library/rk3568/dtsguide.1667185954.txt.gz · Last modified: 2022/10/31 11:12 by lhaosen