Lines Matching refs:dev
40 void mei_irq_compl_handler(struct mei_device *dev, struct mei_cl_cb *compl_list) in mei_irq_compl_handler() argument
49 dev_dbg(dev->dev, "completing call back.\n"); in mei_irq_compl_handler()
50 if (cl == &dev->iamthif_cl) in mei_irq_compl_handler()
51 mei_amthif_complete(dev, cb); in mei_irq_compl_handler()
79 void mei_irq_discard_msg(struct mei_device *dev, struct mei_msg_hdr *hdr) in mei_irq_discard_msg() argument
85 mei_read_slots(dev, dev->rd_msg_buf, hdr->length); in mei_irq_discard_msg()
86 dev_dbg(dev->dev, "discarding message " MEI_HDR_FMT "\n", in mei_irq_discard_msg()
103 struct mei_device *dev = cl->dev; in mei_cl_irq_read_msg() local
109 cl_err(dev, cl, "pending read cb not found\n"); in mei_cl_irq_read_msg()
114 cl_dbg(dev, cl, "not connected\n"); in mei_cl_irq_read_msg()
120 cl_err(dev, cl, "response buffer is not allocated.\n"); in mei_cl_irq_read_msg()
127 cl_dbg(dev, cl, "message overflow. size %d len %d idx %ld\n", in mei_cl_irq_read_msg()
142 mei_read_slots(dev, buffer, mei_hdr->length); in mei_cl_irq_read_msg()
148 cl_dbg(dev, cl, "completed read length = %lu\n", cb->buf_idx); in mei_cl_irq_read_msg()
151 pm_runtime_mark_last_busy(dev->dev); in mei_cl_irq_read_msg()
152 pm_request_autosuspend(dev->dev); in mei_cl_irq_read_msg()
157 mei_irq_discard_msg(dev, mei_hdr); in mei_cl_irq_read_msg()
174 struct mei_device *dev = cl->dev; in mei_cl_irq_disconnect_rsp() local
179 slots = mei_hbuf_empty_slots(dev); in mei_cl_irq_disconnect_rsp()
185 ret = mei_hbm_cl_disconnect_rsp(dev, cl); in mei_cl_irq_disconnect_rsp()
204 struct mei_device *dev = cl->dev; in mei_cl_irq_read() local
210 slots = mei_hbuf_empty_slots(dev); in mei_cl_irq_read()
215 ret = mei_hbm_cl_flow_control_req(dev, cl); in mei_cl_irq_read()
238 int mei_irq_read_handler(struct mei_device *dev, in mei_irq_read_handler() argument
245 if (!dev->rd_msg_hdr) { in mei_irq_read_handler()
246 dev->rd_msg_hdr = mei_read_hdr(dev); in mei_irq_read_handler()
248 dev_dbg(dev->dev, "slots =%08x.\n", *slots); in mei_irq_read_handler()
250 mei_hdr = (struct mei_msg_hdr *) &dev->rd_msg_hdr; in mei_irq_read_handler()
251 dev_dbg(dev->dev, MEI_HDR_FMT, MEI_HDR_PRM(mei_hdr)); in mei_irq_read_handler()
253 if (mei_hdr->reserved || !dev->rd_msg_hdr) { in mei_irq_read_handler()
254 dev_err(dev->dev, "corrupted message header 0x%08X\n", in mei_irq_read_handler()
255 dev->rd_msg_hdr); in mei_irq_read_handler()
261 dev_err(dev->dev, "less data available than length=%08x.\n", in mei_irq_read_handler()
270 ret = mei_hbm_dispatch(dev, mei_hdr); in mei_irq_read_handler()
272 dev_dbg(dev->dev, "mei_hbm_dispatch failed ret = %d\n", in mei_irq_read_handler()
280 list_for_each_entry(cl, &dev->file_list, link) { in mei_irq_read_handler()
282 cl_dbg(dev, cl, "got a message\n"); in mei_irq_read_handler()
288 if (&cl->link == &dev->file_list) { in mei_irq_read_handler()
289 dev_err(dev->dev, "no destination client found 0x%08X\n", in mei_irq_read_handler()
290 dev->rd_msg_hdr); in mei_irq_read_handler()
295 if (cl == &dev->iamthif_cl) { in mei_irq_read_handler()
304 *slots = mei_count_full_read_slots(dev); in mei_irq_read_handler()
305 dev->rd_msg_hdr = 0; in mei_irq_read_handler()
309 dev_err(dev->dev, "resetting due to slots overflow.\n"); in mei_irq_read_handler()
329 int mei_irq_write_handler(struct mei_device *dev, struct mei_cl_cb *cmpl_list) in mei_irq_write_handler() argument
339 if (!mei_hbuf_acquire(dev)) in mei_irq_write_handler()
342 slots = mei_hbuf_empty_slots(dev); in mei_irq_write_handler()
347 dev_dbg(dev->dev, "complete all waiting for write cb.\n"); in mei_irq_write_handler()
349 list = &dev->write_waiting_list; in mei_irq_write_handler()
354 cl_dbg(dev, cl, "MEI WRITE COMPLETE\n"); in mei_irq_write_handler()
359 if (dev->wd_state == MEI_WD_STOPPING) { in mei_irq_write_handler()
360 dev->wd_state = MEI_WD_IDLE; in mei_irq_write_handler()
361 wake_up(&dev->wait_stop_wd); in mei_irq_write_handler()
364 if (mei_cl_is_connected(&dev->wd_cl)) { in mei_irq_write_handler()
365 if (dev->wd_pending && in mei_irq_write_handler()
366 mei_cl_flow_ctrl_creds(&dev->wd_cl) > 0) { in mei_irq_write_handler()
367 ret = mei_wd_send(dev); in mei_irq_write_handler()
370 dev->wd_pending = false; in mei_irq_write_handler()
375 dev_dbg(dev->dev, "complete control write list cb.\n"); in mei_irq_write_handler()
376 list_for_each_entry_safe(cb, next, &dev->ctrl_wr_list.list, list) { in mei_irq_write_handler()
419 dev_dbg(dev->dev, "complete write list cb.\n"); in mei_irq_write_handler()
420 list_for_each_entry_safe(cb, next, &dev->write_list.list, list) { in mei_irq_write_handler()
422 if (cl == &dev->iamthif_cl) in mei_irq_write_handler()
441 struct mei_device *dev = cl->dev; in mei_connect_timeout() local
444 if (dev->hbm_f_dot_supported) { in mei_connect_timeout()
450 mei_reset(dev); in mei_connect_timeout()
464 struct mei_device *dev = container_of(work, in mei_timer() local
468 mutex_lock(&dev->device_lock); in mei_timer()
471 if (dev->dev_state == MEI_DEV_INIT_CLIENTS && in mei_timer()
472 dev->hbm_state != MEI_HBM_IDLE) { in mei_timer()
474 if (dev->init_clients_timer) { in mei_timer()
475 if (--dev->init_clients_timer == 0) { in mei_timer()
476 dev_err(dev->dev, "timer: init clients timeout hbm_state = %d.\n", in mei_timer()
477 dev->hbm_state); in mei_timer()
478 mei_reset(dev); in mei_timer()
484 if (dev->dev_state != MEI_DEV_ENABLED) in mei_timer()
488 list_for_each_entry(cl, &dev->file_list, link) { in mei_timer()
491 dev_err(dev->dev, "timer: connect/disconnect timeout.\n"); in mei_timer()
498 if (!mei_cl_is_connected(&dev->iamthif_cl)) in mei_timer()
501 if (dev->iamthif_stall_timer) { in mei_timer()
502 if (--dev->iamthif_stall_timer == 0) { in mei_timer()
503 dev_err(dev->dev, "timer: amthif hanged.\n"); in mei_timer()
504 mei_reset(dev); in mei_timer()
505 dev->iamthif_canceled = false; in mei_timer()
506 dev->iamthif_state = MEI_IAMTHIF_IDLE; in mei_timer()
507 dev->iamthif_timer = 0; in mei_timer()
509 mei_io_cb_free(dev->iamthif_current_cb); in mei_timer()
510 dev->iamthif_current_cb = NULL; in mei_timer()
512 dev->iamthif_file_object = NULL; in mei_timer()
513 mei_amthif_run_next_cmd(dev); in mei_timer()
517 if (dev->iamthif_timer) { in mei_timer()
519 timeout = dev->iamthif_timer + in mei_timer()
522 dev_dbg(dev->dev, "dev->iamthif_timer = %ld\n", in mei_timer()
523 dev->iamthif_timer); in mei_timer()
524 dev_dbg(dev->dev, "timeout = %ld\n", timeout); in mei_timer()
525 dev_dbg(dev->dev, "jiffies = %ld\n", jiffies); in mei_timer()
532 dev_dbg(dev->dev, "freeing AMTHI for other requests\n"); in mei_timer()
534 mei_io_list_flush(&dev->amthif_rd_complete_list, in mei_timer()
535 &dev->iamthif_cl); in mei_timer()
536 mei_io_cb_free(dev->iamthif_current_cb); in mei_timer()
537 dev->iamthif_current_cb = NULL; in mei_timer()
539 dev->iamthif_file_object->private_data = NULL; in mei_timer()
540 dev->iamthif_file_object = NULL; in mei_timer()
541 dev->iamthif_timer = 0; in mei_timer()
542 mei_amthif_run_next_cmd(dev); in mei_timer()
547 if (dev->dev_state != MEI_DEV_DISABLED) in mei_timer()
548 schedule_delayed_work(&dev->timer_work, 2 * HZ); in mei_timer()
549 mutex_unlock(&dev->device_lock); in mei_timer()