Lines Matching refs:dvb
169 dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer, in em28xx_dvb_urb_data_copy()
180 dvb_dmx_swfilter(&dev->dvb->demux, in em28xx_dvb_urb_data_copy()
190 static int em28xx_start_streaming(struct em28xx_dvb *dvb) in em28xx_start_streaming() argument
193 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv; in em28xx_start_streaming()
231 static int em28xx_stop_streaming(struct em28xx_dvb *dvb) in em28xx_stop_streaming() argument
233 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv; in em28xx_stop_streaming()
244 struct em28xx_dvb *dvb = demux->priv; in em28xx_start_feed() local
250 mutex_lock(&dvb->lock); in em28xx_start_feed()
251 dvb->nfeeds++; in em28xx_start_feed()
252 rc = dvb->nfeeds; in em28xx_start_feed()
254 if (dvb->nfeeds == 1) { in em28xx_start_feed()
255 ret = em28xx_start_streaming(dvb); in em28xx_start_feed()
260 mutex_unlock(&dvb->lock); in em28xx_start_feed()
267 struct em28xx_dvb *dvb = demux->priv; in em28xx_stop_feed() local
270 mutex_lock(&dvb->lock); in em28xx_stop_feed()
271 dvb->nfeeds--; in em28xx_stop_feed()
273 if (0 == dvb->nfeeds) in em28xx_stop_feed()
274 err = em28xx_stop_streaming(dvb); in em28xx_stop_feed()
276 mutex_unlock(&dvb->lock); in em28xx_stop_feed()
284 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_dvb_bus_ctrl()
446 struct em28xx_dvb *dvb = fe->sec_priv; in drxk_gate_ctrl() local
449 if (!dvb) in drxk_gate_ctrl()
453 down(&dvb->pll_mutex); in drxk_gate_ctrl()
454 status = dvb->gate_ctrl(fe, 1); in drxk_gate_ctrl()
456 status = dvb->gate_ctrl(fe, 0); in drxk_gate_ctrl()
457 up(&dvb->pll_mutex); in drxk_gate_ctrl()
719 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_pctv_290e_set_lna()
722 struct em28xx_dvb *dvb = dev->dvb; in em28xx_pctv_290e_set_lna() local
731 ret = gpio_request_one(dvb->lna_gpio, flags, NULL); in em28xx_pctv_290e_set_lna()
735 gpio_free(dvb->lna_gpio); in em28xx_pctv_290e_set_lna()
748 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_pctv_292e_set_lna()
891 if (!dev->dvb->fe[0]) { in em28xx_attach_xc3028()
897 fe = dvb_attach(xc2028_attach, dev->dvb->fe[0], &cfg); in em28xx_attach_xc3028()
900 dvb_frontend_detach(dev->dvb->fe[0]); in em28xx_attach_xc3028()
901 dev->dvb->fe[0] = NULL; in em28xx_attach_xc3028()
912 static int em28xx_register_dvb(struct em28xx_dvb *dvb, struct module *module, in em28xx_register_dvb() argument
917 mutex_init(&dvb->lock); in em28xx_register_dvb()
920 result = dvb_register_adapter(&dvb->adapter, dev->name, module, device, in em28xx_register_dvb()
929 dvb->fe[0]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl; in em28xx_register_dvb()
930 if (dvb->fe[1]) in em28xx_register_dvb()
931 dvb->fe[1]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl; in em28xx_register_dvb()
933 dvb->adapter.priv = &dev->i2c_bus[dev->def_i2c_bus]; in em28xx_register_dvb()
936 result = dvb_register_frontend(&dvb->adapter, dvb->fe[0]); in em28xx_register_dvb()
944 if (dvb->fe[1]) { in em28xx_register_dvb()
945 result = dvb_register_frontend(&dvb->adapter, dvb->fe[1]); in em28xx_register_dvb()
954 dvb->demux.dmx.capabilities = in em28xx_register_dvb()
957 dvb->demux.priv = dvb; in em28xx_register_dvb()
958 dvb->demux.filternum = 256; in em28xx_register_dvb()
959 dvb->demux.feednum = 256; in em28xx_register_dvb()
960 dvb->demux.start_feed = em28xx_start_feed; in em28xx_register_dvb()
961 dvb->demux.stop_feed = em28xx_stop_feed; in em28xx_register_dvb()
963 result = dvb_dmx_init(&dvb->demux); in em28xx_register_dvb()
970 dvb->dmxdev.filternum = 256; in em28xx_register_dvb()
971 dvb->dmxdev.demux = &dvb->demux.dmx; in em28xx_register_dvb()
972 dvb->dmxdev.capabilities = 0; in em28xx_register_dvb()
973 result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter); in em28xx_register_dvb()
980 dvb->fe_hw.source = DMX_FRONTEND_0; in em28xx_register_dvb()
981 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
988 dvb->fe_mem.source = DMX_MEMORY_FE; in em28xx_register_dvb()
989 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_register_dvb()
996 result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
1004 dvb_net_init(&dvb->adapter, &dvb->net, &dvb->demux.dmx); in em28xx_register_dvb()
1008 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_register_dvb()
1010 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
1012 dvb_dmxdev_release(&dvb->dmxdev); in em28xx_register_dvb()
1014 dvb_dmx_release(&dvb->demux); in em28xx_register_dvb()
1016 if (dvb->fe[1]) in em28xx_register_dvb()
1017 dvb_unregister_frontend(dvb->fe[1]); in em28xx_register_dvb()
1018 dvb_unregister_frontend(dvb->fe[0]); in em28xx_register_dvb()
1020 if (dvb->fe[1]) in em28xx_register_dvb()
1021 dvb_frontend_detach(dvb->fe[1]); in em28xx_register_dvb()
1023 dvb_frontend_detach(dvb->fe[0]); in em28xx_register_dvb()
1024 dvb_unregister_adapter(&dvb->adapter); in em28xx_register_dvb()
1029 static void em28xx_unregister_dvb(struct em28xx_dvb *dvb) in em28xx_unregister_dvb() argument
1031 dvb_net_release(&dvb->net); in em28xx_unregister_dvb()
1032 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_unregister_dvb()
1033 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_unregister_dvb()
1034 dvb_dmxdev_release(&dvb->dmxdev); in em28xx_unregister_dvb()
1035 dvb_dmx_release(&dvb->demux); in em28xx_unregister_dvb()
1036 if (dvb->fe[1]) in em28xx_unregister_dvb()
1037 dvb_unregister_frontend(dvb->fe[1]); in em28xx_unregister_dvb()
1038 dvb_unregister_frontend(dvb->fe[0]); in em28xx_unregister_dvb()
1039 if (dvb->fe[1] && !dvb->dont_attach_fe1) in em28xx_unregister_dvb()
1040 dvb_frontend_detach(dvb->fe[1]); in em28xx_unregister_dvb()
1041 dvb_frontend_detach(dvb->fe[0]); in em28xx_unregister_dvb()
1042 dvb_unregister_adapter(&dvb->adapter); in em28xx_unregister_dvb()
1048 struct em28xx_dvb *dvb; in em28xx_dvb_init() local
1062 dvb = kzalloc(sizeof(struct em28xx_dvb), GFP_KERNEL); in em28xx_dvb_init()
1063 if (dvb == NULL) { in em28xx_dvb_init()
1067 dev->dvb = dvb; in em28xx_dvb_init()
1068 dvb->fe[0] = dvb->fe[1] = NULL; in em28xx_dvb_init()
1086 kfree(dvb); in em28xx_dvb_init()
1087 dev->dvb = NULL; in em28xx_dvb_init()
1096 dvb->fe[0] = dvb_attach(s921_attach, in em28xx_dvb_init()
1099 if (!dvb->fe[0]) { in em28xx_dvb_init()
1109 dvb->fe[0] = dvb_attach(lgdt330x_attach, in em28xx_dvb_init()
1118 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1129 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1142 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1145 if (dvb->fe[0] == NULL) { in em28xx_dvb_init()
1148 dvb->fe[0] = dvb_attach(mt352_attach, in em28xx_dvb_init()
1159 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1162 if (dvb->fe[0] != NULL) in em28xx_dvb_init()
1163 dvb_attach(qt1010_attach, dvb->fe[0], in em28xx_dvb_init()
1168 dvb->fe[0] = dvb_attach(s5h1409_attach, in em28xx_dvb_init()
1177 dvb->fe[0] = dvb_attach(lgdt330x_attach, in em28xx_dvb_init()
1180 if (dvb->fe[0] != NULL) { in em28xx_dvb_init()
1181 if (!dvb_attach(simple_tuner_attach, dvb->fe[0], in em28xx_dvb_init()
1191 dvb->fe[0] = dvb_attach(drxd_attach, &em28xx_drxd, NULL, in em28xx_dvb_init()
1200 dvb->fe[0] = dvb_attach(tda10023_attach, in em28xx_dvb_init()
1203 if (dvb->fe[0]) { in em28xx_dvb_init()
1204 if (!dvb_attach(simple_tuner_attach, dvb->fe[0], in em28xx_dvb_init()
1213 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1216 if (!dvb->fe[0]) { in em28xx_dvb_init()
1220 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1223 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1230 dvb->lna_gpio = CXD2820R_GPIO_E | CXD2820R_GPIO_O | in em28xx_dvb_init()
1232 dvb->fe[0] = dvb_attach(cxd2820r_attach, in em28xx_dvb_init()
1235 &dvb->lna_gpio); in em28xx_dvb_init()
1236 if (dvb->fe[0]) { in em28xx_dvb_init()
1239 dvb->fe[0], in em28xx_dvb_init()
1244 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1251 result = gpio_request_one(dvb->lna_gpio, in em28xx_dvb_init()
1257 gpio_free(dvb->lna_gpio); in em28xx_dvb_init()
1261 dvb->fe[0]->ops.set_lna = em28xx_pctv_290e_set_lna; in em28xx_dvb_init()
1271 dvb->fe[0] = dvb_attach(drxk_attach, in em28xx_dvb_init()
1273 if (!dvb->fe[0]) { in em28xx_dvb_init()
1278 dvb->fe[0]->sec_priv = dvb; in em28xx_dvb_init()
1279 sema_init(&dvb->pll_mutex, 1); in em28xx_dvb_init()
1280 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl; in em28xx_dvb_init()
1281 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl; in em28xx_dvb_init()
1288 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1289 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1); in em28xx_dvb_init()
1290 if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], in em28xx_dvb_init()
1295 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1296 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0); in em28xx_dvb_init()
1303 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_h5_drxk, &dev->i2c_adap[dev->def_i2c_bus]); in em28xx_dvb_init()
1304 if (!dvb->fe[0]) { in em28xx_dvb_init()
1309 dvb->fe[0]->sec_priv = dvb; in em28xx_dvb_init()
1310 sema_init(&dvb->pll_mutex, 1); in em28xx_dvb_init()
1311 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl; in em28xx_dvb_init()
1312 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl; in em28xx_dvb_init()
1315 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1316 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1); in em28xx_dvb_init()
1317 if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], 0x60)) { in em28xx_dvb_init()
1321 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1322 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0); in em28xx_dvb_init()
1326 dvb->fe[0] = dvb_attach(mb86a20s_attach, in em28xx_dvb_init()
1329 if (dvb->fe[0] != NULL) in em28xx_dvb_init()
1330 dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1336 dvb->fe[0] = dvb_attach(tda10071_attach, in em28xx_dvb_init()
1340 if (dvb->fe[0]) in em28xx_dvb_init()
1341 dvb_attach(a8293_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], in em28xx_dvb_init()
1347 dvb->fe[0] = dvb_attach(drxk_attach, &maxmedia_ub425_tc_drxk, in em28xx_dvb_init()
1350 if (dvb->fe[0]) { in em28xx_dvb_init()
1352 dvb->fe[0]->ops.i2c_gate_ctrl = NULL; in em28xx_dvb_init()
1355 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1358 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1369 dvb->fe[0] = dvb_attach(drxk_attach, &pctv_520e_drxk, in em28xx_dvb_init()
1372 if (dvb->fe[0]) { in em28xx_dvb_init()
1374 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1377 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1388 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk, in em28xx_dvb_init()
1390 if (!dvb->fe[0]) { in em28xx_dvb_init()
1396 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1407 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk, in em28xx_dvb_init()
1409 if (!dvb->fe[0]) { in em28xx_dvb_init()
1415 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1423 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1426 if (!dvb->fe[0]) { in em28xx_dvb_init()
1432 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1449 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1452 if (!dvb->fe[0]) { in em28xx_dvb_init()
1458 kworld_ub435q_v3_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1462 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1469 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1474 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1478 dvb->fe[0] = dvb_attach(drx39xxj_attach, &dev->i2c_adap[dev->def_i2c_bus]); in em28xx_dvb_init()
1479 if (dvb->fe[0] != NULL) { in em28xx_dvb_init()
1480 dvb->fe[0] = dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1483 if (!dvb->fe[0]) { in em28xx_dvb_init()
1500 dvb->fe[0] = dvb_attach(m88ds3103_attach, in em28xx_dvb_init()
1504 if (dvb->fe[0] == NULL) { in em28xx_dvb_init()
1510 ts2020_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1517 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1524 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1530 dvb->fe[0]->ops.read_signal_strength = in em28xx_dvb_init()
1531 dvb->fe[0]->ops.tuner_ops.get_rf_strength; in em28xx_dvb_init()
1534 if (!dvb_attach(a8293_attach, dvb->fe[0], in em28xx_dvb_init()
1539 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1544 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1558 si2168_config.fe = &dvb->fe[0]; in em28xx_dvb_init()
1577 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1581 si2157_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1589 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1590 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1597 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1598 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1603 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1604 dvb->fe[0]->ops.set_lna = em28xx_pctv_292e_set_lna; in em28xx_dvb_init()
1618 si2168_config.fe = &dvb->fe[0]; in em28xx_dvb_init()
1637 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1641 si2157_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1649 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1650 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1657 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1658 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1663 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1671 if (NULL == dvb->fe[0]) { in em28xx_dvb_init()
1677 dvb->fe[0]->callback = em28xx_tuner_callback; in em28xx_dvb_init()
1678 if (dvb->fe[1]) in em28xx_dvb_init()
1679 dvb->fe[1]->callback = em28xx_tuner_callback; in em28xx_dvb_init()
1682 result = em28xx_register_dvb(dvb, THIS_MODULE, dev, &dev->udev->dev); in em28xx_dvb_init()
1697 kfree(dvb); in em28xx_dvb_init()
1698 dev->dvb = NULL; in em28xx_dvb_init()
1711 struct em28xx_dvb *dvb; in em28xx_dvb_fini() local
1724 if (!dev->dvb) in em28xx_dvb_fini()
1729 dvb = dev->dvb; in em28xx_dvb_fini()
1730 client = dvb->i2c_client_tuner; in em28xx_dvb_fini()
1737 if (dvb->fe[0]) { in em28xx_dvb_fini()
1738 prevent_sleep(&dvb->fe[0]->ops); in em28xx_dvb_fini()
1739 dvb->fe[0]->exit = DVB_FE_DEVICE_REMOVED; in em28xx_dvb_fini()
1741 if (dvb->fe[1]) { in em28xx_dvb_fini()
1742 prevent_sleep(&dvb->fe[1]->ops); in em28xx_dvb_fini()
1743 dvb->fe[1]->exit = DVB_FE_DEVICE_REMOVED; in em28xx_dvb_fini()
1754 client = dvb->i2c_client_demod; in em28xx_dvb_fini()
1760 em28xx_unregister_dvb(dvb); in em28xx_dvb_fini()
1761 kfree(dvb); in em28xx_dvb_fini()
1762 dev->dvb = NULL; in em28xx_dvb_fini()
1779 if (dev->dvb) { in em28xx_dvb_suspend()
1780 struct em28xx_dvb *dvb = dev->dvb; in em28xx_dvb_suspend() local
1782 if (dvb->fe[0]) { in em28xx_dvb_suspend()
1783 ret = dvb_frontend_suspend(dvb->fe[0]); in em28xx_dvb_suspend()
1786 if (dvb->fe[1]) { in em28xx_dvb_suspend()
1787 dvb_frontend_suspend(dvb->fe[1]); in em28xx_dvb_suspend()
1806 if (dev->dvb) { in em28xx_dvb_resume()
1807 struct em28xx_dvb *dvb = dev->dvb; in em28xx_dvb_resume() local
1809 if (dvb->fe[0]) { in em28xx_dvb_resume()
1810 ret = dvb_frontend_resume(dvb->fe[0]); in em28xx_dvb_resume()
1814 if (dvb->fe[1]) { in em28xx_dvb_resume()
1815 ret = dvb_frontend_resume(dvb->fe[1]); in em28xx_dvb_resume()