Lines Matching refs:nvdimm_bus
31 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(dev); in nvdimm_bus_lock() local
33 if (!nvdimm_bus) in nvdimm_bus_lock()
35 mutex_lock(&nvdimm_bus->reconfig_mutex); in nvdimm_bus_lock()
41 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(dev); in nvdimm_bus_unlock() local
43 if (!nvdimm_bus) in nvdimm_bus_unlock()
45 mutex_unlock(&nvdimm_bus->reconfig_mutex); in nvdimm_bus_unlock()
51 struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(dev); in is_nvdimm_bus_locked() local
53 if (!nvdimm_bus) in is_nvdimm_bus_locked()
55 return mutex_is_locked(&nvdimm_bus->reconfig_mutex); in is_nvdimm_bus_locked()
77 struct nvdimm_bus *nvdimm_bus; in nvdimm_bus_release() local
79 nvdimm_bus = container_of(dev, struct nvdimm_bus, dev); in nvdimm_bus_release()
80 ida_simple_remove(&nd_ida, nvdimm_bus->id); in nvdimm_bus_release()
81 kfree(nvdimm_bus); in nvdimm_bus_release()
84 struct nvdimm_bus *to_nvdimm_bus(struct device *dev) in to_nvdimm_bus()
86 struct nvdimm_bus *nvdimm_bus; in to_nvdimm_bus() local
88 nvdimm_bus = container_of(dev, struct nvdimm_bus, dev); in to_nvdimm_bus()
89 WARN_ON(nvdimm_bus->dev.release != nvdimm_bus_release); in to_nvdimm_bus()
90 return nvdimm_bus; in to_nvdimm_bus()
94 struct nvdimm_bus_descriptor *to_nd_desc(struct nvdimm_bus *nvdimm_bus) in to_nd_desc() argument
97 return nvdimm_bus->nd_desc; in to_nd_desc()
101 struct nvdimm_bus *walk_to_nvdimm_bus(struct device *nd_dev) in walk_to_nvdimm_bus()
250 struct nvdimm_bus *nvdimm_bus = to_nvdimm_bus(dev); in commands_show() local
251 struct nvdimm_bus_descriptor *nd_desc = nvdimm_bus->nd_desc; in commands_show()
260 static const char *nvdimm_bus_provider(struct nvdimm_bus *nvdimm_bus) in nvdimm_bus_provider() argument
262 struct nvdimm_bus_descriptor *nd_desc = nvdimm_bus->nd_desc; in nvdimm_bus_provider()
263 struct device *parent = nvdimm_bus->dev.parent; in nvdimm_bus_provider()
276 struct nvdimm_bus *nvdimm_bus = to_nvdimm_bus(dev); in provider_show() local
278 return sprintf(buf, "%s\n", nvdimm_bus_provider(nvdimm_bus)); in provider_show()
318 struct nvdimm_bus *__nvdimm_bus_register(struct device *parent, in __nvdimm_bus_register()
321 struct nvdimm_bus *nvdimm_bus; in __nvdimm_bus_register() local
324 nvdimm_bus = kzalloc(sizeof(*nvdimm_bus), GFP_KERNEL); in __nvdimm_bus_register()
325 if (!nvdimm_bus) in __nvdimm_bus_register()
327 INIT_LIST_HEAD(&nvdimm_bus->list); in __nvdimm_bus_register()
328 init_waitqueue_head(&nvdimm_bus->probe_wait); in __nvdimm_bus_register()
329 nvdimm_bus->id = ida_simple_get(&nd_ida, 0, 0, GFP_KERNEL); in __nvdimm_bus_register()
330 mutex_init(&nvdimm_bus->reconfig_mutex); in __nvdimm_bus_register()
331 if (nvdimm_bus->id < 0) { in __nvdimm_bus_register()
332 kfree(nvdimm_bus); in __nvdimm_bus_register()
335 nvdimm_bus->nd_desc = nd_desc; in __nvdimm_bus_register()
336 nvdimm_bus->module = module; in __nvdimm_bus_register()
337 nvdimm_bus->dev.parent = parent; in __nvdimm_bus_register()
338 nvdimm_bus->dev.release = nvdimm_bus_release; in __nvdimm_bus_register()
339 nvdimm_bus->dev.groups = nd_desc->attr_groups; in __nvdimm_bus_register()
340 dev_set_name(&nvdimm_bus->dev, "ndbus%d", nvdimm_bus->id); in __nvdimm_bus_register()
341 rc = device_register(&nvdimm_bus->dev); in __nvdimm_bus_register()
343 dev_dbg(&nvdimm_bus->dev, "registration failed: %d\n", rc); in __nvdimm_bus_register()
347 rc = nvdimm_bus_create_ndctl(nvdimm_bus); in __nvdimm_bus_register()
352 list_add_tail(&nvdimm_bus->list, &nvdimm_bus_list); in __nvdimm_bus_register()
355 return nvdimm_bus; in __nvdimm_bus_register()
357 put_device(&nvdimm_bus->dev); in __nvdimm_bus_register()
377 void nvdimm_bus_unregister(struct nvdimm_bus *nvdimm_bus) in nvdimm_bus_unregister() argument
379 if (!nvdimm_bus) in nvdimm_bus_unregister()
383 list_del_init(&nvdimm_bus->list); in nvdimm_bus_unregister()
387 device_for_each_child(&nvdimm_bus->dev, NULL, child_unregister); in nvdimm_bus_unregister()
388 nvdimm_bus_destroy_ndctl(nvdimm_bus); in nvdimm_bus_unregister()
390 device_unregister(&nvdimm_bus->dev); in nvdimm_bus_unregister()