Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 336966
b: refs/heads/master
c: aeba4a0
h: refs/heads/master
v: v3
  • Loading branch information
Tomas Winkler authored and Greg Kroah-Hartman committed Nov 15, 2012
1 parent 2921fa9 commit 98b2808
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ff8b2f4e424a489222d3c7d55fb2d04c9639ef98
refs/heads/master: aeba4a06f28fad11b1e61d150bd3cde3008b80c8
22 changes: 16 additions & 6 deletions trunk/drivers/misc/mei/hw.h
Original file line number Diff line number Diff line change
Expand Up @@ -293,26 +293,36 @@ struct hbm_props_response {
struct mei_client_properties client_properties;
} __packed;

/**
* struct hbm_client_connect_request - connect/disconnect request
*
* @hbm_cmd - bus message command header
* @me_addr - address of the client in ME
* @host_addr - address of the client in the driver
* @reserved
*/
struct hbm_client_connect_request {
u8 hbm_cmd;
u8 me_addr;
u8 host_addr;
u8 reserved;
} __packed;

/**
* struct hbm_client_connect_response - connect/disconnect response
*
* @hbm_cmd - bus message command header
* @me_addr - address of the client in ME
* @host_addr - address of the client in the driver
* @status - status of the request
*/
struct hbm_client_connect_response {
u8 hbm_cmd;
u8 me_addr;
u8 host_addr;
u8 status;
} __packed;

struct hbm_client_disconnect_request {
u8 hbm_cmd;
u8 me_addr;
u8 host_addr;
u8 reserved[1];
} __packed;

#define MEI_FC_MESSAGE_RESERVED_LENGTH 5

Expand Down
22 changes: 10 additions & 12 deletions trunk/drivers/misc/mei/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -352,26 +352,24 @@ int mei_other_client_is_connecting(struct mei_device *dev,
int mei_disconnect(struct mei_device *dev, struct mei_cl *cl)
{
struct mei_msg_hdr *mei_hdr;
struct hbm_client_disconnect_request *mei_cli_disconnect;
struct hbm_client_connect_request *req;

mei_hdr = (struct mei_msg_hdr *) &dev->wr_msg_buf[0];
mei_hdr->host_addr = 0;
mei_hdr->me_addr = 0;
mei_hdr->length = sizeof(struct hbm_client_disconnect_request);
mei_hdr->length = sizeof(struct hbm_client_connect_request);
mei_hdr->msg_complete = 1;
mei_hdr->reserved = 0;

mei_cli_disconnect =
(struct hbm_client_disconnect_request *) &dev->wr_msg_buf[1];
memset(mei_cli_disconnect, 0, sizeof(*mei_cli_disconnect));
mei_cli_disconnect->host_addr = cl->host_client_id;
mei_cli_disconnect->me_addr = cl->me_client_id;
mei_cli_disconnect->hbm_cmd = CLIENT_DISCONNECT_REQ_CMD;
mei_cli_disconnect->reserved[0] = 0;
req = (struct hbm_client_connect_request *)&dev->wr_msg_buf[1];
memset(req, 0, sizeof(*req));
req->host_addr = cl->host_client_id;
req->me_addr = cl->me_client_id;
req->hbm_cmd = CLIENT_DISCONNECT_REQ_CMD;
req->reserved = 0;

return mei_write_message(dev, mei_hdr,
(unsigned char *) mei_cli_disconnect,
sizeof(struct hbm_client_disconnect_request));
return mei_write_message(dev, mei_hdr, (unsigned char *)req,
sizeof(struct hbm_client_connect_request));
}

/**
Expand Down
17 changes: 8 additions & 9 deletions trunk/drivers/misc/mei/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,10 @@ static int _mei_irq_thread_close(struct mei_device *dev, s32 *slots,
struct mei_cl_cb *cmpl_list)
{
if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) +
sizeof(struct hbm_client_disconnect_request)))
sizeof(struct hbm_client_connect_request)))
return -EBADMSG;

*slots -= mei_data2slots(sizeof(struct hbm_client_disconnect_request));
*slots -= mei_data2slots(sizeof(struct hbm_client_connect_request));

if (mei_disconnect(dev, cl)) {
cl->status = 0;
Expand Down Expand Up @@ -414,10 +414,10 @@ static void mei_client_flow_control_response(struct mei_device *dev,
* returns !=0, same; 0,not.
*/
static int same_disconn_addr(struct mei_cl *cl,
struct hbm_client_disconnect_request *disconn)
struct hbm_client_connect_request *req)
{
return (cl->host_client_id == disconn->host_addr &&
cl->me_client_id == disconn->me_addr);
return (cl->host_client_id == req->host_addr &&
cl->me_client_id == req->me_addr);
}

/**
Expand All @@ -427,7 +427,7 @@ static int same_disconn_addr(struct mei_cl *cl,
* @disconnect_req: disconnect request bus message.
*/
static void mei_client_disconnect_request(struct mei_device *dev,
struct hbm_client_disconnect_request *disconnect_req)
struct hbm_client_connect_request *disconnect_req)
{
struct mei_msg_hdr *mei_hdr;
struct hbm_client_connect_response *disconnect_res;
Expand Down Expand Up @@ -484,10 +484,10 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev,
struct hbm_host_version_response *version_res;
struct hbm_client_connect_response *connect_res;
struct hbm_client_connect_response *disconnect_res;
struct hbm_client_connect_request *disconnect_req;
struct hbm_flow_control *flow_control;
struct hbm_props_response *props_res;
struct hbm_host_enum_response *enum_res;
struct hbm_client_disconnect_request *disconnect_req;
struct hbm_host_stop_request *host_stop_req;
int res;

Expand Down Expand Up @@ -653,8 +653,7 @@ static void mei_irq_thread_read_bus_message(struct mei_device *dev,

case CLIENT_DISCONNECT_REQ_CMD:
/* search for client */
disconnect_req =
(struct hbm_client_disconnect_request *) mei_msg;
disconnect_req = (struct hbm_client_connect_request *)mei_msg;
mei_client_disconnect_request(dev, disconnect_req);
break;

Expand Down

0 comments on commit 98b2808

Please sign in to comment.