Lines Matching refs:scmi_dev
204 static int scmi_dev_match_by_id_table(struct scmi_device *scmi_dev, in scmi_dev_match_by_id_table() argument
212 if (id_table->protocol_id == scmi_dev->protocol_id && in scmi_dev_match_by_id_table()
213 strncmp(scmi_dev->name, "__scmi_transport_device", 23) && in scmi_dev_match_by_id_table()
214 !strcmp(id_table->name, scmi_dev->name)) in scmi_dev_match_by_id_table()
219 static int scmi_dev_match_id(struct scmi_device *scmi_dev, in scmi_dev_match_id() argument
222 return scmi_dev_match_by_id_table(scmi_dev, scmi_drv->id_table); in scmi_dev_match_id()
228 struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_dev_match() local
230 return scmi_dev_match_id(scmi_dev, scmi_drv); in scmi_dev_match()
235 struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_match_by_id_table() local
238 return scmi_dev_match_by_id_table(scmi_dev, id_table); in scmi_match_by_id_table()
263 struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_dev_probe() local
265 if (!scmi_dev->handle) in scmi_dev_probe()
268 return scmi_drv->probe(scmi_dev); in scmi_dev_probe()
274 struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_dev_remove() local
277 scmi_drv->remove(scmi_dev); in scmi_dev_remove()
282 const struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_device_uevent() local
285 dev_name(&scmi_dev->dev), scmi_dev->protocol_id, in scmi_device_uevent()
286 scmi_dev->name); in scmi_device_uevent()
292 struct scmi_device *scmi_dev = to_scmi_dev(dev); in modalias_show() local
295 dev_name(&scmi_dev->dev), scmi_dev->protocol_id, in modalias_show()
296 scmi_dev->name); in modalias_show()
303 struct scmi_device *scmi_dev = to_scmi_dev(dev); in protocol_id_show() local
305 return sprintf(buf, "0x%02x\n", scmi_dev->protocol_id); in protocol_id_show()
312 struct scmi_device *scmi_dev = to_scmi_dev(dev); in name_show() local
314 return sprintf(buf, "%s\n", scmi_dev->name); in name_show()
396 struct scmi_device *scmi_dev = to_scmi_dev(dev); in scmi_device_release() local
398 kfree_const(scmi_dev->name); in scmi_device_release()
399 kfree(scmi_dev); in scmi_device_release()
402 static void __scmi_device_destroy(struct scmi_device *scmi_dev) in __scmi_device_destroy() argument
405 of_node_full_name(scmi_dev->dev.parent->of_node), in __scmi_device_destroy()
406 dev_name(&scmi_dev->dev), scmi_dev->protocol_id, in __scmi_device_destroy()
407 scmi_dev->name); in __scmi_device_destroy()
409 if (scmi_dev->protocol_id == SCMI_PROTOCOL_SYSTEM) in __scmi_device_destroy()
412 ida_free(&scmi_bus_id, scmi_dev->id); in __scmi_device_destroy()
413 device_unregister(&scmi_dev->dev); in __scmi_device_destroy()
421 struct scmi_device *scmi_dev; in __scmi_device_create() local
430 scmi_dev = scmi_child_dev_find(parent, protocol, name); in __scmi_device_create()
431 if (scmi_dev) in __scmi_device_create()
432 return scmi_dev; in __scmi_device_create()
448 scmi_dev = kzalloc(sizeof(*scmi_dev), GFP_KERNEL); in __scmi_device_create()
449 if (!scmi_dev) in __scmi_device_create()
452 scmi_dev->name = kstrdup_const(name ?: "unknown", GFP_KERNEL); in __scmi_device_create()
453 if (!scmi_dev->name) { in __scmi_device_create()
454 kfree(scmi_dev); in __scmi_device_create()
460 kfree_const(scmi_dev->name); in __scmi_device_create()
461 kfree(scmi_dev); in __scmi_device_create()
465 scmi_dev->id = id; in __scmi_device_create()
466 scmi_dev->protocol_id = protocol; in __scmi_device_create()
467 scmi_dev->dev.parent = parent; in __scmi_device_create()
468 device_set_node(&scmi_dev->dev, of_fwnode_handle(np)); in __scmi_device_create()
469 scmi_dev->dev.bus = &scmi_bus_type; in __scmi_device_create()
470 scmi_dev->dev.release = scmi_device_release; in __scmi_device_create()
471 dev_set_name(&scmi_dev->dev, "scmi_dev.%d", id); in __scmi_device_create()
473 retval = device_register(&scmi_dev->dev); in __scmi_device_create()
479 dev_name(&scmi_dev->dev), protocol, name); in __scmi_device_create()
481 return scmi_dev; in __scmi_device_create()
483 put_device(&scmi_dev->dev); in __scmi_device_create()
531 struct scmi_device *scmi_dev = NULL; in scmi_device_create() local
552 scmi_dev = sdev; in scmi_device_create()
557 return scmi_dev; in scmi_device_create()
563 struct scmi_device *scmi_dev; in scmi_device_destroy() local
565 scmi_dev = scmi_child_dev_find(parent, protocol, name); in scmi_device_destroy()
566 if (scmi_dev) in scmi_device_destroy()
567 __scmi_device_destroy(scmi_dev); in scmi_device_destroy()
573 struct scmi_device *scmi_dev = to_scmi_dev(dev); in __scmi_devices_unregister() local
575 __scmi_device_destroy(scmi_dev); in __scmi_devices_unregister()