diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2012-11-18 08:13:14 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-11-21 15:43:57 -0500 |
commit | 5bd647144151082f0e8beb58741e27e6dbd23827 (patch) | |
tree | dc63f6e68046d280135cc1823ef65a03dc63dcda /drivers/misc/mei/interrupt.c | |
parent | 2c9e9fdc0b2d55886609f0503fb91f96dfec6948 (diff) |
mei: compact code for mei bus message creation
1. replace boilerplate code for filling up the bus message header
with a common wrapper function
2. shorten variable names and use temporal variables
to save some screen space
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 | 96 |
1 files changed, 38 insertions, 58 deletions
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c index f8821015f3f6..14becc0d5563 100644 --- a/drivers/misc/mei/interrupt.c +++ b/drivers/misc/mei/interrupt.c | |||
@@ -429,39 +429,30 @@ static int same_disconn_addr(struct mei_cl *cl, | |||
429 | static void mei_client_disconnect_request(struct mei_device *dev, | 429 | static void mei_client_disconnect_request(struct mei_device *dev, |
430 | struct hbm_client_connect_request *disconnect_req) | 430 | struct hbm_client_connect_request *disconnect_req) |
431 | { | 431 | { |
432 | struct mei_msg_hdr *mei_hdr; | ||
433 | struct hbm_client_connect_response *disconnect_res; | 432 | struct hbm_client_connect_response *disconnect_res; |
434 | struct mei_cl *cl_pos = NULL; | 433 | struct mei_cl *pos, *next; |
435 | struct mei_cl *cl_next = NULL; | 434 | const size_t len = sizeof(struct hbm_client_connect_response); |
436 | 435 | ||
437 | list_for_each_entry_safe(cl_pos, cl_next, &dev->file_list, link) { | 436 | list_for_each_entry_safe(pos, next, &dev->file_list, link) { |
438 | if (same_disconn_addr(cl_pos, disconnect_req)) { | 437 | if (same_disconn_addr(pos, disconnect_req)) { |
439 | dev_dbg(&dev->pdev->dev, "disconnect request host client %d ME client %d.\n", | 438 | dev_dbg(&dev->pdev->dev, "disconnect request host client %d ME client %d.\n", |
440 | disconnect_req->host_addr, | 439 | disconnect_req->host_addr, |
441 | disconnect_req->me_addr); | 440 | disconnect_req->me_addr); |
442 | cl_pos->state = MEI_FILE_DISCONNECTED; | 441 | pos->state = MEI_FILE_DISCONNECTED; |
443 | cl_pos->timer_count = 0; | 442 | pos->timer_count = 0; |
444 | if (cl_pos == &dev->wd_cl) | 443 | if (pos == &dev->wd_cl) |
445 | dev->wd_pending = false; | 444 | dev->wd_pending = false; |
446 | else if (cl_pos == &dev->iamthif_cl) | 445 | else if (pos == &dev->iamthif_cl) |
447 | dev->iamthif_timer = 0; | 446 | dev->iamthif_timer = 0; |
448 | 447 | ||
449 | /* prepare disconnect response */ | 448 | /* prepare disconnect response */ |
450 | mei_hdr = | 449 | (void)mei_hbm_hdr(&dev->ext_msg_buf[0], len); |
451 | (struct mei_msg_hdr *) &dev->ext_msg_buf[0]; | ||
452 | mei_hdr->host_addr = 0; | ||
453 | mei_hdr->me_addr = 0; | ||
454 | mei_hdr->length = | ||
455 | sizeof(struct hbm_client_connect_response); | ||
456 | mei_hdr->msg_complete = 1; | ||
457 | mei_hdr->reserved = 0; | ||
458 | |||
459 | disconnect_res = | 450 | disconnect_res = |
460 | (struct hbm_client_connect_response *) | 451 | (struct hbm_client_connect_response *) |
461 | &dev->ext_msg_buf[1]; | 452 | &dev->ext_msg_buf[1]; |
462 | disconnect_res->host_addr = cl_pos->host_client_id; | ||
463 | disconnect_res->me_addr = cl_pos->me_client_id; | ||
464 | disconnect_res->hbm_cmd = CLIENT_DISCONNECT_RES_CMD; | 453 | disconnect_res->hbm_cmd = CLIENT_DISCONNECT_RES_CMD; |
454 | disconnect_res->host_addr = pos->host_client_id; | ||
455 | disconnect_res->me_addr = pos->me_client_id; | ||
465 | disconnect_res->status = 0; | 456 | disconnect_res->status = 0; |
466 | dev->extra_write_index = 2; | 457 | dev->extra_write_index = 2; |
467 | break; | 458 | break; |
@@ -469,7 +460,6 @@ static void mei_client_disconnect_request(struct mei_device *dev, | |||
469 | } | 460 | } |
470 | } | 461 | } |
471 | 462 | ||
472 | |||
473 | /** | 463 | /** |
474 | * mei_irq_thread_read_bus_message - bottom half read routine after ISR to | 464 | * mei_irq_thread_read_bus_message - bottom half read routine after ISR to |
475 | * handle the read bus message cmd processing. | 465 | * handle the read bus message cmd processing. |
@@ -488,7 +478,7 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev, | |||
488 | struct hbm_flow_control *flow_control; | 478 | struct hbm_flow_control *flow_control; |
489 | struct hbm_props_response *props_res; | 479 | struct hbm_props_response *props_res; |
490 | struct hbm_host_enum_response *enum_res; | 480 | struct hbm_host_enum_response *enum_res; |
491 | struct hbm_host_stop_request *host_stop_req; | 481 | struct hbm_host_stop_request *stop_req; |
492 | int res; | 482 | int res; |
493 | 483 | ||
494 | 484 | ||
@@ -514,26 +504,20 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev, | |||
514 | return; | 504 | return; |
515 | } | 505 | } |
516 | } else { | 506 | } else { |
507 | u32 *buf = dev->wr_msg_buf; | ||
508 | const size_t len = sizeof(struct hbm_host_stop_request); | ||
509 | |||
517 | dev->version = version_res->me_max_version; | 510 | dev->version = version_res->me_max_version; |
511 | |||
518 | /* send stop message */ | 512 | /* send stop message */ |
519 | mei_hdr = (struct mei_msg_hdr *)&dev->wr_msg_buf[0]; | 513 | mei_hdr = mei_hbm_hdr(&buf[0], len); |
520 | mei_hdr->host_addr = 0; | 514 | stop_req = (struct hbm_host_stop_request *)&buf[1]; |
521 | mei_hdr->me_addr = 0; | 515 | memset(stop_req, 0, len); |
522 | mei_hdr->length = sizeof(struct hbm_host_stop_request); | 516 | stop_req->hbm_cmd = HOST_STOP_REQ_CMD; |
523 | mei_hdr->msg_complete = 1; | 517 | stop_req->reason = DRIVER_STOP_REQUEST; |
524 | mei_hdr->reserved = 0; | 518 | |
525 | |||
526 | host_stop_req = (struct hbm_host_stop_request *) | ||
527 | &dev->wr_msg_buf[1]; | ||
528 | |||
529 | memset(host_stop_req, | ||
530 | 0, | ||
531 | sizeof(struct hbm_host_stop_request)); | ||
532 | host_stop_req->hbm_cmd = HOST_STOP_REQ_CMD; | ||
533 | host_stop_req->reason = DRIVER_STOP_REQUEST; | ||
534 | mei_write_message(dev, mei_hdr, | 519 | mei_write_message(dev, mei_hdr, |
535 | (unsigned char *) (host_stop_req), | 520 | (unsigned char *)stop_req, len); |
536 | mei_hdr->length); | ||
537 | dev_dbg(&dev->pdev->dev, "version mismatch.\n"); | 521 | dev_dbg(&dev->pdev->dev, "version mismatch.\n"); |
538 | return; | 522 | return; |
539 | } | 523 | } |
@@ -543,16 +527,14 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev, | |||
543 | break; | 527 | break; |
544 | 528 | ||
545 | case CLIENT_CONNECT_RES_CMD: | 529 | case CLIENT_CONNECT_RES_CMD: |
546 | connect_res = | 530 | connect_res = (struct hbm_client_connect_response *) mei_msg; |
547 | (struct hbm_client_connect_response *) mei_msg; | ||
548 | mei_client_connect_response(dev, connect_res); | 531 | mei_client_connect_response(dev, connect_res); |
549 | dev_dbg(&dev->pdev->dev, "client connect response message received.\n"); | 532 | dev_dbg(&dev->pdev->dev, "client connect response message received.\n"); |
550 | wake_up(&dev->wait_recvd_msg); | 533 | wake_up(&dev->wait_recvd_msg); |
551 | break; | 534 | break; |
552 | 535 | ||
553 | case CLIENT_DISCONNECT_RES_CMD: | 536 | case CLIENT_DISCONNECT_RES_CMD: |
554 | disconnect_res = | 537 | disconnect_res = (struct hbm_client_connect_response *) mei_msg; |
555 | (struct hbm_client_connect_response *) mei_msg; | ||
556 | mei_client_disconnect_response(dev, disconnect_res); | 538 | mei_client_disconnect_response(dev, disconnect_res); |
557 | dev_dbg(&dev->pdev->dev, "client disconnect response message received.\n"); | 539 | dev_dbg(&dev->pdev->dev, "client disconnect response message received.\n"); |
558 | wake_up(&dev->wait_recvd_msg); | 540 | wake_up(&dev->wait_recvd_msg); |
@@ -658,23 +640,21 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev, | |||
658 | break; | 640 | break; |
659 | 641 | ||
660 | case ME_STOP_REQ_CMD: | 642 | case ME_STOP_REQ_CMD: |
661 | /* prepare stop request */ | 643 | { |
662 | mei_hdr = (struct mei_msg_hdr *) &dev->ext_msg_buf[0]; | 644 | /* prepare stop request: sent in next interrupt event */ |
663 | mei_hdr->host_addr = 0; | 645 | |
664 | mei_hdr->me_addr = 0; | 646 | u32 *buf = dev->ext_msg_buf; |
665 | mei_hdr->length = sizeof(struct hbm_host_stop_request); | 647 | const size_t len = sizeof(struct hbm_host_stop_request); |
666 | mei_hdr->msg_complete = 1; | 648 | |
667 | mei_hdr->reserved = 0; | 649 | mei_hdr = mei_hbm_hdr(&buf[0], len); |
668 | host_stop_req = | 650 | stop_req = (struct hbm_host_stop_request *)&buf[1]; |
669 | (struct hbm_host_stop_request *) &dev->ext_msg_buf[1]; | 651 | memset(stop_req, 0, len); |
670 | memset(host_stop_req, 0, sizeof(struct hbm_host_stop_request)); | 652 | stop_req->hbm_cmd = HOST_STOP_REQ_CMD; |
671 | host_stop_req->hbm_cmd = HOST_STOP_REQ_CMD; | 653 | stop_req->reason = DRIVER_STOP_REQUEST; |
672 | host_stop_req->reason = DRIVER_STOP_REQUEST; | 654 | |
673 | host_stop_req->reserved[0] = 0; | ||
674 | host_stop_req->reserved[1] = 0; | ||
675 | dev->extra_write_index = 2; | 655 | dev->extra_write_index = 2; |
676 | break; | 656 | break; |
677 | 657 | } | |
678 | default: | 658 | default: |
679 | BUG(); | 659 | BUG(); |
680 | break; | 660 | break; |