Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] mceusb: remove pointless mce_flush_rx_buffer function

This function just submits the urb much like mceusb_dev_resume; removing
it simplifies mce_request_packet.

Also add missing usb_kill_urb to mce_dev_probe.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

authored by

Sean Young and committed by
Mauro Carvalho Chehab
e1159cb3 d26cec22

+33 -48
+33 -48
drivers/media/rc/mceusb.c
··· 153 153 #define MCE_COMMAND_IRDATA 0x80 154 154 #define MCE_PACKET_LENGTH_MASK 0x1f /* Packet length mask */ 155 155 156 - #define MCEUSB_RX 1 157 - #define MCEUSB_TX 2 158 - 159 156 #define VENDOR_PHILIPS 0x0471 160 157 #define VENDOR_SMK 0x0609 161 158 #define VENDOR_TATUNG 0x1460 ··· 727 730 728 731 /* request incoming or send outgoing usb packet - used to initialize remote */ 729 732 static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data, 730 - int size, int urb_type) 733 + int size) 731 734 { 732 735 int res, pipe; 733 736 struct urb *async_urb; 734 737 struct device *dev = ir->dev; 735 738 unsigned char *async_buf; 736 739 737 - if (urb_type == MCEUSB_TX) { 738 - async_urb = usb_alloc_urb(0, GFP_KERNEL); 739 - if (unlikely(!async_urb)) { 740 - dev_err(dev, "Error, couldn't allocate urb!\n"); 741 - return; 742 - } 743 - 744 - async_buf = kzalloc(size, GFP_KERNEL); 745 - if (!async_buf) { 746 - dev_err(dev, "Error, couldn't allocate buf!\n"); 747 - usb_free_urb(async_urb); 748 - return; 749 - } 750 - 751 - /* outbound data */ 752 - if (usb_endpoint_xfer_int(ir->usb_ep_out)) { 753 - pipe = usb_sndintpipe(ir->usbdev, 754 - ir->usb_ep_out->bEndpointAddress); 755 - usb_fill_int_urb(async_urb, ir->usbdev, pipe, async_buf, 756 - size, mce_async_callback, ir, 757 - ir->usb_ep_out->bInterval); 758 - } else { 759 - pipe = usb_sndbulkpipe(ir->usbdev, 760 - ir->usb_ep_out->bEndpointAddress); 761 - usb_fill_bulk_urb(async_urb, ir->usbdev, pipe, 762 - async_buf, size, mce_async_callback, 763 - ir); 764 - } 765 - memcpy(async_buf, data, size); 766 - 767 - } else if (urb_type == MCEUSB_RX) { 768 - /* standard request */ 769 - async_urb = ir->urb_in; 770 - } else { 771 - dev_err(dev, "Error! Unknown urb type %d\n", urb_type); 740 + async_urb = usb_alloc_urb(0, GFP_KERNEL); 741 + if (unlikely(!async_urb)) { 742 + dev_err(dev, "Error, couldn't allocate urb!\n"); 772 743 return; 773 744 } 745 + 746 + async_buf = kmalloc(size, GFP_KERNEL); 747 + if (!async_buf) { 748 + usb_free_urb(async_urb); 749 + return; 750 + } 751 + 752 + /* outbound data */ 753 + if (usb_endpoint_xfer_int(ir->usb_ep_out)) { 754 + pipe = usb_sndintpipe(ir->usbdev, 755 + ir->usb_ep_out->bEndpointAddress); 756 + usb_fill_int_urb(async_urb, ir->usbdev, pipe, async_buf, 757 + size, mce_async_callback, ir, 758 + ir->usb_ep_out->bInterval); 759 + } else { 760 + pipe = usb_sndbulkpipe(ir->usbdev, 761 + ir->usb_ep_out->bEndpointAddress); 762 + usb_fill_bulk_urb(async_urb, ir->usbdev, pipe, 763 + async_buf, size, mce_async_callback, 764 + ir); 765 + } 766 + memcpy(async_buf, data, size); 774 767 775 768 dev_dbg(dev, "receive request called (size=%#x)", size); 776 769 ··· 781 794 782 795 if (ir->need_reset) { 783 796 ir->need_reset = false; 784 - mce_request_packet(ir, DEVICE_RESUME, rsize, MCEUSB_TX); 797 + mce_request_packet(ir, DEVICE_RESUME, rsize); 785 798 msleep(10); 786 799 } 787 800 788 - mce_request_packet(ir, data, size, MCEUSB_TX); 801 + mce_request_packet(ir, data, size); 789 802 msleep(10); 790 - } 791 - 792 - static void mce_flush_rx_buffer(struct mceusb_dev *ir, int size) 793 - { 794 - mce_request_packet(ir, NULL, size, MCEUSB_RX); 795 803 } 796 804 797 805 /* Send data out the IR blaster port(s) */ ··· 1246 1264 struct usb_endpoint_descriptor *ep_in = NULL; 1247 1265 struct usb_endpoint_descriptor *ep_out = NULL; 1248 1266 struct mceusb_dev *ir = NULL; 1249 - int pipe, maxp, i; 1267 + int pipe, maxp, i, res; 1250 1268 char buf[63], name[128] = ""; 1251 1269 enum mceusb_model_type model = id->driver_info; 1252 1270 bool is_gen3; ··· 1349 1367 1350 1368 /* flush buffers on the device */ 1351 1369 dev_dbg(&intf->dev, "Flushing receive buffers\n"); 1352 - mce_flush_rx_buffer(ir, maxp); 1370 + res = usb_submit_urb(ir->urb_in, GFP_KERNEL); 1371 + if (res) 1372 + dev_err(&intf->dev, "failed to flush buffers: %d\n", res); 1353 1373 1354 1374 /* figure out which firmware/emulator version this hardware has */ 1355 1375 mceusb_get_emulator_version(ir); ··· 1386 1402 /* Error-handling path */ 1387 1403 rc_dev_fail: 1388 1404 usb_put_dev(ir->usbdev); 1405 + usb_kill_urb(ir->urb_in); 1389 1406 usb_free_urb(ir->urb_in); 1390 1407 urb_in_alloc_fail: 1391 1408 usb_free_coherent(dev, maxp, ir->buf_in, ir->dma_in);