Lines Matching +full:drv +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-only
16 return sprintf(buf, "0x%04x\n", dev->id.device); in device_show()
24 return sprintf(buf, "0x%04x\n", dev->id.vendor); in vendor_show()
32 return sprintf(buf, "0x%08x\n", dev->config->get_status(dev)); in status_show()
41 dev->id.device, dev->id.vendor); in modalias_show()
54 for (i = 0; i < sizeof(dev->features)*8; i++) in features_show()
73 const struct virtio_device_id *id) in virtio_id_match() argument
75 if (id->device != dev->id.device && id->device != VIRTIO_DEV_ANY_ID) in virtio_id_match()
78 return id->vendor == VIRTIO_DEV_ANY_ID || id->vendor == dev->id.vendor; in virtio_id_match()
89 ids = drv_to_virtio(_dr)->id_table; in virtio_dev_match()
101 dev->id.device, dev->id.vendor); in virtio_uevent()
108 struct virtio_driver *drv = drv_to_virtio(vdev->dev.driver); in virtio_check_driver_offered_feature() local
110 for (i = 0; i < drv->feature_table_size; i++) in virtio_check_driver_offered_feature()
111 if (drv->feature_table[i] == fbit) in virtio_check_driver_offered_feature()
114 if (drv->feature_table_legacy) { in virtio_check_driver_offered_feature()
115 for (i = 0; i < drv->feature_table_size_legacy; i++) in virtio_check_driver_offered_feature()
116 if (drv->feature_table_legacy[i] == fbit) in virtio_check_driver_offered_feature()
126 struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); in __virtio_config_changed() local
128 if (!dev->config_enabled) in __virtio_config_changed()
129 dev->config_change_pending = true; in __virtio_config_changed()
130 else if (drv && drv->config_changed) in __virtio_config_changed()
131 drv->config_changed(dev); in __virtio_config_changed()
138 spin_lock_irqsave(&dev->config_lock, flags); in virtio_config_changed()
140 spin_unlock_irqrestore(&dev->config_lock, flags); in virtio_config_changed()
146 spin_lock_irq(&dev->config_lock); in virtio_config_disable()
147 dev->config_enabled = false; in virtio_config_disable()
148 spin_unlock_irq(&dev->config_lock); in virtio_config_disable()
154 spin_lock_irq(&dev->config_lock); in virtio_config_enable()
155 dev->config_enabled = true; in virtio_config_enable()
156 if (dev->config_change_pending) in virtio_config_enable()
158 dev->config_change_pending = false; in virtio_config_enable()
159 spin_unlock_irq(&dev->config_lock); in virtio_config_enable()
166 dev->config->set_status(dev, dev->config->get_status(dev) | status); in virtio_add_status()
181 dev_warn(&dev->dev, in virtio_features_ok()
183 return -ENODEV; in virtio_features_ok()
187 dev_warn(&dev->dev, in virtio_features_ok()
189 return -ENODEV; in virtio_features_ok()
197 status = dev->config->get_status(dev); in virtio_features_ok()
199 dev_err(&dev->dev, "virtio: device refuses features: %x\n", in virtio_features_ok()
201 return -ENODEV; in virtio_features_ok()
210 struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); in virtio_dev_probe() local
219 device_features = dev->config->get_features(dev); in virtio_dev_probe()
223 for (i = 0; i < drv->feature_table_size; i++) { in virtio_dev_probe()
224 unsigned int f = drv->feature_table[i]; in virtio_dev_probe()
230 if (drv->feature_table_legacy) { in virtio_dev_probe()
232 for (i = 0; i < drv->feature_table_size_legacy; i++) { in virtio_dev_probe()
233 unsigned int f = drv->feature_table_legacy[i]; in virtio_dev_probe()
242 dev->features = driver_features & device_features; in virtio_dev_probe()
244 dev->features = driver_features_legacy & device_features; in virtio_dev_probe()
251 err = dev->config->finalize_features(dev); in virtio_dev_probe()
255 if (drv->validate) { in virtio_dev_probe()
256 u64 features = dev->features; in virtio_dev_probe()
258 err = drv->validate(dev); in virtio_dev_probe()
263 if (features != dev->features) { in virtio_dev_probe()
264 err = dev->config->finalize_features(dev); in virtio_dev_probe()
274 err = drv->probe(dev); in virtio_dev_probe()
279 if (!(dev->config->get_status(dev) & VIRTIO_CONFIG_S_DRIVER_OK)) in virtio_dev_probe()
282 if (drv->scan) in virtio_dev_probe()
283 drv->scan(dev); in virtio_dev_probe()
297 struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); in virtio_dev_remove() local
301 drv->remove(dev); in virtio_dev_remove()
304 WARN_ON_ONCE(dev->config->get_status(dev)); in virtio_dev_remove()
323 BUG_ON(driver->feature_table_size && !driver->feature_table); in register_virtio_driver()
324 driver->driver.bus = &virtio_bus; in register_virtio_driver()
325 return driver_register(&driver->driver); in register_virtio_driver()
331 driver_unregister(&driver->driver); in unregister_virtio_driver()
336 * register_virtio_device - register virtio device
339 * On error, the caller must call put_device on &@dev->dev (and not kfree),
342 * Returns: 0 on suceess, -error on failure
348 dev->dev.bus = &virtio_bus; in register_virtio_device()
349 device_initialize(&dev->dev); in register_virtio_device()
356 dev->index = err; in register_virtio_device()
357 dev_set_name(&dev->dev, "virtio%u", dev->index); in register_virtio_device()
359 spin_lock_init(&dev->config_lock); in register_virtio_device()
360 dev->config_enabled = false; in register_virtio_device()
361 dev->config_change_pending = false; in register_virtio_device()
365 dev->config->reset(dev); in register_virtio_device()
370 INIT_LIST_HEAD(&dev->vqs); in register_virtio_device()
371 spin_lock_init(&dev->vqs_list_lock); in register_virtio_device()
377 err = device_add(&dev->dev); in register_virtio_device()
379 ida_simple_remove(&virtio_index_ida, dev->index); in register_virtio_device()
389 return dev->bus == &virtio_bus; in is_virtio_device()
395 int index = dev->index; /* save for after device release */ in unregister_virtio_device()
397 device_unregister(&dev->dev); in unregister_virtio_device()
405 struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); in virtio_device_freeze() local
409 dev->failed = dev->config->get_status(dev) & VIRTIO_CONFIG_S_FAILED; in virtio_device_freeze()
411 if (drv && drv->freeze) in virtio_device_freeze()
412 return drv->freeze(dev); in virtio_device_freeze()
420 struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); in virtio_device_restore() local
425 dev->config->reset(dev); in virtio_device_restore()
432 if (dev->failed) in virtio_device_restore()
435 if (!drv) in virtio_device_restore()
441 ret = dev->config->finalize_features(dev); in virtio_device_restore()
449 if (drv->restore) { in virtio_device_restore()
450 ret = drv->restore(dev); in virtio_device_restore()