diff options
| -rw-r--r-- | drivers/staging/rspiusb/rspiusb.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/staging/rspiusb/rspiusb.c b/drivers/staging/rspiusb/rspiusb.c index 1cdfe69585e..2f8155c1968 100644 --- a/drivers/staging/rspiusb/rspiusb.c +++ b/drivers/staging/rspiusb/rspiusb.c | |||
| @@ -444,8 +444,7 @@ static void piusb_write_bulk_callback(struct urb *urb) | |||
| 444 | __func__, status); | 444 | __func__, status); |
| 445 | 445 | ||
| 446 | pdx->pendingWrite = 0; | 446 | pdx->pendingWrite = 0; |
| 447 | usb_buffer_free(urb->dev, urb->transfer_buffer_length, | 447 | kfree(urb->transfer_buffer); |
| 448 | urb->transfer_buffer, urb->transfer_dma); | ||
| 449 | } | 448 | } |
| 450 | 449 | ||
| 451 | int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, | 450 | int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, |
| @@ -457,9 +456,7 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, | |||
| 457 | 456 | ||
| 458 | urb = usb_alloc_urb(0, GFP_KERNEL); | 457 | urb = usb_alloc_urb(0, GFP_KERNEL); |
| 459 | if (urb != NULL) { | 458 | if (urb != NULL) { |
| 460 | kbuf = | 459 | kbuf = kmalloc(len, GFP_KERNEL); |
| 461 | usb_buffer_alloc(pdx->udev, len, GFP_KERNEL, | ||
| 462 | &urb->transfer_dma); | ||
| 463 | if (!kbuf) { | 460 | if (!kbuf) { |
| 464 | dev_err(&pdx->udev->dev, "buffer_alloc failed\n"); | 461 | dev_err(&pdx->udev->dev, "buffer_alloc failed\n"); |
| 465 | return -ENOMEM; | 462 | return -ENOMEM; |
| @@ -470,7 +467,6 @@ int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, | |||
| 470 | } | 467 | } |
| 471 | usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf, | 468 | usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf, |
| 472 | len, piusb_write_bulk_callback, pdx); | 469 | len, piusb_write_bulk_callback, pdx); |
| 473 | urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; | ||
| 474 | err = usb_submit_urb(urb, GFP_KERNEL); | 470 | err = usb_submit_urb(urb, GFP_KERNEL); |
| 475 | if (err) { | 471 | if (err) { |
| 476 | dev_err(&pdx->udev->dev, | 472 | dev_err(&pdx->udev->dev, |
| @@ -641,7 +637,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx) | |||
| 641 | numPagesRequired = | 637 | numPagesRequired = |
| 642 | ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; | 638 | ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; |
| 643 | dbg("Number of pages needed = %d", numPagesRequired); | 639 | dbg("Number of pages needed = %d", numPagesRequired); |
| 644 | maplist_p = vmalloc(numPagesRequired * sizeof(struct page)); | 640 | maplist_p = vmalloc(numPagesRequired * sizeof(struct page *)); |
| 645 | if (!maplist_p) { | 641 | if (!maplist_p) { |
| 646 | dbg("Can't Allocate Memory for maplist_p"); | 642 | dbg("Can't Allocate Memory for maplist_p"); |
| 647 | return -ENOMEM; | 643 | return -ENOMEM; |
| @@ -712,9 +708,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx) | |||
| 712 | usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], | 708 | usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], |
| 713 | pdx->udev, | 709 | pdx->udev, |
| 714 | epAddr, | 710 | epAddr, |
| 715 | (dma_addr_t *) sg_dma_address(&pdx-> | 711 | NULL, // non-DMA HC? buy a better hardware |
| 716 | sgl[frameInfo] | ||
| 717 | [i]), | ||
| 718 | sg_dma_len(&pdx->sgl[frameInfo][i]), | 712 | sg_dma_len(&pdx->sgl[frameInfo][i]), |
| 719 | piusb_readPIXEL_callback, (void *)pdx); | 713 | piusb_readPIXEL_callback, (void *)pdx); |
| 720 | pdx->PixelUrb[frameInfo][i]->transfer_dma = | 714 | pdx->PixelUrb[frameInfo][i]->transfer_dma = |
