mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 02:21:47 +00:00
[media] dvb_usb_v2: add .get_usb_stream_config()
New callback to resolve current USB stream configuration. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
15072bba79
commit
39831f094f
@ -240,6 +240,8 @@ struct dvb_usb_device_properties {
|
||||
int (*identify_state) (struct dvb_usb_device *);
|
||||
int (*init) (struct dvb_usb_device *);
|
||||
int (*get_rc_config) (struct dvb_usb_device *, struct dvb_usb_rc *);
|
||||
int (*get_usb_stream_config) (struct dvb_frontend *,
|
||||
struct usb_data_stream_properties *);
|
||||
|
||||
struct i2c_algorithm *i2c_algo;
|
||||
|
||||
|
@ -56,8 +56,22 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff)
|
||||
* for reception.
|
||||
*/
|
||||
if (adap->feedcount == onoff && adap->feedcount > 0) {
|
||||
struct usb_data_stream_properties stream_props;
|
||||
|
||||
/* resolve USB stream configuration */
|
||||
if (adap->dev->props.get_usb_stream_config) {
|
||||
ret = adap->dev->props.get_usb_stream_config(
|
||||
adap->fe_adap[adap->active_fe].fe,
|
||||
&stream_props);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
} else {
|
||||
stream_props = adap->props.fe[adap->active_fe].stream;
|
||||
}
|
||||
|
||||
deb_ts("submitting all URBs\n");
|
||||
usb_urb_submit(&adap->fe_adap[adap->active_fe].stream, NULL);
|
||||
usb_urb_submit(&adap->fe_adap[adap->active_fe].stream,
|
||||
&stream_props);
|
||||
|
||||
deb_ts("controlling pid parser\n");
|
||||
if (adap->props.fe[adap->active_fe].caps & DVB_USB_ADAP_HAS_PID_FILTER &&
|
||||
|
@ -94,8 +94,9 @@ static void dvb_usb_data_complete_raw(struct usb_data_stream *stream,
|
||||
int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
|
||||
{
|
||||
int i, ret = 0;
|
||||
for (i = 0; i < adap->props.num_frontends; i++) {
|
||||
struct usb_data_stream_properties stream_props;
|
||||
|
||||
for (i = 0; i < adap->props.num_frontends; i++) {
|
||||
adap->fe_adap[i].stream.udev = adap->dev->udev;
|
||||
if (adap->props.fe[i].caps & DVB_USB_ADAP_RECEIVES_204_BYTE_TS)
|
||||
adap->fe_adap[i].stream.complete =
|
||||
@ -107,8 +108,18 @@ int dvb_usb_adapter_stream_init(struct dvb_usb_adapter *adap)
|
||||
else
|
||||
adap->fe_adap[i].stream.complete = dvb_usb_data_complete;
|
||||
adap->fe_adap[i].stream.user_priv = adap;
|
||||
ret = usb_urb_init(&adap->fe_adap[i].stream,
|
||||
&adap->props.fe[i].stream);
|
||||
|
||||
/* resolve USB stream configuration */
|
||||
if (adap->dev->props.get_usb_stream_config) {
|
||||
ret = adap->dev->props.get_usb_stream_config(NULL,
|
||||
&stream_props);
|
||||
if (ret < 0)
|
||||
break;
|
||||
} else {
|
||||
stream_props = adap->props.fe[i].stream;
|
||||
}
|
||||
|
||||
ret = usb_urb_init(&adap->fe_adap[i].stream, &stream_props);
|
||||
if (ret < 0)
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user