diff options
author | Antti Palosaari <crope@iki.fi> | 2012-06-18 22:54:16 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-04 07:56:36 -0300 |
commit | b905a2a13307035a4a5c9a93a3607e51e6736db2 (patch) | |
tree | e53fc8edb9700dfdd59b24a3b2bd06ab120f8c58 /drivers | |
parent | ec0dd2f20cb46c3c1fb8a746983c1fe395fd4af3 (diff) |
[media] dvb_usb_v2: merge get_ts_config() to get_usb_stream_config()
Piggypag TS type callback to USB stream callback and change
callback name slightly to fit better.
Both of those are rather rare callback and has a relation. Transport
Stream, TS, is input stream and USB stream is output stream of
DVB USB bridge.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9015.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb.h | 10 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_dvb.c | 37 |
3 files changed, 23 insertions, 28 deletions
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index 0f87eafae2d..101b399e76a 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c @@ -599,7 +599,7 @@ error: return ret; } -static int af9015_get_usb_stream_config(struct dvb_frontend *fe, +static int af9015_get_stream_config(struct dvb_frontend *fe, u8 *ts_type, struct usb_data_stream_properties *stream) { deb_info("%s: adap=%d\n", __func__, fe_to_adap(fe)->id); @@ -1304,7 +1304,7 @@ static struct dvb_usb_device_properties af9015_props = { .tuner_attach = af9015_tuner_attach, .init = af9015_init, .get_rc_config = af9015_get_rc_config, - .get_usb_stream_config = af9015_get_usb_stream_config, + .get_stream_config = af9015_get_stream_config, .get_adapter_count = af9015_get_adapter_count, .adapter = { diff --git a/drivers/media/dvb/dvb-usb/dvb_usb.h b/drivers/media/dvb/dvb-usb/dvb_usb.h index 6b6b7dab8ae..3a54fc3da70 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb.h +++ b/drivers/media/dvb/dvb-usb/dvb_usb.h @@ -124,8 +124,6 @@ struct dvb_usb_adapter_properties { #define DVB_USB_ADAP_HAS_PID_FILTER 0x01 #define DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF 0x02 #define DVB_USB_ADAP_NEED_PID_FILTERING 0x04 -#define DVB_USB_ADAP_RECEIVES_204_BYTE_TS 0x08 -#define DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD 0x10 int caps; int size_of_priv; @@ -228,9 +226,11 @@ struct dvb_usb_device_properties { int (*init) (struct dvb_usb_device *); void (*disconnect) (struct dvb_usb_device *); int (*get_rc_config) (struct dvb_usb_device *, struct dvb_usb_rc *); - int (*get_usb_stream_config) (struct dvb_frontend *, +#define DVB_USB_FE_TS_TYPE_188 0 +#define DVB_USB_FE_TS_TYPE_204 1 +#define DVB_USB_FE_TS_TYPE_RAW 2 + int (*get_stream_config) (struct dvb_frontend *, u8 *, struct usb_data_stream_properties *); - int (*get_ts_config) (struct dvb_frontend *, unsigned int *); struct i2c_algorithm *i2c_algo; @@ -301,7 +301,7 @@ struct dvb_usb_adapter { const struct dvb_usb_adapter_properties *props; struct usb_data_stream stream; u8 id; - + u8 ts_type; int pid_filtering; int feedcount; int max_feed_count; diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c b/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c index 27139a2c8d4..f87319c788c 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c @@ -100,37 +100,32 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) */ if (adap->feedcount == onoff && adap->feedcount > 0) { struct usb_data_stream_properties stream_props; - unsigned int ts_props; mutex_lock(&adap->sync_mutex); - /* resolve TS configuration */ - if (d->props->get_ts_config) { - ret = d->props->get_ts_config(adap->fe[adap->active_fe], - &ts_props); + /* resolve input and output streaming paramters */ + if (d->props->get_stream_config) { + memcpy(&stream_props, &adap->props->stream, + sizeof(struct usb_data_stream_properties)); + ret = d->props->get_stream_config( + adap->fe[adap->active_fe], + &adap->ts_type, &stream_props); if (ret < 0) goto err_mutex_unlock; } else { - ts_props = 0; /* normal 188 payload only TS */ + stream_props = adap->props->stream; } - if (ts_props & DVB_USB_ADAP_RECEIVES_204_BYTE_TS) + switch (adap->ts_type) { + case DVB_USB_FE_TS_TYPE_204: adap->stream.complete = dvb_usb_data_complete_204; - else if (ts_props & DVB_USB_ADAP_RECEIVES_RAW_PAYLOAD) + break; + case DVB_USB_FE_TS_TYPE_RAW: adap->stream.complete = dvb_usb_data_complete_raw; - else + break; + case DVB_USB_FE_TS_TYPE_188: + default: adap->stream.complete = dvb_usb_data_complete; - - /* resolve USB stream configuration */ - if (d->props->get_usb_stream_config) { - memcpy(&stream_props, &adap->props->stream, - sizeof(struct usb_data_stream_properties)); - ret = d->props->get_usb_stream_config( - adap->fe[adap->active_fe], - &stream_props); - if (ret < 0) - goto err_mutex_unlock; - } else { - stream_props = adap->props->stream; + break; } pr_debug("%s: submitting all URBs\n", __func__); |