Lines Matching refs:nsim_bus_dev
21 static struct nsim_bus_dev *to_nsim_bus_dev(struct device *dev) in to_nsim_bus_dev()
23 return container_of(dev, struct nsim_bus_dev, dev); in to_nsim_bus_dev()
26 static int nsim_bus_dev_vfs_enable(struct nsim_bus_dev *nsim_bus_dev, in nsim_bus_dev_vfs_enable() argument
29 nsim_bus_dev->vfconfigs = kcalloc(num_vfs, in nsim_bus_dev_vfs_enable()
32 if (!nsim_bus_dev->vfconfigs) in nsim_bus_dev_vfs_enable()
34 nsim_bus_dev->num_vfs = num_vfs; in nsim_bus_dev_vfs_enable()
39 static void nsim_bus_dev_vfs_disable(struct nsim_bus_dev *nsim_bus_dev) in nsim_bus_dev_vfs_disable() argument
41 kfree(nsim_bus_dev->vfconfigs); in nsim_bus_dev_vfs_disable()
42 nsim_bus_dev->vfconfigs = NULL; in nsim_bus_dev_vfs_disable()
43 nsim_bus_dev->num_vfs = 0; in nsim_bus_dev_vfs_disable()
50 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_dev_numvfs_store() local
59 if (nsim_bus_dev->num_vfs == num_vfs) in nsim_bus_dev_numvfs_store()
61 if (nsim_bus_dev->num_vfs && num_vfs) { in nsim_bus_dev_numvfs_store()
67 ret = nsim_bus_dev_vfs_enable(nsim_bus_dev, num_vfs); in nsim_bus_dev_numvfs_store()
71 nsim_bus_dev_vfs_disable(nsim_bus_dev); in nsim_bus_dev_numvfs_store()
85 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_dev_numvfs_show() local
87 return sprintf(buf, "%u\n", nsim_bus_dev->num_vfs); in nsim_bus_dev_numvfs_show()
98 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in new_port_store() local
105 ret = nsim_dev_port_add(nsim_bus_dev, port_index); in new_port_store()
115 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in del_port_store() local
122 ret = nsim_dev_port_del(nsim_bus_dev, port_index); in del_port_store()
146 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_dev_release() local
148 nsim_bus_dev_vfs_disable(nsim_bus_dev); in nsim_bus_dev_release()
156 static struct nsim_bus_dev *
162 struct nsim_bus_dev *nsim_bus_dev; in new_device_store() local
182 nsim_bus_dev = nsim_bus_dev_new(id, port_count); in new_device_store()
183 if (IS_ERR(nsim_bus_dev)) in new_device_store()
184 return PTR_ERR(nsim_bus_dev); in new_device_store()
187 list_add_tail(&nsim_bus_dev->list, &nsim_bus_dev_list); in new_device_store()
194 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev);
199 struct nsim_bus_dev *nsim_bus_dev, *tmp; in del_device_store() local
218 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) { in del_device_store()
219 if (nsim_bus_dev->dev.id != id) in del_device_store()
221 list_del(&nsim_bus_dev->list); in del_device_store()
222 nsim_bus_dev_del(nsim_bus_dev); in del_device_store()
240 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_probe() local
242 return nsim_dev_probe(nsim_bus_dev); in nsim_bus_probe()
247 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_bus_remove() local
249 nsim_dev_remove(nsim_bus_dev); in nsim_bus_remove()
255 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev); in nsim_num_vf() local
257 return nsim_bus_dev->num_vfs; in nsim_num_vf()
269 static struct nsim_bus_dev *
272 struct nsim_bus_dev *nsim_bus_dev; in nsim_bus_dev_new() local
275 nsim_bus_dev = kzalloc(sizeof(*nsim_bus_dev), GFP_KERNEL); in nsim_bus_dev_new()
276 if (!nsim_bus_dev) in nsim_bus_dev_new()
282 nsim_bus_dev->dev.id = err; in nsim_bus_dev_new()
283 nsim_bus_dev->dev.bus = &nsim_bus; in nsim_bus_dev_new()
284 nsim_bus_dev->dev.type = &nsim_bus_dev_type; in nsim_bus_dev_new()
285 nsim_bus_dev->port_count = port_count; in nsim_bus_dev_new()
287 err = device_register(&nsim_bus_dev->dev); in nsim_bus_dev_new()
290 return nsim_bus_dev; in nsim_bus_dev_new()
293 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id); in nsim_bus_dev_new()
295 kfree(nsim_bus_dev); in nsim_bus_dev_new()
299 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev) in nsim_bus_dev_del() argument
301 device_unregister(&nsim_bus_dev->dev); in nsim_bus_dev_del()
302 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id); in nsim_bus_dev_del()
303 kfree(nsim_bus_dev); in nsim_bus_dev_del()
331 struct nsim_bus_dev *nsim_bus_dev, *tmp; in nsim_bus_exit() local
334 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) { in nsim_bus_exit()
335 list_del(&nsim_bus_dev->list); in nsim_bus_exit()
336 nsim_bus_dev_del(nsim_bus_dev); in nsim_bus_exit()