设备树规格书(Devicetree Specification)
本章包含了特定类型和设备类在设备树中的表示要求,即绑定。设备节点的compatible属性描述了节点符合的特定绑定(或多个绑定)。
绑定可以定义为其他绑定的扩展。例如,新的总线类型可以定义为简单总线绑定的扩展。在这种情况下,compatible属性将包含多个字符串,从最具体到最一般的每个绑定(参见:numref:sect-standard-properties-compatible
,compatible)。
在为设备创建新的设备树表示时,应创建一个完全描述设备所需属性和值的绑定。这组属性应足够描述设备的所需属性,以提供设备驱动程序所需的属性。
一些推荐的做法包括:
-
使用:numref:
sect-standard-properties-compatible
中描述的约定定义兼容字符串。 -
对于新设备,如适用,使用标准属性(在:numref:
sect-standard-properties
和:numref:sect-interrupts
中定义)。此使用通常包括至少“reg”和“interrupts”属性。 -
如果新设备适合于|spec|定义的设备类之一,则使用:numref:
chapter-device-bindings
(设备绑定)中指定的约定。 -
如果适用,使用在:numref:
sect-misc-properties
中指定的杂项属性约定。 -
如果绑定需要新属性,则属性名称的推荐格式为:
"<company>,<property-name>"
,其中"<company>"
是标识绑定创建者的OUI或短唯一字符串,如股票代码。例如:
"ibm,ppc-interrupt-server#s"
本节定义了一些有用的属性,适用于许多类型的设备和设备类。它们在此定义,以便标准化名称和用法。
属性 | clock-frequency |
---|---|
值类型 | <prop-encoded-array> |
描述 | 指定时钟频率(以赫兹为单位)。值是一个 <prop-encoded-array> ,有两种形式之一:由一个 <u32> 组成的 32 位整数,指定频率 由一个 <u64> 表示的 64 位整数,指定频率 |
属性 | reg-shift |
---|---|
值类型 | <u32> |
描述 | reg-shift 属性提供了一种机制,用于表示在大多数方面相同但寄存器之间的字节数不同的设备。reg-shift 属性指定离散设备寄存器彼此分隔的距离(以字节为单位)。使用以下公式计算单个寄存器位置:“寄存器地址”<< reg-shift。如果未指定,则默认值为 0。 例如,在一个系统中,16540 UART 寄存器位于地址 0x0、0x4、0x8、0xC、0x10、0x14、0x18 和 0x1C,将使用 reg-shift = <2> 属性来指定寄存器位置。 |
属性 | label |
---|---|
值类型 | <string> |
描述 | label 属性定义了一个人类可读的字符串,描述了一个设备。给定设备的绑定指定了该属性对于该设备的确切含义。 |
串行设备类包括各种类型的点对点串行线设备。串行线设备的示例包括8250 UART、16550 UART、HDLC设备和BISYNC设备。在大多数情况下,与RS-232标准兼容的硬件适合于串行设备类。
I2C和SPI(串行外设接口)设备不应表示为串行端口设备,因为它们有自己特定的表示。
属性 | clock-frequency |
---|---|
值类型 | <u32> |
描述 | 指定波特率发生器输入时钟的频率(以赫兹为单位)。 |
示例 | clock-frequency = <100000000>; |
属性 | current-speed |
---|---|
值类型 | <u32> |
描述 | 指定串行设备的当前速度(以每秒位数为单位)。如果引导程序已初始化串行设备,则应设置此属性。 |
示例 | 115,200波特率:current-speed = <115200>; |
应使用以下属性在设备树中表示与 National Semiconductor 16450/16550 UART(通用异步收发器)兼容的串行设备。
属性名称 | 用途 | 值类型 | 定义 |
---|---|---|---|
compatible |
R | <string list> |
值应包括 "ns16550"。 |
clock-frequency |
R | <u32> |
指定波特率发生器输入时钟的频率(以赫兹为单位)。 |
current-speed |
OR | <u32> |
指定当前串行设备速度,以每秒位数为单位。 |
reg |
R | <prop encoded array> |
指定设备寄存器的物理地址,该地址位于父总线的地址空间中。 |
interrupts |
OR | <prop encoded array> |
指定此设备生成的中断。中断属性的值由一个或多个中断规范符号组成。中断规范符号的格式由描述节点中断父级的绑定文档定义。 |
reg-shift |
O | <u32> |
指定离散设备寄存器与彼此分隔的字节数。使用以下公式计算单个寄存器位置:"寄存器地址" << reg-shift 。如果未指定,则默认值为 0。 |
virtual-reg |
SD | <u32> 或 <u64> |
参见 :numref:sect-standard-properties-virtual-reg 。指定映射到 reg 属性中指定的第一个物理地址的有效地址。如果此设备节点是系统的控制台,则需要此属性。 |
用途图例:R=必需,O=可选,OR=可选但建议,SD=见定义
注意: 允许使用所有其他标准属性(:numref:
sect-standard-properties
),但这些属性是可选的。
网络设备是面向数据包的通信设备。假定此类设备实现了七层OSI模型的数据链路层(第2层)并使用媒体访问控制(MAC)地址。网络设备的示例包括以太网、FDDI、802.11和Token-Ring。
属性 | address-bits |
---|---|
值类型 | <u32> |
描述 | 指定用于寻址描述此节点的设备所需的地址位数。此属性指定MAC地址中的位数。如果未指定,则默认值为48。 |
示例 | address-bits = <48>; |
属性 | local-mac-address |
---|---|
值类型 | <prop-encoded-array> 编码为十六进制数字数组 |
描述 | 指定分配给包含此属性的节点描述的网络设备的MAC地址。 |
示例 | local-mac-address = [ 00 00 12 34 56 78 ]; |
属性 | mac-address |
---|---|
值类型 | <prop-encoded-array> 编码为十六进制数字数组 |
描述 | 指定引导程序最后使用的MAC地址。在引导程序分配给设备的MAC地址与local-mac-address属性不同时,应使用此属性。仅当值与local-mac-address属性值不同时,才应使用此属性。 |
示例 | mac-address = [ 02 03 04 05 06 07 ]; |
属性 | max-frame-size |
---|---|
值类型 | <u32> |
描述 | 指定物理接口可以发送和接收的最大数据包长度(以字节为单位)。 |
示例 | max-frame-size = <1518>; |
基于IEEE 802.3局域网标准集(统称为以太网)的网络设备可以使用以下属性在设备树中表示,除了网络设备类别指定的属性之外。
本节列出的属性增强了网络设备类别中列出的属性。
属性 | max-speed |
---|---|
值类型 | <u32> |
描述 | 指定设备支持的最大速度(以兆位每秒为单位)。 |
示例 | max-speed = <1000>; |
属性 | phy-connection-type |
---|---|
值类型 | <string> |
描述 | 指定以太网设备和物理层(PHY)设备之间的接口类型。此属性的值特定于实现。建议值如下表所示。 |
示例 | phy-connection-type = "mii"; |
连接类型 | 值 |
---|---|
媒体独立接口 | mii |
简化媒体独立接口 | rmii |
千兆位媒体独立接口 | gmii |
简化千兆位媒体独立 | rgmii |
rgmii带内部延迟 | rgmii-id |
仅在TX上具有内部延迟的rgmii | rgmii-txid |
仅在RX上具有内部延迟的rgmii | rgmii-rxid |
十位接口 | tbi |
简化十位接口 | rtbi |
串行媒体独立接口 | smii |
串行千兆位媒体独立接口 | sgmii |
反向媒体独立接口 | rev-mii |
十千兆位媒体独立接口 | xgmii |
同轴多媒体 | moca |
四个串行千兆位媒体独立接口 | qsgmii |
Turbo简化千兆位媒体独立接口 | trgmii |
属性 | phy-handle |
---|---|
值类型 | <phandle> |
描述 | 指定表示连接到此以太网设备的物理层(PHY)设备的节点的引用。如果以太网设备连接到物理层设备,则需要此属性。 |
示例 | phy-handle = <&PHY0>; |
本节指定了表示Open PIC兼容中断控制器的要求。Open PIC中断控制器实现了Open PIC架构(由AMD和Cyrix共同开发),并在《可编程开放式中断控制器(PIC)寄存器接口规范修订版1.2》[b18]中指定。
Open PIC中断域中的中断指定符使用两个单元格进行编码。第一个单元格定义中断号。第二个单元格定义感知和电平信息。
在中断指定符中,感知和电平信息应编码如下:
0 = 低到高边缘敏感类型已启用
1 = 低电平敏感类型已启用
2 = 高电平敏感类型已启用
3 = 高到低边缘敏感类型已启用
属性名称 | 用途 | 值类型 | 定义 |
---|---|---|---|
compatible | R | <string> |
值应包括“open-pic” |
reg | R | <prop encoded array> |
指定寄存器设备在父总线地址空间内的物理地址 |
interrupt-controller | R | <empty> |
指定此节点是中断控制器 |
#interrupt-cells | R | <u32> |
必须为2 |
#address-cells | R | <u32> |
必须为0 |
用途图例:R=必需,O=可选,OR=可选但建议,SD=请参阅定义
Note: 允许使用所有其他标准属性(:numref:sect-standard-properties),但是这些属性是可选的。
片上系统处理器可能具有无法探测设备的内部I/O总线。可以直接访问总线上的设备,无需其他配置即可访问。此类型的总线表示为具有兼容值“simple-bus”的节点。
属性名称 | 用途 | 值类型 | 定义 |
---|---|---|---|
compatible | R | <string> |
值应包括“simple-bus” |
ranges | R | <prop encoded array> |
此属性表示父地址到子地址空间之间的映射(请参见:numref:sect-standard-properties-ranges,ranges) |
nonposted-mmio | O | <empty> |
指定此总线的直接子项应使用非发布的内存访问(即非发布的映射模式)进行MMIO范围。 |
用途图例:R=必需,O=可选,OR=可选但建议,SD=请参阅定义