全志设备树中的device_type属性
时间: 2024-03-19 21:40:19 浏览: 26
在全志的设备树中,`device_type`属性用于标识设备节点的类型。它是一个字符串类型的属性,通常定义在设备节点的最上层,即根节点的子节点中。
`device_type`属性的值通常是一个标识设备类型的字符串,例如:
- `cpu`:标识CPU设备节点
- `memory`:标识内存设备节点
- `serial`:标识串口设备节点
- `i2c`:标识I2C设备节点
- `spi`: 标识SPI设备节点
- `mmc`:标识MMC设备节点
- `usb`:标识USB设备节点
- `ethernet`:标识以太网设备节点
- `gpio`:标识GPIO设备节点
- `pwm`:标识PWM设备节点
设备树中的其他节点可以通过`compatible`属性和`device_type`属性来识别特定类型的设备节点。`compatible`属性用于标识设备的具体型号或者版本,而`device_type`属性则用于标识设备节点的类型。
相关问题
of_device_id.data对应设备树
`of_device_id`结构体中的`data`字段是一个指向与设备相关的数据的指针,通常用于在驱动程序中访问设备树的节点属性。在设备树中,每个节点都有一个属性列表,驱动程序可以使用`of_device`结构体中的`dev.of_node`成员指针来获取该节点的属性,然后进行相应的操作。
例如,假设我们有一个名为`my-device`的设备节点,其属性列表中包含一个名为`my-property`的属性,我们可以先在`of_device_id`结构体中定义一个与之对应的数据结构:
```c
struct my_device_data {
int my_property;
};
```
然后,在驱动程序初始化时,我们可以将这个数据结构指定为`of_device_id`结构体的`data`字段:
```c
static const struct of_device_id my_driver_of_match[] = {
{
.compatible = "my-device",
.data = &my_device_data
},
{ /* end of list */ },
};
```
接着,在驱动程序的`probe()`函数中,我们可以通过`of_device`结构体中的`dev.of_node`成员指针获取设备节点的属性,并将其保存到之前定义的数据结构中:
```c
static int my_driver_probe(struct platform_device *pdev)
{
struct my_device_data *data;
struct device_node *np = pdev->dev.of_node;
data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;
of_property_read_u32(np, "my-property", &data->my_property);
/* do something with my-property value */
return 0;
}
```
在上面的例子中,`of_property_read_u32()`函数用于从设备节点的属性列表中读取`my-property`属性,并将其保存到`my_device_data`结构体中的`my_property`字段中。这样,我们就可以在驱动程序中访问设备树中的节点属性,并按需进行相应的操作。
SELECT device.id, device.device_name, if( deviceModel.device_model_name like "%双%" , 2 ) as num FROM t_bas_device device INNER JOIN t_bas_device_business_information deviceInfo ON device.id = deviceInfo.device_id INNER JOIN t_bas_device_type deviceSubType ON deviceSubType.id = device.device_sub_type_id INNER JOIN t_bas_device_model deviceModel on deviceModel.id = device.device_model_id WHERE deviceInfo.zone_id = "3b4ba520-a58b-e6c5-4018-70afcd390675" AND deviceSubType.device_type_code = "drainagePump" GROUP BY device.id ORDER BY device.sort ASC -- 如何根据 deviceModel.device_model_name 展示不同数据
可以使用 CASE WHEN 语句根据 deviceModel.device_model_name 展示不同数据,如下所示:
```
SELECT
device.id,
device.device_name,
CASE
WHEN deviceModel.device_model_name LIKE "%双%" THEN 2
ELSE 1
END AS num
FROM
t_bas_device device
INNER JOIN t_bas_device_business_information deviceInfo ON device.id = deviceInfo.device_id
INNER JOIN t_bas_device_type deviceSubType ON deviceSubType.id = device.device_sub_type_id
INNER JOIN t_bas_device_model deviceModel ON deviceModel.id = device.device_model_id
WHERE
deviceInfo.zone_id = "3b4ba520-a58b-e6c5-4018-70afcd390675"
AND deviceSubType.device_type_code = "drainagePump"
GROUP BY
device.id
ORDER BY
device.sort ASC;
```
这里使用了 CASE WHEN 语句来判断 deviceModel.device_model_name 是否包含 "双" 字符串,如果包含,则 num 为 2,否则为 1。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)