[media] em28xx: create a common function for isoc and bulk USB transfer initialization
authorFrank Schaefer <fschaefer.oss@googlemail.com>
Thu, 8 Nov 2012 17:11:42 +0000 (14:11 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 22 Dec 2012 19:58:14 +0000 (17:58 -0200)
- rename em28xx_init_isoc to em28xx_init_usb_xfer
- add parameter for isoc/bulk transfer selection which is passed to em28xx_alloc_urbs
- rename local variable isoc_buf to usb_bufs

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/em28xx/em28xx-core.c
drivers/media/usb/em28xx/em28xx-dvb.c
drivers/media/usb/em28xx/em28xx-video.c
drivers/media/usb/em28xx/em28xx.h

index 42388de..d8a8e8b 100644 (file)
@@ -1141,33 +1141,35 @@ EXPORT_SYMBOL_GPL(em28xx_alloc_urbs);
 /*
  * Allocate URBs and start IRQ
  */
-int em28xx_init_isoc(struct em28xx *dev, enum em28xx_mode mode,
-                    int num_packets, int num_bufs, int max_pkt_size,
-                    int (*isoc_copy) (struct em28xx *dev, struct urb *urb))
+int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
+                   int xfer_bulk, int num_bufs, int max_pkt_size,
+                   int packet_multiplier,
+                   int (*urb_data_copy) (struct em28xx *dev, struct urb *urb))
 {
        struct em28xx_dmaqueue *dma_q = &dev->vidq;
        struct em28xx_dmaqueue *vbi_dma_q = &dev->vbiq;
-       struct em28xx_usb_bufs *isoc_bufs;
+       struct em28xx_usb_bufs *usb_bufs;
        int i;
        int rc;
        int alloc;
 
-       em28xx_isocdbg("em28xx: called em28xx_init_isoc in mode %d\n", mode);
+       em28xx_isocdbg("em28xx: called em28xx_init_usb_xfer in mode %d\n",
+                      mode);
 
-       dev->usb_ctl.urb_data_copy = isoc_copy;
+       dev->usb_ctl.urb_data_copy = urb_data_copy;
 
        if (mode == EM28XX_DIGITAL_MODE) {
-               isoc_bufs = &dev->usb_ctl.digital_bufs;
-               /* no need to free/alloc isoc buffers in digital mode */
+               usb_bufs = &dev->usb_ctl.digital_bufs;
+               /* no need to free/alloc usb buffers in digital mode */
                alloc = 0;
        } else {
-               isoc_bufs = &dev->usb_ctl.analog_bufs;
+               usb_bufs = &dev->usb_ctl.analog_bufs;
                alloc = 1;
        }
 
        if (alloc) {
-               rc = em28xx_alloc_urbs(dev, mode, 0, num_bufs,
-                                      max_pkt_size, num_packets);
+               rc = em28xx_alloc_urbs(dev, mode, xfer_bulk, num_bufs,
+                                      max_pkt_size, packet_multiplier);
                if (rc)
                        return rc;
        }
@@ -1178,8 +1180,8 @@ int em28xx_init_isoc(struct em28xx *dev, enum em28xx_mode mode,
        em28xx_capture_start(dev, 1);
 
        /* submit urbs and enables IRQ */
-       for (i = 0; i < isoc_bufs->num_bufs; i++) {
-               rc = usb_submit_urb(isoc_bufs->urb[i], GFP_ATOMIC);
+       for (i = 0; i < usb_bufs->num_bufs; i++) {
+               rc = usb_submit_urb(usb_bufs->urb[i], GFP_ATOMIC);
                if (rc) {
                        em28xx_err("submit of urb %i failed (error=%i)\n", i,
                                   rc);
@@ -1190,7 +1192,7 @@ int em28xx_init_isoc(struct em28xx *dev, enum em28xx_mode mode,
 
        return 0;
 }
-EXPORT_SYMBOL_GPL(em28xx_init_isoc);
+EXPORT_SYMBOL_GPL(em28xx_init_usb_xfer);
 
 /*
  * em28xx_wake_i2c()
index 581578f..fe4d11c 100644 (file)
@@ -176,10 +176,11 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb)
                EM28XX_DVB_NUM_ISOC_PACKETS,
                max_dvb_packet_size);
 
-       return em28xx_init_isoc(dev, EM28XX_DIGITAL_MODE,
-                               EM28XX_DVB_NUM_ISOC_PACKETS,
-                               EM28XX_DVB_NUM_BUFS,
-                               max_dvb_packet_size, em28xx_dvb_isoc_copy);
+       return em28xx_init_usb_xfer(dev, EM28XX_DIGITAL_MODE, 0,
+                                   EM28XX_DVB_NUM_BUFS,
+                                   max_dvb_packet_size,
+                                   EM28XX_DVB_NUM_ISOC_PACKETS,
+                                   em28xx_dvb_isoc_copy);
 }
 
 static int em28xx_stop_streaming(struct em28xx_dvb *dvb)
index d61d4dc..a5c1a42 100644 (file)
@@ -763,17 +763,17 @@ buffer_prepare(struct videobuf_queue *vq, struct videobuf_buffer *vb,
 
        if (urb_init) {
                if (em28xx_vbi_supported(dev) == 1)
-                       rc = em28xx_init_isoc(dev, EM28XX_ANALOG_MODE,
-                                             EM28XX_NUM_ISOC_PACKETS,
-                                             EM28XX_NUM_BUFS,
-                                             dev->max_pkt_size,
-                                             em28xx_isoc_copy_vbi);
+                       rc = em28xx_init_usb_xfer(dev, EM28XX_ANALOG_MODE, 0,
+                                                 EM28XX_NUM_BUFS,
+                                                 dev->max_pkt_size,
+                                                 EM28XX_NUM_ISOC_PACKETS,
+                                                 em28xx_isoc_copy_vbi);
                else
-                       rc = em28xx_init_isoc(dev, EM28XX_ANALOG_MODE,
-                                             EM28XX_NUM_ISOC_PACKETS,
-                                             EM28XX_NUM_BUFS,
-                                             dev->max_pkt_size,
-                                             em28xx_isoc_copy);
+                       rc = em28xx_init_usb_xfer(dev, EM28XX_ANALOG_MODE, 0,
+                                                 EM28XX_NUM_BUFS,
+                                                 dev->max_pkt_size,
+                                                 EM28XX_NUM_ISOC_PACKETS,
+                                                 em28xx_isoc_copy);
                if (rc < 0)
                        goto fail;
        }
index 7bc2ddd..950a717 100644 (file)
@@ -664,9 +664,11 @@ int em28xx_resolution_set(struct em28xx *dev);
 int em28xx_set_alternate(struct em28xx *dev);
 int em28xx_alloc_urbs(struct em28xx *dev, enum em28xx_mode mode, int xfer_bulk,
                      int num_bufs, int max_pkt_size, int packet_multiplier);
-int em28xx_init_isoc(struct em28xx *dev, enum em28xx_mode mode,
-                    int num_packets, int num_bufs, int max_pkt_size,
-                    int (*isoc_copy) (struct em28xx *dev, struct urb *urb));
+int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
+                        int xfer_bulk,
+                        int num_bufs, int max_pkt_size, int packet_multiplier,
+                        int (*urb_data_copy)
+                                       (struct em28xx *dev, struct urb *urb));
 void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode);
 void em28xx_stop_urbs(struct em28xx *dev);
 int em28xx_isoc_dvb_max_packetsize(struct em28xx *dev);