Lines Matching refs:sbdev

20 					       const struct slim_device *sbdev)  in slim_match()  argument
23 if (id->manf_id == sbdev->e_addr.manf_id && in slim_match()
24 id->prod_code == sbdev->e_addr.prod_code && in slim_match()
25 id->dev_index == sbdev->e_addr.dev_index && in slim_match()
26 id->instance == sbdev->e_addr.instance) in slim_match()
35 struct slim_device *sbdev = to_slim_device(dev); in slim_device_match() local
42 return !!slim_match(sbdrv->id_table, sbdev); in slim_device_match()
45 static void slim_device_update_status(struct slim_device *sbdev, in slim_device_update_status() argument
50 if (sbdev->status == status) in slim_device_update_status()
53 sbdev->status = status; in slim_device_update_status()
54 if (!sbdev->dev.driver) in slim_device_update_status()
57 sbdrv = to_slim_driver(sbdev->dev.driver); in slim_device_update_status()
59 sbdrv->device_status(sbdev, sbdev->status); in slim_device_update_status()
64 struct slim_device *sbdev = to_slim_device(dev); in slim_device_probe() local
68 ret = sbdrv->probe(sbdev); in slim_device_probe()
73 ret = slim_get_logical_addr(sbdev); in slim_device_probe()
75 slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_UP); in slim_device_probe()
77 dev_err(&sbdev->dev, "Failed to get logical address\n"); in slim_device_probe()
86 struct slim_device *sbdev = to_slim_device(dev); in slim_device_remove() local
92 sbdrv->remove(sbdev); in slim_device_remove()
98 const struct slim_device *sbdev = to_slim_device(dev); in slim_device_uevent() local
100 return add_uevent_var(env, "MODALIAS=slim:%s", dev_name(&sbdev->dev)); in slim_device_uevent()
147 struct slim_device *sbdev = to_slim_device(dev); in slim_dev_release() local
149 kfree(sbdev); in slim_dev_release()
153 struct slim_device *sbdev, in slim_add_device() argument
156 sbdev->dev.bus = &slimbus_bus; in slim_add_device()
157 sbdev->dev.parent = ctrl->dev; in slim_add_device()
158 sbdev->dev.release = slim_dev_release; in slim_add_device()
159 sbdev->dev.driver = NULL; in slim_add_device()
160 sbdev->ctrl = ctrl; in slim_add_device()
161 INIT_LIST_HEAD(&sbdev->stream_list); in slim_add_device()
162 spin_lock_init(&sbdev->stream_list_lock); in slim_add_device()
163 sbdev->dev.of_node = of_node_get(node); in slim_add_device()
164 sbdev->dev.fwnode = of_fwnode_handle(node); in slim_add_device()
166 dev_set_name(&sbdev->dev, "%x:%x:%x:%x", in slim_add_device()
167 sbdev->e_addr.manf_id, in slim_add_device()
168 sbdev->e_addr.prod_code, in slim_add_device()
169 sbdev->e_addr.dev_index, in slim_add_device()
170 sbdev->e_addr.instance); in slim_add_device()
172 return device_register(&sbdev->dev); in slim_add_device()
179 struct slim_device *sbdev; in slim_alloc_device() local
182 sbdev = kzalloc(sizeof(*sbdev), GFP_KERNEL); in slim_alloc_device()
183 if (!sbdev) in slim_alloc_device()
186 sbdev->e_addr = *eaddr; in slim_alloc_device()
187 ret = slim_add_device(ctrl, sbdev, node); in slim_alloc_device()
189 put_device(&sbdev->dev); in slim_alloc_device()
193 return sbdev; in slim_alloc_device()
205 struct slim_device *sbdev; in of_register_slim_devices() local
234 sbdev = slim_alloc_device(ctrl, &e_addr, node); in of_register_slim_devices()
235 if (!sbdev) in of_register_slim_devices()
281 static void slim_remove_device(struct slim_device *sbdev) in slim_remove_device() argument
283 of_node_put(sbdev->dev.of_node); in slim_remove_device()
284 device_unregister(&sbdev->dev); in slim_remove_device()
314 void slim_report_absent(struct slim_device *sbdev) in slim_report_absent() argument
316 struct slim_controller *ctrl = sbdev->ctrl; in slim_report_absent()
323 sbdev->is_laddr_valid = false; in slim_report_absent()
326 ida_free(&ctrl->laddr_ida, sbdev->laddr); in slim_report_absent()
327 slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_DOWN); in slim_report_absent()
342 struct slim_device *sbdev = to_slim_device(dev); in slim_match_dev() local
344 return slim_eaddr_equal(&sbdev->e_addr, e_addr); in slim_match_dev()
350 struct slim_device *sbdev; in find_slim_device() local
355 sbdev = to_slim_device(dev); in find_slim_device()
356 return sbdev; in find_slim_device()
374 struct slim_device *sbdev; in slim_get_device() local
376 sbdev = find_slim_device(ctrl, e_addr); in slim_get_device()
377 if (!sbdev) { in slim_get_device()
378 sbdev = slim_alloc_device(ctrl, e_addr, NULL); in slim_get_device()
379 if (!sbdev) in slim_get_device()
383 return sbdev; in slim_get_device()
390 struct slim_device *sbdev = to_slim_device(dev); in of_slim_match_dev() local
392 return (sbdev->dev.of_node == np); in of_slim_match_dev()
398 struct slim_device *sbdev; in of_find_slim_device() local
403 sbdev = to_slim_device(dev); in of_find_slim_device()
404 return sbdev; in of_find_slim_device()
426 static int slim_device_alloc_laddr(struct slim_device *sbdev, in slim_device_alloc_laddr() argument
429 struct slim_controller *ctrl = sbdev->ctrl; in slim_device_alloc_laddr()
435 ret = ctrl->get_laddr(ctrl, &sbdev->e_addr, &laddr); in slim_device_alloc_laddr()
451 ret = ctrl->set_laddr(ctrl, &sbdev->e_addr, laddr); in slim_device_alloc_laddr()
458 sbdev->laddr = laddr; in slim_device_alloc_laddr()
459 sbdev->is_laddr_valid = true; in slim_device_alloc_laddr()
462 slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_UP); in slim_device_alloc_laddr()
465 laddr, sbdev->e_addr.manf_id, sbdev->e_addr.prod_code, in slim_device_alloc_laddr()
466 sbdev->e_addr.dev_index, sbdev->e_addr.instance); in slim_device_alloc_laddr()
491 struct slim_device *sbdev; in slim_device_report_present() local
502 sbdev = slim_get_device(ctrl, e_addr); in slim_device_report_present()
503 if (IS_ERR(sbdev)) in slim_device_report_present()
506 if (sbdev->is_laddr_valid) { in slim_device_report_present()
507 *laddr = sbdev->laddr; in slim_device_report_present()
511 ret = slim_device_alloc_laddr(sbdev, true); in slim_device_report_present()
528 int slim_get_logical_addr(struct slim_device *sbdev) in slim_get_logical_addr() argument
530 if (!sbdev->is_laddr_valid) in slim_get_logical_addr()
531 return slim_device_alloc_laddr(sbdev, false); in slim_get_logical_addr()