Lines Matching refs:sbdev

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