#include <media/rc-core.h>
 
 /* Driver Information */
-#define DRIVER_VERSION "0.70"
 #define DRIVER_AUTHOR "Jarod Wilson <jarod@redhat.com>"
 #define DRIVER_AUTHOR2 "The Dweller, Stephen Cox"
 #define DRIVER_DESC "RedRat3 USB IR Transceiver Driver"
 
        /* the send endpoint */
        struct usb_endpoint_descriptor *ep_out;
-       /* the buffer to send data */
-       unsigned char *bulk_out_buf;
-       /* the urb used to send data */
-       struct urb *write_urb;
 
        /* usb dma */
        dma_addr_t dma_in;
-       dma_addr_t dma_out;
 
        /* rx signal timeout timer */
        struct timer_list rx_timeout;
 
        rr3_ftr(rr3->dev, "Entering %s\n", __func__);
 
-       memset(rr3->bulk_in_buf, 0, rr3->ep_in->wMaxPacketSize);
        res = usb_submit_urb(rr3->read_urb, GFP_ATOMIC);
        if (res)
                rr3_dbg(rr3->dev, "%s: receive request FAILED! "
 {
        DEFINE_IR_RAW_EVENT(rawir);
        struct device *dev;
-       int i, trailer = 0;
+       unsigned i, trailer = 0;
        unsigned sig_size, single_len, offset, val;
        unsigned long delay;
        u32 mod_freq;
 {
        rr3_ftr(rr3->dev, "%s cleaning up\n", __func__);
        usb_kill_urb(rr3->read_urb);
-       usb_kill_urb(rr3->write_urb);
 
        usb_free_urb(rr3->read_urb);
-       usb_free_urb(rr3->write_urb);
 
-       usb_free_coherent(udev, rr3->ep_in->wMaxPacketSize,
+       usb_free_coherent(udev, le16_to_cpu(rr3->ep_in->wMaxPacketSize),
                          rr3->bulk_in_buf, rr3->dma_in);
-       usb_free_coherent(udev, rr3->ep_out->wMaxPacketSize,
-                         rr3->bulk_out_buf, rr3->dma_out);
 
        kfree(rr3);
 }
        rxpipe = usb_rcvctrlpipe(udev, 0);
        txpipe = usb_sndctrlpipe(udev, 0);
 
-       val = kzalloc(len, GFP_KERNEL);
+       val = kmalloc(len, GFP_KERNEL);
        if (!val) {
                dev_err(dev, "Memory allocation failure\n");
                return;
        rr3_ftr(rr3->dev, "Exiting %s\n", __func__);
 }
 
-static void redrat3_read_packet_start(struct redrat3_dev *rr3, int len)
+static void redrat3_read_packet_start(struct redrat3_dev *rr3, unsigned len)
 {
        struct redrat3_header *header = rr3->bulk_in_buf;
        unsigned pktlen, pkttype;
        }
 }
 
-static void redrat3_read_packet_continue(struct redrat3_dev *rr3, int len)
+static void redrat3_read_packet_continue(struct redrat3_dev *rr3, unsigned len)
 {
        void *irdata = &rr3->irdata;
 
 }
 
 /* gather IR data from incoming urb, process it when we have enough */
-static int redrat3_get_ir_data(struct redrat3_dev *rr3, int len)
+static int redrat3_get_ir_data(struct redrat3_dev *rr3, unsigned len)
 {
        struct device *dev = rr3->dev;
        unsigned pkttype;
        }
 }
 
-static void redrat3_write_bulk_callback(struct urb *urb)
-{
-       struct redrat3_dev *rr3;
-       int len;
-
-       if (!urb)
-               return;
-
-       rr3 = urb->context;
-       if (rr3) {
-               len = urb->actual_length;
-               rr3_ftr(rr3->dev, "%s: called (status=%d len=%d)\n",
-                       __func__, urb->status, len);
-       }
-}
-
 static u16 mod_freq_to_val(unsigned int mod_freq)
 {
        int mult = 6000000;
        struct redrat3_dev *rr3 = rcdev->priv;
        struct device *dev = rr3->dev;
        struct redrat3_irdata *irdata = NULL;
-       int i, ret, ret_len;
+       int ret, ret_len;
        int lencheck, cur_sample_len, pipe;
        int *sample_lens = NULL;
        u8 curlencheck = 0;
-       int sendbuf_len;
+       unsigned i, sendbuf_len;
 
        rr3_ftr(dev, "Entering %s\n", __func__);
 
        }
 
        rr3->ep_in = ep_in;
-       rr3->bulk_in_buf = usb_alloc_coherent(udev, ep_in->wMaxPacketSize,
-                                             GFP_ATOMIC, &rr3->dma_in);
+       rr3->bulk_in_buf = usb_alloc_coherent(udev,
+               le16_to_cpu(ep_in->wMaxPacketSize), GFP_ATOMIC, &rr3->dma_in);
        if (!rr3->bulk_in_buf) {
                dev_err(dev, "Read buffer allocation failure\n");
                goto error;
        }
 
        pipe = usb_rcvbulkpipe(udev, ep_in->bEndpointAddress);
-       usb_fill_bulk_urb(rr3->read_urb, udev, pipe,
-                         rr3->bulk_in_buf, ep_in->wMaxPacketSize,
-                         redrat3_handle_async, rr3);
-
-       /* set up bulk-out endpoint*/
-       rr3->write_urb = usb_alloc_urb(0, GFP_KERNEL);
-       if (!rr3->write_urb) {
-               dev_err(dev, "Write urb allocation failure\n");
-               goto error;
-       }
+       usb_fill_bulk_urb(rr3->read_urb, udev, pipe, rr3->bulk_in_buf,
+               le16_to_cpu(ep_in->wMaxPacketSize), redrat3_handle_async, rr3);
 
        rr3->ep_out = ep_out;
-       rr3->bulk_out_buf = usb_alloc_coherent(udev, ep_out->wMaxPacketSize,
-                                              GFP_ATOMIC, &rr3->dma_out);
-       if (!rr3->bulk_out_buf) {
-               dev_err(dev, "Write buffer allocation failure\n");
-               goto error;
-       }
-
-       pipe = usb_sndbulkpipe(udev, ep_out->bEndpointAddress);
-       usb_fill_bulk_urb(rr3->write_urb, udev, pipe,
-                         rr3->bulk_out_buf, ep_out->wMaxPacketSize,
-                         redrat3_write_bulk_callback, rr3);
-
        rr3->udev = udev;
 
        redrat3_reset(rr3);