linux中gt9xx驱动在哪里获取设备树的节点内容
时间: 2024-03-28 08:37:36 浏览: 29
在 Linux 中 gt9xx 驱动通常会在 `probe` 函数中获取设备树节点的内容。具体来说,它会通过 `devicetree` 相关的 API 从设备树中获取节点的属性,以初始化驱动程序所需的数据结构。通常情况下,驱动程序会在 `probe` 函数中执行以下操作:
1. 调用 `devm_i2c_new_device` 函数创建一个新的 I2C 设备,并将返回的设备句柄存储在驱动程序的 `ts->client` 成员中。
2. 调用 `device_get_match_data` 函数从设备树节点中获取设备类型信息,并将返回的类型信息存储在驱动程序的 `ts->chip` 成员中。
3. 调用 `of_property_read_u32` 函数从设备树节点中获取设备的一些属性,如 I2C 地址、触摸屏尺寸等,并将这些属性值存储在驱动程序的对应成员中。
这些操作可以根据具体的驱动程序实现而有所不同,但是它们都是在 `probe` 函数中执行的,以初始化驱动程序所需的数据结构。
相关问题
linux中gt9xx驱动的ts->client是只设备树中的哪个
在 Linux 中 gt9xx 驱动的 ts->client 是指设备树中 I2C 设备节点的地址,通常被定义在设备树的 i2c 节点下,如下所示:
```
i2c {
/* ... */
gt9xx@5d {
compatible = "gt9xx";
reg = <0x5d>;
/* ... */
};
/* ... */
};
```
其中 `gt9xx@5d` 中的 `5d` 表示设备的 I2C 地址,这个地址是在设备的硬件规格中定义的。在驱动程序中,可以通过 `i2c_new_device` 函数创建一个新的设备来与这个 I2C 地址上的设备进行通信。
linux中DMA的设备树节点设置
在 Linux 中,设备树是描述硬件信息的一种数据结构。DMA(Direct Memory Access,直接内存访问)是一种硬件机制,它允许外设直接访问系统内存而不需要 CPU 的干预。在设备树中,DMA 控制器和外设需要进行正确的配置才能实现 DMA 的功能。
下面是一个示例设备树节点的 DMA 配置:
```
dma-channel@0 {
compatible = "arm,pl330", "arm,primecell";
reg = <0x7e001000 0x1000>;
interrupts = <0 47 4>;
#dma-cells = <1>;
dma-channels = <8>;
};
```
其中:
- `dma-channel@0` 是节点名称,在系统中应该是唯一的。
- `compatible` 属性指定了该节点所对应的 DMA 控制器的类型。
- `reg` 属性指定了该节点所对应的 DMA 控制器的物理地址和大小。
- `interrupts` 属性指定了该节点所对应的 DMA 控制器的中断信息。
- `#dma-cells` 属性指定了该节点所对应的 DMA 控制器的单个 DMA 通道所需要的参数个数。在本例中,只需要一个参数表示 DMA 通道号。
- `dma-channels` 属性指定了该节点所对应的 DMA 控制器的可用 DMA 通道数量。
对于外设的 DMA 配置,可以在该外设的设备树节点中添加 `dma` 属性,例如:
```
spi@ff1a0000 {
compatible = "rockchip,rk3066-spi";
reg = <0xff1a0000 0x1000>;
interrupts = <0 13 4>;
clocks = <&cru SCLK_SPI0>;
dmas = <&pdma0 4 3>, <&pdma0 5 3>;
dma-names = "rx", "tx";
};
```
其中:
- `dmas` 属性指定了该外设使用的 RX 和 TX DMA 通道。
- `dma-names` 属性指定了 `dmas` 属性中指定的 DMA 通道的名称。
以上是一些简单的示例,实际的设备树节点配置可能更加复杂,需要根据硬件的具体情况进行配置。