/* must call put_device() when done with returned i2c_adapter device */ struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node *node) { struct device *dev; struct i2c_adapter *adapter; dev = bus_find_device(&i2c_bus_type, NULL, node, of_dev_or_parent_node_match); if (!dev) return NULL; adapter = i2c_verify_adapter(dev); if (!adapter) put_device(dev); return adapter; }
static int i2c_print_dev(struct device *dev, void *data) { struct vmm_chardev *cdev = data; struct i2c_adapter *adap = NULL; if (NULL != (adap = i2c_verify_adapter(dev))) { vmm_cprintf(cdev, " %2d %-16s %-16s", adap->nr, dev->name, "adapter"); } else { vmm_cprintf(cdev, " %-16s %-16s", dev->name, "client"); } if (dev->parent) { vmm_cprintf(cdev, " %-16s\n", dev->parent->name); } else { vmm_cprintf(cdev, " ----------------\n"); } return 0; }