|
@@ -187,10 +187,14 @@ int mei_io_cb_alloc_resp_buf(struct mei_cl_cb *cb, size_t length)
|
|
|
*/
|
|
|
int mei_cl_flush_queues(struct mei_cl *cl)
|
|
|
{
|
|
|
+ struct mei_device *dev;
|
|
|
+
|
|
|
if (WARN_ON(!cl || !cl->dev))
|
|
|
return -EINVAL;
|
|
|
|
|
|
- dev_dbg(&cl->dev->pdev->dev, "remove list entry belonging to cl\n");
|
|
|
+ dev = cl->dev;
|
|
|
+
|
|
|
+ cl_dbg(dev, cl, "remove list entry belonging to cl\n");
|
|
|
mei_io_list_flush(&cl->dev->read_list, cl);
|
|
|
mei_io_list_flush(&cl->dev->write_list, cl);
|
|
|
mei_io_list_flush(&cl->dev->write_waiting_list, cl);
|
|
@@ -302,7 +306,7 @@ int mei_cl_link(struct mei_cl *cl, int id)
|
|
|
|
|
|
cl->state = MEI_FILE_INITIALIZING;
|
|
|
|
|
|
- dev_dbg(&dev->pdev->dev, "link cl host id = %d\n", cl->host_client_id);
|
|
|
+ cl_dbg(dev, cl, "link cl\n");
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -328,7 +332,7 @@ int mei_cl_unlink(struct mei_cl *cl)
|
|
|
|
|
|
list_for_each_entry_safe(pos, next, &dev->file_list, link) {
|
|
|
if (cl->host_client_id == pos->host_client_id) {
|
|
|
- dev_dbg(&dev->pdev->dev, "remove host client = %d, ME client = %d\n",
|
|
|
+ cl_dbg(dev, cl, "remove host client = %d, ME client = %d\n",
|
|
|
pos->host_client_id, pos->me_client_id);
|
|
|
list_del_init(&pos->link);
|
|
|
break;
|
|
@@ -396,6 +400,8 @@ int mei_cl_disconnect(struct mei_cl *cl)
|
|
|
|
|
|
dev = cl->dev;
|
|
|
|
|
|
+ cl_dbg(dev, cl, "disconnecting");
|
|
|
+
|
|
|
if (cl->state != MEI_FILE_DISCONNECTING)
|
|
|
return 0;
|
|
|
|
|
@@ -408,13 +414,13 @@ int mei_cl_disconnect(struct mei_cl *cl)
|
|
|
dev->hbuf_is_ready = false;
|
|
|
if (mei_hbm_cl_disconnect_req(dev, cl)) {
|
|
|
rets = -ENODEV;
|
|
|
- dev_err(&dev->pdev->dev, "failed to disconnect.\n");
|
|
|
+ cl_err(dev, cl, "failed to disconnect.\n");
|
|
|
goto free;
|
|
|
}
|
|
|
mdelay(10); /* Wait for hardware disconnection ready */
|
|
|
list_add_tail(&cb->list, &dev->ctrl_rd_list.list);
|
|
|
} else {
|
|
|
- dev_dbg(&dev->pdev->dev, "add disconnect cb to control write list\n");
|
|
|
+ cl_dbg(dev, cl, "add disconnect cb to control write list\n");
|
|
|
list_add_tail(&cb->list, &dev->ctrl_wr_list.list);
|
|
|
|
|
|
}
|
|
@@ -427,18 +433,17 @@ int mei_cl_disconnect(struct mei_cl *cl)
|
|
|
mutex_lock(&dev->device_lock);
|
|
|
if (MEI_FILE_DISCONNECTED == cl->state) {
|
|
|
rets = 0;
|
|
|
- dev_dbg(&dev->pdev->dev, "successfully disconnected from FW client.\n");
|
|
|
+ cl_dbg(dev, cl, "successfully disconnected from FW client.\n");
|
|
|
} else {
|
|
|
rets = -ENODEV;
|
|
|
if (MEI_FILE_DISCONNECTED != cl->state)
|
|
|
- dev_dbg(&dev->pdev->dev, "wrong status client disconnect.\n");
|
|
|
+ cl_err(dev, cl, "wrong status client disconnect.\n");
|
|
|
|
|
|
if (err)
|
|
|
- dev_dbg(&dev->pdev->dev,
|
|
|
- "wait failed disconnect err=%08x\n",
|
|
|
+ cl_dbg(dev, cl, "wait failed disconnect err=%08x\n",
|
|
|
err);
|
|
|
|
|
|
- dev_dbg(&dev->pdev->dev, "failed to disconnect from FW client.\n");
|
|
|
+ cl_err(dev, cl, "failed to disconnect from FW client.\n");
|
|
|
}
|
|
|
|
|
|
mei_io_list_flush(&dev->ctrl_rd_list, cl);
|
|
@@ -645,13 +650,12 @@ int mei_cl_read_start(struct mei_cl *cl, size_t length)
|
|
|
return -ENODEV;
|
|
|
|
|
|
if (cl->read_cb) {
|
|
|
- dev_dbg(&dev->pdev->dev, "read is pending.\n");
|
|
|
+ cl_dbg(dev, cl, "read is pending.\n");
|
|
|
return -EBUSY;
|
|
|
}
|
|
|
i = mei_me_cl_by_id(dev, cl->me_client_id);
|
|
|
if (i < 0) {
|
|
|
- dev_err(&dev->pdev->dev, "no such me client %d\n",
|
|
|
- cl->me_client_id);
|
|
|
+ cl_err(dev, cl, "no such me client %d\n", cl->me_client_id);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
@@ -670,6 +674,7 @@ int mei_cl_read_start(struct mei_cl *cl, size_t length)
|
|
|
if (dev->hbuf_is_ready) {
|
|
|
dev->hbuf_is_ready = false;
|
|
|
if (mei_hbm_cl_flow_control_req(dev, cl)) {
|
|
|
+ cl_err(dev, cl, "flow control send failed\n");
|
|
|
rets = -ENODEV;
|
|
|
goto err;
|
|
|
}
|
|
@@ -720,9 +725,8 @@ int mei_cl_irq_write_complete(struct mei_cl *cl, struct mei_cl_cb *cb,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- dev_dbg(&dev->pdev->dev, "buf: size = %d idx = %lu\n",
|
|
|
+ cl_dbg(dev, cl, "buf: size = %d idx = %lu\n",
|
|
|
cb->request_buffer.size, cb->buf_idx);
|
|
|
- dev_dbg(&dev->pdev->dev, MEI_HDR_FMT, MEI_HDR_PRM(&mei_hdr));
|
|
|
|
|
|
*slots -= msg_slots;
|
|
|
if (mei_write_message(dev, &mei_hdr,
|
|
@@ -773,7 +777,7 @@ int mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, bool blocking)
|
|
|
|
|
|
buf = &cb->request_buffer;
|
|
|
|
|
|
- dev_dbg(&dev->pdev->dev, "mei_cl_write %d\n", buf->size);
|
|
|
+ cl_dbg(dev, cl, "mei_cl_write %d\n", buf->size);
|
|
|
|
|
|
|
|
|
cb->fop_type = MEI_FOP_WRITE;
|
|
@@ -806,9 +810,6 @@ int mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, bool blocking)
|
|
|
mei_hdr.me_addr = cl->me_client_id;
|
|
|
mei_hdr.reserved = 0;
|
|
|
|
|
|
- dev_dbg(&dev->pdev->dev, "write " MEI_HDR_FMT "\n",
|
|
|
- MEI_HDR_PRM(&mei_hdr));
|
|
|
-
|
|
|
|
|
|
if (mei_write_message(dev, &mei_hdr, buf->data)) {
|
|
|
rets = -EIO;
|
|
@@ -904,11 +905,11 @@ void mei_cl_all_wakeup(struct mei_device *dev)
|
|
|
struct mei_cl *cl, *next;
|
|
|
list_for_each_entry_safe(cl, next, &dev->file_list, link) {
|
|
|
if (waitqueue_active(&cl->rx_wait)) {
|
|
|
- dev_dbg(&dev->pdev->dev, "Waking up reading client!\n");
|
|
|
+ cl_dbg(dev, cl, "Waking up reading client!\n");
|
|
|
wake_up_interruptible(&cl->rx_wait);
|
|
|
}
|
|
|
if (waitqueue_active(&cl->tx_wait)) {
|
|
|
- dev_dbg(&dev->pdev->dev, "Waking up writing client!\n");
|
|
|
+ cl_dbg(dev, cl, "Waking up writing client!\n");
|
|
|
wake_up_interruptible(&cl->tx_wait);
|
|
|
}
|
|
|
}
|