]> git.openfabrics.org - ~emulex/infiniband.git/commitdiff
[media] dvb_usb_v2: change USB stream config logic
authorAntti Palosaari <crope@iki.fi>
Sat, 16 Jun 2012 19:02:57 +0000 (16:02 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 4 Aug 2012 10:56:34 +0000 (07:56 -0300)
Initial / default USB stream configuration is now set always as a
dvb_usb_device_properties. Dynamic configuration is done top of
that if callback .get_usb_stream_config() exists. Default values
are set when callback is called so callback needs only change
values that are different than default.

In addition of that define two macros DVB_USB_STREAM_BULK() and
DVB_USB_STREAM_ISOC() for filling struct usb_data_stream_properties

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-usb/dvb_usb_common.h
drivers/media/dvb/dvb-usb/dvb_usb_dvb.c
drivers/media/dvb/dvb-usb/usb_urb.c

index e1cff154c0ec2e896f314b176d3b60763d3fe919..c94a900c3264107699f8ff1f62eb58ab76a8b17a 100644 (file)
@@ -17,7 +17,7 @@ extern int dvb_usbv2_disable_rc_polling;
 extern int dvb_usbv2_device_power_ctrl(struct dvb_usb_device *d, int onoff);
 
 extern int usb_urb_initv2(struct usb_data_stream *stream,
-               struct usb_data_stream_properties *props);
+               const struct usb_data_stream_properties *props);
 extern int usb_urb_exitv2(struct usb_data_stream *stream);
 extern int usb_urb_submitv2(struct usb_data_stream *stream,
                struct usb_data_stream_properties *props);
index 3cbae02ea51ec68edd1bd91a1d4e62d892552950..484114cbd0ba4dc6065314c3d9e5a5d9cb0955d7 100644 (file)
@@ -34,31 +34,20 @@ static void dvb_usb_data_complete_raw(struct usb_data_stream *stream,
 
 int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
 {
-       int ret;
-       struct usb_data_stream_properties stream_props;
+       pr_debug("%s: adap=%d\n", __func__, adap->id);
 
        adap->stream.udev = adap->dev->udev;
        adap->stream.user_priv = adap;
-
-       /* resolve USB stream configuration for buffer alloc */
-       if (adap->dev->props->get_usb_stream_config) {
-               ret = adap->dev->props->get_usb_stream_config(NULL,
-                               &stream_props);
-               if (ret < 0)
-                       return ret;
-       } else {
-               stream_props = adap->props->stream;
-       }
-
-       /* FIXME: can be removed as set later in anyway */
        adap->stream.complete = dvb_usb_data_complete;
 
-       return usb_urb_initv2(&adap->stream, &stream_props);
+       return usb_urb_initv2(&adap->stream, &adap->props->stream);
 }
 
 int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
 {
+       pr_debug("%s: adap=%d\n", __func__, adap->id);
        usb_urb_exitv2(&adap->stream);
+
        return 0;
 }
 
@@ -133,6 +122,8 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff)
 
                /* resolve USB stream configuration */
                if (adap->dev->props->get_usb_stream_config) {
+                       memcpy(&stream_props, &adap->props->stream,
+                               sizeof(struct usb_data_stream_properties));
                        ret = adap->dev->props->get_usb_stream_config(
                                        adap->fe[adap->active_fe],
                                        &stream_props);
index 16e9fa03c8479d9af0a6e18968ed952620d1694b..32e80be2168d02a4d2dd9dcc5d72ae12df6642b7 100644 (file)
@@ -306,7 +306,7 @@ int usb_urb_reconfig(struct usb_data_stream *stream,
 }
 
 int usb_urb_initv2(struct usb_data_stream *stream,
-               struct usb_data_stream_properties *props)
+               const struct usb_data_stream_properties *props)
 {
        int ret;