diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2014-02-12 14:41:52 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-14 14:12:46 -0500 |
commit | 6bb948c9e500d24321c36c67c81daf8d1a7e561e (patch) | |
tree | bd45c66165b1e42c0eed0cc64b15aa75345d9a34 /drivers/misc/mei/interrupt.c | |
parent | 02a7eecc6ee565f5f3af836d56fe25bafcc49c98 (diff) |
mei: get rid of ext_msg
Use more standard message writing for
oob data.
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/interrupt.c')
-rw-r--r-- | drivers/misc/mei/interrupt.c | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c index 3f0b0b9ce951..75ff4092953e 100644 --- a/drivers/misc/mei/interrupt.c +++ b/drivers/misc/mei/interrupt.c | |||
@@ -161,6 +161,41 @@ static int mei_cl_irq_read_msg(struct mei_device *dev, | |||
161 | } | 161 | } |
162 | 162 | ||
163 | /** | 163 | /** |
164 | * mei_cl_irq_disconnect_rsp - send disconnection response message | ||
165 | * | ||
166 | * @cl: client | ||
167 | * @cb: callback block. | ||
168 | * @slots: free slots. | ||
169 | * @cmpl_list: complete list. | ||
170 | * | ||
171 | * returns 0, OK; otherwise, error. | ||
172 | */ | ||
173 | static int mei_cl_irq_disconnect_rsp(struct mei_cl *cl, struct mei_cl_cb *cb, | ||
174 | s32 *slots, struct mei_cl_cb *cmpl_list) | ||
175 | { | ||
176 | struct mei_device *dev = cl->dev; | ||
177 | int ret; | ||
178 | |||
179 | u32 msg_slots = | ||
180 | mei_data2slots(sizeof(struct hbm_client_connect_response)); | ||
181 | |||
182 | if (*slots < msg_slots) | ||
183 | return -EMSGSIZE; | ||
184 | |||
185 | *slots -= msg_slots; | ||
186 | |||
187 | ret = mei_hbm_cl_disconnect_rsp(dev, cl); | ||
188 | |||
189 | cl->state = MEI_FILE_DISCONNECTED; | ||
190 | cl->status = 0; | ||
191 | mei_io_cb_free(cb); | ||
192 | |||
193 | return ret; | ||
194 | } | ||
195 | |||
196 | |||
197 | |||
198 | /** | ||
164 | * mei_cl_irq_close - processes close related operation from | 199 | * mei_cl_irq_close - processes close related operation from |
165 | * interrupt thread context - send disconnect request | 200 | * interrupt thread context - send disconnect request |
166 | * | 201 | * |
@@ -452,12 +487,6 @@ int mei_irq_write_handler(struct mei_device *dev, struct mei_cl_cb *cmpl_list) | |||
452 | wake_up_interruptible(&dev->wait_stop_wd); | 487 | wake_up_interruptible(&dev->wait_stop_wd); |
453 | } | 488 | } |
454 | 489 | ||
455 | if (dev->wr_ext_msg.hdr.length) { | ||
456 | mei_write_message(dev, &dev->wr_ext_msg.hdr, | ||
457 | dev->wr_ext_msg.data); | ||
458 | slots -= mei_data2slots(dev->wr_ext_msg.hdr.length); | ||
459 | dev->wr_ext_msg.hdr.length = 0; | ||
460 | } | ||
461 | if (dev->dev_state == MEI_DEV_ENABLED) { | 490 | if (dev->dev_state == MEI_DEV_ENABLED) { |
462 | if (dev->wd_pending && | 491 | if (dev->wd_pending && |
463 | mei_cl_flow_ctrl_creds(&dev->wd_cl) > 0) { | 492 | mei_cl_flow_ctrl_creds(&dev->wd_cl) > 0) { |
@@ -505,7 +534,11 @@ int mei_irq_write_handler(struct mei_device *dev, struct mei_cl_cb *cmpl_list) | |||
505 | return ret; | 534 | return ret; |
506 | 535 | ||
507 | break; | 536 | break; |
508 | 537 | case MEI_FOP_DISCONNECT_RSP: | |
538 | /* send disconnect resp */ | ||
539 | ret = mei_cl_irq_disconnect_rsp(cl, cb, &slots, cmpl_list); | ||
540 | if (ret) | ||
541 | return ret; | ||
509 | default: | 542 | default: |
510 | BUG(); | 543 | BUG(); |
511 | } | 544 | } |