Lines Matching defs:dvb

141 static bool vidtv_bridge_check_demod_lock(struct vidtv_dvb *dvb, u32 n)
145 dvb->fe[n]->ops.read_status(dvb->fe[n], &status);
159 struct vidtv_dvb *dvb = priv;
162 if (vidtv_bridge_check_demod_lock(dvb, 0))
163 dvb_dmx_swfilter_packets(&dvb->demux, buf, npkts);
166 static int vidtv_start_streaming(struct vidtv_dvb *dvb)
177 .priv = dvb,
179 struct device *dev = &dvb->pdev->dev;
182 if (dvb->streaming) {
194 dvb->streaming = true;
195 dvb->mux = vidtv_mux_init(dvb->fe[0], dev, &mux_args);
196 if (!dvb->mux)
198 vidtv_mux_start_thread(dvb->mux);
204 static int vidtv_stop_streaming(struct vidtv_dvb *dvb)
206 struct device *dev = &dvb->pdev->dev;
208 dvb->streaming = false;
209 vidtv_mux_stop_thread(dvb->mux);
210 vidtv_mux_destroy(dvb->mux);
211 dvb->mux = NULL;
220 struct vidtv_dvb *dvb = demux->priv;
227 mutex_lock(&dvb->feed_lock);
229 dvb->nfeeds++;
230 rc = dvb->nfeeds;
232 if (dvb->nfeeds == 1) {
233 ret = vidtv_start_streaming(dvb);
238 mutex_unlock(&dvb->feed_lock);
245 struct vidtv_dvb *dvb = demux->priv;
248 mutex_lock(&dvb->feed_lock);
249 dvb->nfeeds--;
251 if (!dvb->nfeeds)
252 err = vidtv_stop_streaming(dvb);
254 mutex_unlock(&dvb->feed_lock);
288 static int vidtv_bridge_i2c_register_adap(struct vidtv_dvb *dvb)
290 struct i2c_adapter *i2c_adapter = &dvb->i2c_adapter;
298 i2c_adapter->dev.parent = &dvb->pdev->dev;
300 i2c_set_adapdata(i2c_adapter, dvb);
301 return i2c_add_adapter(&dvb->i2c_adapter);
304 static int vidtv_bridge_register_adap(struct vidtv_dvb *dvb)
308 ret = dvb_register_adapter(&dvb->adapter,
311 &dvb->i2c_adapter.dev,
317 static int vidtv_bridge_dmx_init(struct vidtv_dvb *dvb)
319 dvb->demux.dmx.capabilities = DMX_TS_FILTERING |
322 dvb->demux.priv = dvb;
323 dvb->demux.filternum = 256;
324 dvb->demux.feednum = 256;
325 dvb->demux.start_feed = vidtv_start_feed;
326 dvb->demux.stop_feed = vidtv_stop_feed;
328 return dvb_dmx_init(&dvb->demux);
331 static int vidtv_bridge_dmxdev_init(struct vidtv_dvb *dvb)
333 dvb->dmx_dev.filternum = 256;
334 dvb->dmx_dev.demux = &dvb->demux.dmx;
335 dvb->dmx_dev.capabilities = 0;
337 return dvb_dmxdev_init(&dvb->dmx_dev, &dvb->adapter);
340 static int vidtv_bridge_probe_demod(struct vidtv_dvb *dvb, u32 n)
346 dvb->i2c_client_demod[n] = dvb_module_probe("dvb_vidtv_demod",
348 &dvb->i2c_adapter,
353 if (!dvb->i2c_client_demod[n])
357 dvb->fe[n] = vidtv_get_frontend_ptr(dvb->i2c_client_demod[n]);
362 static int vidtv_bridge_probe_tuner(struct vidtv_dvb *dvb, u32 n)
365 .fe = dvb->fe[n],
399 dvb->i2c_client_tuner[n] = dvb_module_probe("dvb_vidtv_tuner",
401 &dvb->i2c_adapter,
405 return (dvb->i2c_client_tuner[n]) ? 0 : -ENODEV;
408 static int vidtv_bridge_dvb_init(struct vidtv_dvb *dvb)
412 ret = vidtv_bridge_i2c_register_adap(dvb);
416 ret = vidtv_bridge_register_adap(dvb);
419 dvb_register_media_controller(&dvb->adapter, &dvb->mdev);
422 ret = vidtv_bridge_probe_demod(dvb, i);
426 ret = vidtv_bridge_probe_tuner(dvb, i);
430 ret = dvb_register_frontend(&dvb->adapter, dvb->fe[i]);
435 ret = vidtv_bridge_dmx_init(dvb);
439 ret = vidtv_bridge_dmxdev_init(dvb);
444 ret = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx,
445 &dvb->dmx_fe[j]);
453 dvb->dmx_fe[j].source = DMX_FRONTEND_0;
460 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx,
461 &dvb->dmx_fe[j]);
462 dvb_dmxdev_release(&dvb->dmx_dev);
464 dvb_dmx_release(&dvb->demux);
468 dvb_unregister_frontend(dvb->fe[i]);
470 dvb_module_release(dvb->i2c_client_tuner[i]);
472 dvb_module_release(dvb->i2c_client_demod[i]);
475 dvb_unregister_adapter(&dvb->adapter);
477 i2c_del_adapter(&dvb->i2c_adapter);
484 struct vidtv_dvb *dvb;
487 dvb = kzalloc(sizeof(*dvb), GFP_KERNEL);
488 if (!dvb)
491 dvb->pdev = pdev;
494 dvb->mdev.dev = &pdev->dev;
496 strscpy(dvb->mdev.model, "vidtv", sizeof(dvb->mdev.model));
497 strscpy(dvb->mdev.bus_info, "platform:vidtv", sizeof(dvb->mdev.bus_info));
499 media_device_init(&dvb->mdev);
502 ret = vidtv_bridge_dvb_init(dvb);
506 mutex_init(&dvb->feed_lock);
508 platform_set_drvdata(pdev, dvb);
511 ret = media_device_register(&dvb->mdev);
513 dev_err(dvb->mdev.dev,
524 media_device_cleanup(&dvb->mdev);
527 kfree(dvb);
533 struct vidtv_dvb *dvb;
536 dvb = platform_get_drvdata(pdev);
539 media_device_unregister(&dvb->mdev);
540 media_device_cleanup(&dvb->mdev);
543 mutex_destroy(&dvb->feed_lock);
546 dvb_unregister_frontend(dvb->fe[i]);
547 dvb_module_release(dvb->i2c_client_tuner[i]);
548 dvb_module_release(dvb->i2c_client_demod[i]);
551 dvb_dmxdev_release(&dvb->dmx_dev);
552 dvb_dmx_release(&dvb->demux);
553 dvb_unregister_adapter(&dvb->adapter);
559 struct vidtv_dvb *dvb;
561 dvb = dev_get_drvdata(dev);
562 kfree(dvb);