Lines Matching refs:uwb_dev
78 void uwb_notify(struct uwb_rc *rc, struct uwb_dev *uwb_dev, enum uwb_notifs event) in uwb_notify() argument
85 handler->cb(handler->data, uwb_dev, event); in uwb_notify()
96 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_sys_release() local
98 uwb_bce_put(uwb_dev->bce); in uwb_dev_sys_release()
99 memset(uwb_dev, 0x69, sizeof(*uwb_dev)); in uwb_dev_sys_release()
100 kfree(uwb_dev); in uwb_dev_sys_release()
108 void uwb_dev_init(struct uwb_dev *uwb_dev) in uwb_dev_init() argument
110 mutex_init(&uwb_dev->mutex); in uwb_dev_init()
111 device_initialize(&uwb_dev->dev); in uwb_dev_init()
112 uwb_dev->dev.release = uwb_dev_sys_release; in uwb_dev_init()
113 uwb_dev_addr_init(&uwb_dev->dev_addr); in uwb_dev_init()
114 uwb_mac_addr_init(&uwb_dev->mac_addr); in uwb_dev_init()
115 bitmap_fill(uwb_dev->streams, UWB_NUM_GLOBAL_STREAMS); in uwb_dev_init()
121 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_EUI_48_show() local
124 uwb_mac_addr_print(addr, sizeof(addr), &uwb_dev->mac_addr); in uwb_dev_EUI_48_show()
132 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_DevAddr_show() local
135 uwb_dev_addr_print(addr, sizeof(addr), &uwb_dev->dev_addr); in uwb_dev_DevAddr_show()
149 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_BPST_show() local
154 bce = uwb_dev->bce; in uwb_dev_BPST_show()
177 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_IEs_show() local
179 return uwb_bce_print_IEs(uwb_dev, uwb_dev->bce, buf, PAGE_SIZE); in uwb_dev_IEs_show()
186 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_LQE_show() local
187 struct uwb_beca_e *bce = uwb_dev->bce; in uwb_dev_LQE_show()
191 result = stats_show(&uwb_dev->bce->lqe_stats, buf); in uwb_dev_LQE_show()
200 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_LQE_store() local
201 struct uwb_beca_e *bce = uwb_dev->bce; in uwb_dev_LQE_store()
205 result = stats_store(&uwb_dev->bce->lqe_stats, buf, size); in uwb_dev_LQE_store()
214 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_RSSI_show() local
215 struct uwb_beca_e *bce = uwb_dev->bce; in uwb_dev_RSSI_show()
219 result = stats_show(&uwb_dev->bce->rssi_stats, buf); in uwb_dev_RSSI_show()
228 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in uwb_dev_RSSI_store() local
229 struct uwb_beca_e *bce = uwb_dev->bce; in uwb_dev_RSSI_store()
233 result = stats_store(&uwb_dev->bce->rssi_stats, buf, size); in uwb_dev_RSSI_store()
249 ATTRIBUTE_GROUPS(uwb_dev);
260 static int __uwb_dev_sys_add(struct uwb_dev *uwb_dev, struct device *parent_dev) in __uwb_dev_sys_add() argument
264 dev = &uwb_dev->dev; in __uwb_dev_sys_add()
266 dev_set_drvdata(dev, uwb_dev); in __uwb_dev_sys_add()
272 static void __uwb_dev_sys_rm(struct uwb_dev *uwb_dev) in __uwb_dev_sys_rm() argument
274 dev_set_drvdata(&uwb_dev->dev, NULL); in __uwb_dev_sys_rm()
275 device_del(&uwb_dev->dev); in __uwb_dev_sys_rm()
292 int uwb_dev_add(struct uwb_dev *uwb_dev, struct device *parent_dev, in uwb_dev_add() argument
298 BUG_ON(uwb_dev == NULL); in uwb_dev_add()
302 mutex_lock(&uwb_dev->mutex); in uwb_dev_add()
303 dev = &uwb_dev->dev; in uwb_dev_add()
304 uwb_dev->rc = parent_rc; in uwb_dev_add()
305 result = __uwb_dev_sys_add(uwb_dev, parent_dev); in uwb_dev_add()
309 mutex_unlock(&uwb_dev->mutex); in uwb_dev_add()
314 void uwb_dev_rm(struct uwb_dev *uwb_dev) in uwb_dev_rm() argument
316 mutex_lock(&uwb_dev->mutex); in uwb_dev_rm()
317 __uwb_dev_sys_rm(uwb_dev); in uwb_dev_rm()
318 mutex_unlock(&uwb_dev->mutex); in uwb_dev_rm()
325 struct uwb_dev *target_uwb_dev = __target_uwb_dev; in __uwb_dev_try_get()
326 struct uwb_dev *uwb_dev = to_uwb_dev(dev); in __uwb_dev_try_get() local
327 if (uwb_dev == target_uwb_dev) { in __uwb_dev_try_get()
328 uwb_dev_get(uwb_dev); in __uwb_dev_try_get()
341 struct uwb_dev *uwb_dev_try_get(struct uwb_rc *rc, struct uwb_dev *uwb_dev) in uwb_dev_try_get() argument
343 if (uwb_dev_for_each(rc, __uwb_dev_try_get, uwb_dev)) in uwb_dev_try_get()
344 return uwb_dev; in uwb_dev_try_get()
354 int __uwb_dev_offair(struct uwb_dev *uwb_dev, struct uwb_rc *rc) in __uwb_dev_offair() argument
356 struct device *dev = &uwb_dev->dev; in __uwb_dev_offair()
359 uwb_mac_addr_print(macbuf, sizeof(macbuf), &uwb_dev->mac_addr); in __uwb_dev_offair()
360 uwb_dev_addr_print(devbuf, sizeof(devbuf), &uwb_dev->dev_addr); in __uwb_dev_offair()
363 uwb_dev->dev.bus->name, in __uwb_dev_offair()
364 rc ? dev_name(&(rc->uwb_dev.dev)) : ""); in __uwb_dev_offair()
365 uwb_dev_rm(uwb_dev); in __uwb_dev_offair()
366 list_del(&uwb_dev->bce->node); in __uwb_dev_offair()
367 uwb_bce_put(uwb_dev->bce); in __uwb_dev_offair()
368 uwb_dev_put(uwb_dev); /* for the creation in _onair() */ in __uwb_dev_offair()
388 struct uwb_dev *uwb_dev; in uwbd_dev_offair() local
390 uwb_dev = bce->uwb_dev; in uwbd_dev_offair()
391 if (uwb_dev) { in uwbd_dev_offair()
392 uwb_notify(uwb_dev->rc, uwb_dev, UWB_NOTIF_OFFAIR); in uwbd_dev_offair()
393 __uwb_dev_offair(uwb_dev, uwb_dev->rc); in uwbd_dev_offair()
413 struct device *dev = &rc->uwb_dev.dev; in uwbd_dev_onair()
414 struct uwb_dev *uwb_dev; in uwbd_dev_onair() local
419 uwb_dev = kzalloc(sizeof(struct uwb_dev), GFP_KERNEL); in uwbd_dev_onair()
420 if (uwb_dev == NULL) { in uwbd_dev_onair()
425 uwb_dev_init(uwb_dev); /* This sets refcnt to one, we own it */ in uwbd_dev_onair()
426 uwb_dev->dev.bus = &uwb_bus_type; in uwbd_dev_onair()
427 uwb_dev->mac_addr = *bce->mac_addr; in uwbd_dev_onair()
428 uwb_dev->dev_addr = bce->dev_addr; in uwbd_dev_onair()
429 dev_set_name(&uwb_dev->dev, "%s", macbuf); in uwbd_dev_onair()
432 bce->uwb_dev = uwb_dev; in uwbd_dev_onair()
433 uwb_dev->bce = bce; in uwbd_dev_onair()
436 result = uwb_dev_add(uwb_dev, &rc->uwb_dev.dev, rc); in uwbd_dev_onair()
444 macbuf, devbuf, uwb_dev->dev.bus->name, in uwbd_dev_onair()
445 dev_name(&(rc->uwb_dev.dev))); in uwbd_dev_onair()
446 uwb_notify(rc, uwb_dev, UWB_NOTIF_ONAIR); in uwbd_dev_onair()
450 bce->uwb_dev = NULL; in uwbd_dev_onair()
452 kfree(uwb_dev); in uwbd_dev_onair()
469 return device_for_each_child(&rc->uwb_dev.dev, priv, function); in uwb_dev_for_each()