设备树的绑定文档,所在目录:Linux 源码根目录:
/Documentation/devicetree/bindings
目录下文件如下所示:
可以看出,Linux内核源码目录 /Documentation/devicetree/bindings目录下,分门别类存放了不同的绑定文档。
注意:不同的芯片,i2c节点的描述是不一样的。例如,nxp的,三星的等等。
例如,我们现在要想在 I.MX6ULL 这颗 SOC 的 I2C 下添加一个节点,那么就可以查看Documentation/devicetree/bindings/i2c/目录下的文档。该目录下的 文档 i2c-imx.txt,此文档详细的描述了 I.MX 系列的 SOC 如何在设备树中添加 I2C 设备节点,文档内容如下所示:
* Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX
Required properties:
- compatible :
- "fsl,imx1-i2c" for I2C compatible with the one integrated on i.MX1 SoC
- "fsl,imx21-i2c" for I2C compatible with the one integrated on i.MX21 SoC
- "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC
- reg : Should contain I2C/HS-I2C registers location and length
- interrupts : Should contain I2C/HS-I2C interrupt
- clocks : Should contain the I2C/HS-I2C clock specifier
Optional properties:
- clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz.
The absence of the propoerty indicates the default frequency 100 kHz.
- dmas: A list of two dma specifiers, one for each entry in dma-names.
- dma-names: should contain "tx" and "rx".
Examples:
i2c@83fc4000 { /* I2C2 on i.MX51 */
compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
reg = <0x83fc4000 0x4000>;
interrupts = <63>;
};
i2c@70038000 { /* HS-I2C on i.MX51 */
compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
reg = <0x70038000 0x4000>;
interrupts = <64>;
clock-frequency = <400000>;
};
i2c0: i2c@40066000 { /* i2c0 on vf610 */
compatible = "fsl,vf610-i2c";
reg = <0x40066000 0x1000>;
interrupts =<0 71 0x04>;
dmas = <&edma0 0 50>,
<&edma0 0 51>;
dma-names = "rx","tx";
};
I.MX 系列的 SOC 芯片的设备树的绑定文档:
Required properties下面的为必须要求写的设备属性,包括 compatible,reg ,interrupts,clocks 这些属性。
Optional properties下面的为一些可选的属性,包括 clock-frequency,dmas,dma-names这些属性。
文档中还进行了举例说明。
有时使用的一些芯片在 Documentation/devicetree/bindings 目录下找不到对应的文档,这 个时候就要咨询芯片的提供商,让他们给你提供参考的设备树文件。
注意:绑定文档只是写设备节点时的一个参考,可能也不完善!