static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) { struct ulpi *ulpi = to_ulpi_dev(dev); return sprintf(buf, "ulpi:v%04xp%04x\n", ulpi->id.vendor, ulpi->id.product); }
static int ulpi_remove(struct device *dev) { struct ulpi_driver *drv = to_ulpi_driver(dev->driver); if (drv->remove) drv->remove(to_ulpi_dev(dev)); return 0; }
static int ulpi_uevent(struct device *dev, struct kobj_uevent_env *env) { struct ulpi *ulpi = to_ulpi_dev(dev); if (add_uevent_var(env, "MODALIAS=ulpi:v%04xp%04x", ulpi->id.vendor, ulpi->id.product)) return -ENOMEM; return 0; }
static int ulpi_probe(struct device *dev) { struct ulpi_driver *drv = to_ulpi_driver(dev->driver); int ret; ret = of_clk_set_defaults(dev->of_node, false); if (ret < 0) return ret; return drv->probe(to_ulpi_dev(dev)); }
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf) { int len; struct ulpi *ulpi = to_ulpi_dev(dev); len = of_device_modalias(dev, buf, PAGE_SIZE); if (len != -ENODEV) return len; return sprintf(buf, "ulpi:v%04xp%04x\n", ulpi->id.vendor, ulpi->id.product); }
static int ulpi_match(struct device *dev, struct device_driver *driver) { struct ulpi_driver *drv = to_ulpi_driver(driver); struct ulpi *ulpi = to_ulpi_dev(dev); const struct ulpi_device_id *id; for (id = drv->id_table; id->vendor; id++) if (id->vendor == ulpi->id.vendor && id->product == ulpi->id.product) return 1; return 0; }
static int ulpi_uevent(struct device *dev, struct kobj_uevent_env *env) { struct ulpi *ulpi = to_ulpi_dev(dev); int ret; ret = of_device_uevent_modalias(dev, env); if (ret != -ENODEV) return ret; if (add_uevent_var(env, "MODALIAS=ulpi:v%04xp%04x", ulpi->id.vendor, ulpi->id.product)) return -ENOMEM; return 0; }
static int ulpi_match(struct device *dev, struct device_driver *driver) { struct ulpi_driver *drv = to_ulpi_driver(driver); struct ulpi *ulpi = to_ulpi_dev(dev); const struct ulpi_device_id *id; /* Some ULPI devices don't have a vendor id so rely on OF match */ if (ulpi->id.vendor == 0) return of_driver_match_device(dev, driver); for (id = drv->id_table; id->vendor; id++) if (id->vendor == ulpi->id.vendor && id->product == ulpi->id.product) return 1; return 0; }
static void ulpi_dev_release(struct device *dev) { kfree(to_ulpi_dev(dev)); }
static int ulpi_probe(struct device *dev) { struct ulpi_driver *drv = to_ulpi_driver(dev->driver); return drv->probe(to_ulpi_dev(dev)); }