Lines Matching refs:rc

205 		dev_err(&evt->rc->uwb_dev.dev,  in uwbd_event_handle_urc()
213 struct uwb_rc *rc; in uwbd_event_handle_message() local
216 rc = evt->rc; in uwbd_event_handle_message()
219 dev_err(&rc->uwb_dev.dev, "UWBD: invalid message type %d\n", evt->message); in uwbd_event_handle_message()
225 dev_err(&rc->uwb_dev.dev, "UWBD: '%s' message failed: %d\n", in uwbd_event_handle_message()
231 struct uwb_rc *rc; in uwbd_event_handle() local
234 rc = evt->rc; in uwbd_event_handle()
236 if (rc->ready) { in uwbd_event_handle()
247 dev_err(&rc->uwb_dev.dev, "UWBD: invalid event type %d\n", evt->type); in uwbd_event_handle()
252 __uwb_rc_put(rc); /* for the __uwb_rc_get() in uwb_rc_notif_cb() */ in uwbd_event_handle()
269 struct uwb_rc *rc = param; in uwbd() local
276 rc->uwbd.wq, in uwbd()
277 !list_empty(&rc->uwbd.event_list) in uwbd()
283 spin_lock_irqsave(&rc->uwbd.event_list_lock, flags); in uwbd()
284 if (!list_empty(&rc->uwbd.event_list)) { in uwbd()
285 evt = list_first_entry(&rc->uwbd.event_list, struct uwb_event, list_node); in uwbd()
289 spin_unlock_irqrestore(&rc->uwbd.event_list_lock, flags); in uwbd()
296 uwb_beca_purge(rc); /* Purge devices that left */ in uwbd()
303 void uwbd_start(struct uwb_rc *rc) in uwbd_start() argument
305 struct task_struct *task = kthread_run(uwbd, rc, "uwbd"); in uwbd_start()
307 rc->uwbd.task = NULL; in uwbd_start()
311 rc->uwbd.task = task; in uwbd_start()
312 rc->uwbd.pid = rc->uwbd.task->pid; in uwbd_start()
317 void uwbd_stop(struct uwb_rc *rc) in uwbd_stop() argument
319 if (rc->uwbd.task) in uwbd_stop()
320 kthread_stop(rc->uwbd.task); in uwbd_stop()
321 uwbd_flush(rc); in uwbd_stop()
338 struct uwb_rc *rc = evt->rc; in uwbd_event_queue() local
341 spin_lock_irqsave(&rc->uwbd.event_list_lock, flags); in uwbd_event_queue()
342 if (rc->uwbd.pid != 0) { in uwbd_event_queue()
343 list_add(&evt->list_node, &rc->uwbd.event_list); in uwbd_event_queue()
344 wake_up_all(&rc->uwbd.wq); in uwbd_event_queue()
346 __uwb_rc_put(evt->rc); in uwbd_event_queue()
351 spin_unlock_irqrestore(&rc->uwbd.event_list_lock, flags); in uwbd_event_queue()
355 void uwbd_flush(struct uwb_rc *rc) in uwbd_flush() argument
359 spin_lock_irq(&rc->uwbd.event_list_lock); in uwbd_flush()
360 list_for_each_entry_safe(evt, nxt, &rc->uwbd.event_list, list_node) { in uwbd_flush()
361 if (evt->rc == rc) { in uwbd_flush()
362 __uwb_rc_put(rc); in uwbd_flush()
369 spin_unlock_irq(&rc->uwbd.event_list_lock); in uwbd_flush()