Lines Matching refs:adap

203 	struct dvb_usb_adapter *adap = stream->user_priv;
204 dvb_dmx_swfilter(&adap->demux, buf, len);
210 struct dvb_usb_adapter *adap = stream->user_priv;
211 dvb_dmx_swfilter_204(&adap->demux, buf, len);
217 struct dvb_usb_adapter *adap = stream->user_priv;
218 dvb_dmx_swfilter_raw(&adap->demux, buf, len);
221 static int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap)
223 dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
224 adap->id);
226 adap->stream.udev = adap_to_d(adap)->udev;
227 adap->stream.user_priv = adap;
228 adap->stream.complete = dvb_usb_data_complete;
230 return usb_urb_initv2(&adap->stream, &adap->props->stream);
233 static int dvb_usbv2_adapter_stream_exit(struct dvb_usb_adapter *adap)
235 dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
236 adap->id);
238 return usb_urb_exitv2(&adap->stream);
243 struct dvb_usb_adapter *adap = dvbdmxfeed->demux->priv;
244 struct dvb_usb_device *d = adap_to_d(adap);
248 "%s: adap=%d active_fe=%d feed_type=%d setting pid [%s]: %04x (%04d) at index %d\n",
249 __func__, adap->id, adap->active_fe, dvbdmxfeed->type,
250 adap->pid_filtering ? "yes" : "no", dvbdmxfeed->pid,
254 wait_on_bit(&adap->state_bits, ADAP_INIT, TASK_UNINTERRUPTIBLE);
256 if (adap->active_fe == -1)
260 if (adap->feed_count++ > 0)
264 set_bit(ADAP_STREAMING, &adap->state_bits);
268 memcpy(&stream_props, &adap->props->stream,
270 ret = d->props->get_stream_config(adap->fe[adap->active_fe],
271 &adap->ts_type, &stream_props);
277 stream_props = adap->props->stream;
280 switch (adap->ts_type) {
282 adap->stream.complete = dvb_usb_data_complete_204;
285 adap->stream.complete = dvb_usb_data_complete_raw;
289 adap->stream.complete = dvb_usb_data_complete;
294 usb_urb_submitv2(&adap->stream, &stream_props);
297 if (adap->pid_filtering && adap->props->pid_filter_ctrl) {
298 ret = adap->props->pid_filter_ctrl(adap, 1);
307 ret = d->props->streaming_ctrl(adap->fe[adap->active_fe], 1);
316 if (adap->pid_filtering && adap->props->pid_filter) {
317 ret = adap->props->pid_filter(adap, dvbdmxfeed->index,
331 struct dvb_usb_adapter *adap = dvbdmxfeed->demux->priv;
332 struct dvb_usb_device *d = adap_to_d(adap);
335 "%s: adap=%d active_fe=%d feed_type=%d setting pid [%s]: %04x (%04d) at index %d\n",
336 __func__, adap->id, adap->active_fe, dvbdmxfeed->type,
337 adap->pid_filtering ? "yes" : "no", dvbdmxfeed->pid,
340 if (adap->active_fe == -1)
344 if (adap->pid_filtering && adap->props->pid_filter) {
345 ret = adap->props->pid_filter(adap, dvbdmxfeed->index,
353 if (--adap->feed_count > 0)
358 ret = d->props->streaming_ctrl(adap->fe[adap->active_fe], 0);
366 if (adap->pid_filtering && adap->props->pid_filter_ctrl) {
367 ret = adap->props->pid_filter_ctrl(adap, 0);
375 usb_urb_killv2(&adap->stream);
378 clear_bit(ADAP_STREAMING, &adap->state_bits);
380 wake_up_bit(&adap->state_bits, ADAP_STREAMING);
388 static int dvb_usbv2_media_device_init(struct dvb_usb_adapter *adap)
392 struct dvb_usb_device *d = adap_to_d(adap);
401 dvb_register_media_controller(&adap->dvb_adap, mdev);
408 static int dvb_usbv2_media_device_register(struct dvb_usb_adapter *adap)
411 return media_device_register(adap->dvb_adap.mdev);
417 static void dvb_usbv2_media_device_unregister(struct dvb_usb_adapter *adap)
421 if (!adap->dvb_adap.mdev)
424 media_device_unregister(adap->dvb_adap.mdev);
425 media_device_cleanup(adap->dvb_adap.mdev);
426 kfree(adap->dvb_adap.mdev);
427 adap->dvb_adap.mdev = NULL;
432 static int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap)
435 struct dvb_usb_device *d = adap_to_d(adap);
437 dev_dbg(&d->udev->dev, "%s: adap=%d\n", __func__, adap->id);
439 ret = dvb_register_adapter(&adap->dvb_adap, d->name, d->props->owner,
447 adap->dvb_adap.priv = adap;
449 ret = dvb_usbv2_media_device_init(adap);
457 ret = d->props->read_mac_address(adap,
458 adap->dvb_adap.proposed_mac);
463 KBUILD_MODNAME, adap->dvb_adap.proposed_mac);
466 adap->demux.dmx.capabilities = DMX_TS_FILTERING | DMX_SECTION_FILTERING;
467 adap->demux.priv = adap;
468 adap->demux.filternum = 0;
469 adap->demux.filternum = adap->max_feed_count;
470 adap->demux.feednum = adap->demux.filternum;
471 adap->demux.start_feed = dvb_usb_start_feed;
472 adap->demux.stop_feed = dvb_usb_stop_feed;
473 adap->demux.write_to_decoder = NULL;
474 ret = dvb_dmx_init(&adap->demux);
481 adap->dmxdev.filternum = adap->demux.filternum;
482 adap->dmxdev.demux = &adap->demux.dmx;
483 adap->dmxdev.capabilities = 0;
484 ret = dvb_dmxdev_init(&adap->dmxdev, &adap->dvb_adap);
491 ret = dvb_net_init(&adap->dvb_adap, &adap->dvb_net, &adap->demux.dmx);
500 dvb_dmxdev_release(&adap->dmxdev);
502 dvb_dmx_release(&adap->demux);
504 dvb_usbv2_media_device_unregister(adap);
506 dvb_unregister_adapter(&adap->dvb_adap);
508 adap->dvb_adap.priv = NULL;
512 static int dvb_usbv2_adapter_dvb_exit(struct dvb_usb_adapter *adap)
514 dev_dbg(&adap_to_d(adap)->udev->dev, "%s: adap=%d\n", __func__,
515 adap->id);
517 if (adap->dvb_adap.priv) {
518 dvb_net_release(&adap->dvb_net);
519 adap->demux.dmx.close(&adap->demux.dmx);
520 dvb_dmxdev_release(&adap->dmxdev);
521 dvb_dmx_release(&adap->demux);
522 dvb_unregister_adapter(&adap->dvb_adap);
556 struct dvb_usb_adapter *adap = fe->dvb->priv;
557 struct dvb_usb_device *d = adap_to_d(adap);
558 dev_dbg(&d->udev->dev, "%s: adap=%d fe=%d\n", __func__, adap->id,
561 if (!adap->suspend_resume_active) {
562 adap->active_fe = fe->id;
563 set_bit(ADAP_INIT, &adap->state_bits);
576 if (adap->fe_init[fe->id]) {
577 ret = adap->fe_init[fe->id](fe);
582 if (!adap->suspend_resume_active) {
583 clear_bit(ADAP_INIT, &adap->state_bits);
585 wake_up_bit(&adap->state_bits, ADAP_INIT);
595 struct dvb_usb_adapter *adap = fe->dvb->priv;
596 struct dvb_usb_device *d = adap_to_d(adap);
597 dev_dbg(&d->udev->dev, "%s: adap=%d fe=%d\n", __func__, adap->id,
600 if (!adap->suspend_resume_active) {
601 set_bit(ADAP_SLEEP, &adap->state_bits);
602 wait_on_bit(&adap->state_bits, ADAP_STREAMING,
606 if (adap->fe_sleep[fe->id]) {
607 ret = adap->fe_sleep[fe->id](fe);
621 if (!adap->suspend_resume_active) {
622 adap->active_fe = -1;
623 clear_bit(ADAP_SLEEP, &adap->state_bits);
625 wake_up_bit(&adap->state_bits, ADAP_SLEEP);
632 static int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
635 struct dvb_usb_device *d = adap_to_d(adap);
636 dev_dbg(&d->udev->dev, "%s: adap=%d\n", __func__, adap->id);
638 memset(adap->fe, 0, sizeof(adap->fe));
639 adap->active_fe = -1;
642 ret = d->props->frontend_attach(adap);
656 for (i = 0; i < MAX_NO_OF_FE_PER_ADAP && adap->fe[i]; i++) {
657 adap->fe[i]->id = i;
659 adap->fe_init[i] = adap->fe[i]->ops.init;
660 adap->fe[i]->ops.init = dvb_usb_fe_init;
661 adap->fe_sleep[i] = adap->fe[i]->ops.sleep;
662 adap->fe[i]->ops.sleep = dvb_usb_fe_sleep;
664 ret = dvb_register_frontend(&adap->dvb_adap, adap->fe[i]);
676 ret = d->props->tuner_attach(adap);
684 ret = dvb_create_media_graph(&adap->dvb_adap, true);
688 ret = dvb_usbv2_media_device_register(adap);
694 dvb_unregister_frontend(adap->fe[i]);
698 if (adap->fe[i]) {
699 dvb_frontend_detach(adap->fe[i]);
700 adap->fe[i] = NULL;
709 static int dvb_usbv2_adapter_frontend_exit(struct dvb_usb_adapter *adap)
712 struct dvb_usb_device *d = adap_to_d(adap);
714 dev_dbg(&d->udev->dev, "%s: adap=%d\n", __func__, adap->id);
717 if (adap->fe[i]) {
718 dvb_unregister_frontend(adap->fe[i]);
719 dvb_frontend_detach(adap->fe[i]);
724 ret = d->props->tuner_detach(adap);
732 ret = d->props->frontend_detach(adap);
745 struct dvb_usb_adapter *adap;
759 adap = &d->adapter[i];
760 adap->id = i;
761 adap->props = &d->props->adapter[i];
765 !(adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER)) {
772 adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER) ||
773 (adap->props->caps & DVB_USB_ADAP_NEED_PID_FILTERING)) {
777 adap->props->pid_filter_count);
778 adap->pid_filtering = 1;
779 adap->max_feed_count = adap->props->pid_filter_count;
784 adap->pid_filtering = 0;
785 adap->max_feed_count = 255;
788 if (!adap->pid_filtering && dvb_usb_force_pid_filter_usage &&
789 adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER) {
793 adap->pid_filtering = 1;
794 adap->max_feed_count = adap->props->pid_filter_count;
797 ret = dvb_usbv2_adapter_stream_init(adap);
801 ret = dvb_usbv2_adapter_dvb_init(adap);
805 ret = dvb_usbv2_adapter_frontend_init(adap);
810 if (adap->fe[1])
811 adap->dvb_adap.mfe_shared = 1;