Lines Matching refs:sbdev

19 					       const struct slim_device *sbdev)  in slim_match()  argument
22 if (id->manf_id == sbdev->e_addr.manf_id && in slim_match()
23 id->prod_code == sbdev->e_addr.prod_code) in slim_match()
32 struct slim_device *sbdev = to_slim_device(dev); in slim_device_match() local
35 return !!slim_match(sbdrv->id_table, sbdev); in slim_device_match()
40 struct slim_device *sbdev = to_slim_device(dev); in slim_device_probe() local
43 return sbdrv->probe(sbdev); in slim_device_probe()
48 struct slim_device *sbdev = to_slim_device(dev); in slim_device_remove() local
54 sbdrv->remove(sbdev); in slim_device_remove()
103 struct slim_device *sbdev = to_slim_device(dev); in slim_dev_release() local
105 kfree(sbdev); in slim_dev_release()
109 struct slim_device *sbdev, in slim_add_device() argument
112 sbdev->dev.bus = &slimbus_bus; in slim_add_device()
113 sbdev->dev.parent = ctrl->dev; in slim_add_device()
114 sbdev->dev.release = slim_dev_release; in slim_add_device()
115 sbdev->dev.driver = NULL; in slim_add_device()
116 sbdev->ctrl = ctrl; in slim_add_device()
117 INIT_LIST_HEAD(&sbdev->stream_list); in slim_add_device()
118 spin_lock_init(&sbdev->stream_list_lock); in slim_add_device()
121 sbdev->dev.of_node = of_node_get(node); in slim_add_device()
123 dev_set_name(&sbdev->dev, "%x:%x:%x:%x", in slim_add_device()
124 sbdev->e_addr.manf_id, in slim_add_device()
125 sbdev->e_addr.prod_code, in slim_add_device()
126 sbdev->e_addr.dev_index, in slim_add_device()
127 sbdev->e_addr.instance); in slim_add_device()
129 return device_register(&sbdev->dev); in slim_add_device()
136 struct slim_device *sbdev; in slim_alloc_device() local
139 sbdev = kzalloc(sizeof(*sbdev), GFP_KERNEL); in slim_alloc_device()
140 if (!sbdev) in slim_alloc_device()
143 sbdev->e_addr = *eaddr; in slim_alloc_device()
144 ret = slim_add_device(ctrl, sbdev, node); in slim_alloc_device()
146 put_device(&sbdev->dev); in slim_alloc_device()
150 return sbdev; in slim_alloc_device()
162 struct slim_device *sbdev; in of_register_slim_devices() local
191 sbdev = slim_alloc_device(ctrl, &e_addr, node); in of_register_slim_devices()
192 if (!sbdev) in of_register_slim_devices()
237 static void slim_remove_device(struct slim_device *sbdev) in slim_remove_device() argument
239 device_unregister(&sbdev->dev); in slim_remove_device()
265 static void slim_device_update_status(struct slim_device *sbdev, in slim_device_update_status() argument
270 if (sbdev->status == status) in slim_device_update_status()
273 sbdev->status = status; in slim_device_update_status()
274 if (!sbdev->dev.driver) in slim_device_update_status()
277 sbdrv = to_slim_driver(sbdev->dev.driver); in slim_device_update_status()
279 sbdrv->device_status(sbdev, sbdev->status); in slim_device_update_status()
288 void slim_report_absent(struct slim_device *sbdev) in slim_report_absent() argument
290 struct slim_controller *ctrl = sbdev->ctrl; in slim_report_absent()
297 sbdev->is_laddr_valid = false; in slim_report_absent()
300 ida_simple_remove(&ctrl->laddr_ida, sbdev->laddr); in slim_report_absent()
301 slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_DOWN); in slim_report_absent()
316 struct slim_device *sbdev = to_slim_device(dev); in slim_match_dev() local
318 return slim_eaddr_equal(&sbdev->e_addr, e_addr); in slim_match_dev()
324 struct slim_device *sbdev; in find_slim_device() local
329 sbdev = to_slim_device(dev); in find_slim_device()
330 return sbdev; in find_slim_device()
348 struct slim_device *sbdev; in slim_get_device() local
350 sbdev = find_slim_device(ctrl, e_addr); in slim_get_device()
351 if (!sbdev) { in slim_get_device()
352 sbdev = slim_alloc_device(ctrl, e_addr, NULL); in slim_get_device()
353 if (!sbdev) in slim_get_device()
357 return sbdev; in slim_get_device()
364 struct slim_device *sbdev = to_slim_device(dev); in of_slim_match_dev() local
366 return (sbdev->dev.of_node == np); in of_slim_match_dev()
372 struct slim_device *sbdev; in of_find_slim_device() local
377 sbdev = to_slim_device(dev); in of_find_slim_device()
378 return sbdev; in of_find_slim_device()
400 static int slim_device_alloc_laddr(struct slim_device *sbdev, in slim_device_alloc_laddr() argument
403 struct slim_controller *ctrl = sbdev->ctrl; in slim_device_alloc_laddr()
409 ret = ctrl->get_laddr(ctrl, &sbdev->e_addr, &laddr); in slim_device_alloc_laddr()
425 ret = ctrl->set_laddr(ctrl, &sbdev->e_addr, laddr); in slim_device_alloc_laddr()
432 sbdev->laddr = laddr; in slim_device_alloc_laddr()
433 sbdev->is_laddr_valid = true; in slim_device_alloc_laddr()
435 slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_UP); in slim_device_alloc_laddr()
438 laddr, sbdev->e_addr.manf_id, sbdev->e_addr.prod_code, in slim_device_alloc_laddr()
439 sbdev->e_addr.dev_index, sbdev->e_addr.instance); in slim_device_alloc_laddr()
462 struct slim_device *sbdev; in slim_device_report_present() local
473 sbdev = slim_get_device(ctrl, e_addr); in slim_device_report_present()
474 if (IS_ERR(sbdev)) in slim_device_report_present()
477 if (sbdev->is_laddr_valid) { in slim_device_report_present()
478 *laddr = sbdev->laddr; in slim_device_report_present()
482 ret = slim_device_alloc_laddr(sbdev, true); in slim_device_report_present()
499 int slim_get_logical_addr(struct slim_device *sbdev) in slim_get_logical_addr() argument
501 if (!sbdev->is_laddr_valid) in slim_get_logical_addr()
502 return slim_device_alloc_laddr(sbdev, false); in slim_get_logical_addr()