gboolean drvctl_find_parent(const gchar *devnode, char *parent) { gboolean ret; ret = drvctl_find_device_with_child("mainbus0", devnode, parent); if (ret == FALSE) { ret = drvctl_find_device_with_child("armfdt0", devnode, parent); } return ret; }
static gboolean drvctl_find_device_with_child(const gchar *curnode, const gchar *devnode, char *parent) { struct devlistargs laa; u_int i; if (drvctl_list (curnode, &laa) == -1) return FALSE; for (i = 0; i < laa.l_children; i++) { if (strcmp (laa.l_childname[i], devnode) == 0) { strlcpy(parent, curnode, 16); free(laa.l_childname); return TRUE; } if (drvctl_find_device_with_child (laa.l_childname[i], devnode, parent) == TRUE) { free(laa.l_childname); return TRUE; } } if (laa.l_childname) free(laa.l_childname); HAL_INFO (("%s: couldn't find device with child %s", curnode, devnode)); return FALSE; }
gboolean drvctl_find_parent(const gchar *devnode, char *parent) { return drvctl_find_device_with_child("mainbus0", devnode, parent); }