diff options
-rw-r--r-- | drivers/nfc/pn533.c | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/drivers/nfc/pn533.c b/drivers/nfc/pn533.c index 5bc0c7c..cfbfc11 100644 --- a/drivers/nfc/pn533.c +++ b/drivers/nfc/pn533.c @@ -606,28 +606,27 @@ static int pn533_send_ack(struct pn533 *dev, gfp_t flags) return rc; } -static int __pn533_send_cmd_frame_async(struct pn533 *dev, - struct pn533_frame *out_frame, - struct pn533_frame *in_frame, - int in_frame_len, +static int __pn533_send_frame_async(struct pn533 *dev, + struct sk_buff *out, + struct sk_buff *in, + int in_len, pn533_cmd_complete_t cmd_complete, void *arg) { int rc; - dev->cmd = PN533_FRAME_CMD(out_frame); + dev->cmd = PN533_FRAME_CMD(((struct pn533_frame *)out->data)); dev->cmd_complete = cmd_complete; dev->cmd_complete_arg = arg; - dev->out_urb->transfer_buffer = out_frame; - dev->out_urb->transfer_buffer_length = - PN533_FRAME_SIZE(out_frame); + dev->out_urb->transfer_buffer = out->data; + dev->out_urb->transfer_buffer_length = out->len; - dev->in_urb->transfer_buffer = in_frame; - dev->in_urb->transfer_buffer_length = in_frame_len; + dev->in_urb->transfer_buffer = in->data; + dev->in_urb->transfer_buffer_length = in_len; print_hex_dump(KERN_DEBUG, "PN533 TX: ", DUMP_PREFIX_NONE, 16, 1, - out_frame, PN533_FRAME_SIZE(out_frame), false); + out->data, out->len, false); rc = usb_submit_urb(dev->out_urb, GFP_KERNEL); if (rc) @@ -725,11 +724,8 @@ static int __pn533_send_async(struct pn533 *dev, u8 cmd_code, mutex_lock(&dev->cmd_lock); if (!dev->cmd_pending) { - rc = __pn533_send_cmd_frame_async(dev, - (struct pn533_frame *)req->data, - (struct pn533_frame *)resp->data, - resp_len, pn533_send_async_complete, - arg); + rc = __pn533_send_frame_async(dev, req, resp, resp_len, + pn533_send_async_complete, arg); if (rc) goto error; @@ -844,10 +840,8 @@ static int pn533_send_cmd_direct_async(struct pn533 *dev, u8 cmd_code, pn533_build_cmd_frame(cmd_code, req); - rc = __pn533_send_cmd_frame_async(dev, (struct pn533_frame *)req->data, - (struct pn533_frame *)resp->data, - resp_len, pn533_send_async_complete, - arg); + rc = __pn533_send_frame_async(dev, req, resp, resp_len, + pn533_send_async_complete, arg); if (rc < 0) { dev_kfree_skb(resp); kfree(arg); @@ -875,12 +869,10 @@ static void pn533_wq_cmd(struct work_struct *work) mutex_unlock(&dev->cmd_lock); - __pn533_send_cmd_frame_async(dev, - (struct pn533_frame *)cmd->req->data, - (struct pn533_frame *)cmd->resp->data, - PN533_NORMAL_FRAME_MAX_LEN, - pn533_send_async_complete, - cmd->arg); + __pn533_send_frame_async(dev, cmd->req, cmd->resp, + PN533_NORMAL_FRAME_MAX_LEN, + pn533_send_async_complete, + cmd->arg); kfree(cmd); } |