static int __of_device_is_compatible(const struct device_node *device,
const char *compat)
{
const char* cp;
int cplen, l;
cp = __of_get_property(device, "compatible", &cplen); // 这里就是获取device的compatible的字符串信息
if (cp == NULL)
return 0;
while (cplen > 0) {
if (of_compat_cmp(cp, compat, strlen(compat)) == 0) // 对比device的compatible的字符串信息和driver的compatible的字符串信息是否相等
return 1;
l = strlen(cp) + 1;
cp += l;
cplen -= l;
}
return 0;
}
8-2-1. drivers/base/dd.c : driver_probe_device(...)
driver_probe_device(...) --> really_probe(...)