[RK3288][Android6.0] DeviceTree中的status属性使用规则

来源:互联网 发布:手机视频修复软件 编辑:程序博客网 时间:2024/06/07 03:39

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

有看到网友在讨论device tree中的status到底该如何设置,默认状态是什么,知识点如下:

  1. 默认情况下不设置status属性的话表示此节点的功能是enable的
  2. 如果要设置status,那么值必须是”okay”或者”ok”
  3. dts里的status属性值会覆盖dtsi中的值(编译dtb的时候会覆盖)

对应代码在kernel/drivers/of/base.c:

/** *  of_device_is_available - check if a device is available for use * *  @device: Node to check for availability * *  Returns 1 if the status property is absent or set to "okay" or "ok", *  0 otherwise */int of_device_is_available(const struct device_node *device){    unsigned long flags;    int res;    raw_spin_lock_irqsave(&devtree_lock, flags);    res = __of_device_is_available(device);    raw_spin_unlock_irqrestore(&devtree_lock, flags);    return res;}

__of_device_is_available():

/** *  __of_device_is_available - check if a device is available for use * *  @device: Node to check for availability, with locks already held * *  Returns 1 if the status property is absent or set to "okay" or "ok", *  0 otherwise */static int __of_device_is_available(const struct device_node *device){    const char *status;    int statlen;    status = __of_get_property(device, "status", &statlen);    if (status == NULL)        return 1;    if (statlen > 0) {        if (!strcmp(status, "okay") || !strcmp(status, "ok"))            return 1;    }    return 0;}

参考:
Linux Device Tree: What those status = “okay” are about

阅读全文
1 0
原创粉丝点击