Lines Matching refs:dvb
170 dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer, in em28xx_dvb_urb_data_copy()
181 dvb_dmx_swfilter(&dev->dvb->demux, in em28xx_dvb_urb_data_copy()
191 static int em28xx_start_streaming(struct em28xx_dvb *dvb) in em28xx_start_streaming() argument
194 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv; in em28xx_start_streaming()
232 static int em28xx_stop_streaming(struct em28xx_dvb *dvb) in em28xx_stop_streaming() argument
234 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv; in em28xx_stop_streaming()
245 struct em28xx_dvb *dvb = demux->priv; in em28xx_start_feed() local
251 mutex_lock(&dvb->lock); in em28xx_start_feed()
252 dvb->nfeeds++; in em28xx_start_feed()
253 rc = dvb->nfeeds; in em28xx_start_feed()
255 if (dvb->nfeeds == 1) { in em28xx_start_feed()
256 ret = em28xx_start_streaming(dvb); in em28xx_start_feed()
261 mutex_unlock(&dvb->lock); in em28xx_start_feed()
268 struct em28xx_dvb *dvb = demux->priv; in em28xx_stop_feed() local
271 mutex_lock(&dvb->lock); in em28xx_stop_feed()
272 dvb->nfeeds--; in em28xx_stop_feed()
274 if (0 == dvb->nfeeds) in em28xx_stop_feed()
275 err = em28xx_stop_streaming(dvb); in em28xx_stop_feed()
277 mutex_unlock(&dvb->lock); in em28xx_stop_feed()
285 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_dvb_bus_ctrl()
447 struct em28xx_dvb *dvb = fe->sec_priv; in drxk_gate_ctrl() local
450 if (!dvb) in drxk_gate_ctrl()
454 down(&dvb->pll_mutex); in drxk_gate_ctrl()
455 status = dvb->gate_ctrl(fe, 1); in drxk_gate_ctrl()
457 status = dvb->gate_ctrl(fe, 0); in drxk_gate_ctrl()
458 up(&dvb->pll_mutex); in drxk_gate_ctrl()
720 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_pctv_290e_set_lna()
723 struct em28xx_dvb *dvb = dev->dvb; in em28xx_pctv_290e_set_lna() local
732 ret = gpio_request_one(dvb->lna_gpio, flags, NULL); in em28xx_pctv_290e_set_lna()
736 gpio_free(dvb->lna_gpio); in em28xx_pctv_290e_set_lna()
749 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; in em28xx_pctv_292e_set_lna()
878 if (!dev->dvb->fe[0]) { in em28xx_attach_xc3028()
884 fe = dvb_attach(xc2028_attach, dev->dvb->fe[0], &cfg); in em28xx_attach_xc3028()
887 dvb_frontend_detach(dev->dvb->fe[0]); in em28xx_attach_xc3028()
888 dev->dvb->fe[0] = NULL; in em28xx_attach_xc3028()
899 static int em28xx_register_dvb(struct em28xx_dvb *dvb, struct module *module, in em28xx_register_dvb() argument
904 mutex_init(&dvb->lock); in em28xx_register_dvb()
907 result = dvb_register_adapter(&dvb->adapter, dev->name, module, device, in em28xx_register_dvb()
916 dvb->fe[0]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl; in em28xx_register_dvb()
917 if (dvb->fe[1]) in em28xx_register_dvb()
918 dvb->fe[1]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl; in em28xx_register_dvb()
920 dvb->adapter.priv = &dev->i2c_bus[dev->def_i2c_bus]; in em28xx_register_dvb()
923 result = dvb_register_frontend(&dvb->adapter, dvb->fe[0]); in em28xx_register_dvb()
931 if (dvb->fe[1]) { in em28xx_register_dvb()
932 result = dvb_register_frontend(&dvb->adapter, dvb->fe[1]); in em28xx_register_dvb()
941 dvb->demux.dmx.capabilities = in em28xx_register_dvb()
944 dvb->demux.priv = dvb; in em28xx_register_dvb()
945 dvb->demux.filternum = 256; in em28xx_register_dvb()
946 dvb->demux.feednum = 256; in em28xx_register_dvb()
947 dvb->demux.start_feed = em28xx_start_feed; in em28xx_register_dvb()
948 dvb->demux.stop_feed = em28xx_stop_feed; in em28xx_register_dvb()
950 result = dvb_dmx_init(&dvb->demux); in em28xx_register_dvb()
957 dvb->dmxdev.filternum = 256; in em28xx_register_dvb()
958 dvb->dmxdev.demux = &dvb->demux.dmx; in em28xx_register_dvb()
959 dvb->dmxdev.capabilities = 0; in em28xx_register_dvb()
960 result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter); in em28xx_register_dvb()
967 dvb->fe_hw.source = DMX_FRONTEND_0; in em28xx_register_dvb()
968 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
975 dvb->fe_mem.source = DMX_MEMORY_FE; in em28xx_register_dvb()
976 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_register_dvb()
983 result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
991 dvb_net_init(&dvb->adapter, &dvb->net, &dvb->demux.dmx); in em28xx_register_dvb()
995 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_register_dvb()
997 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_register_dvb()
999 dvb_dmxdev_release(&dvb->dmxdev); in em28xx_register_dvb()
1001 dvb_dmx_release(&dvb->demux); in em28xx_register_dvb()
1003 if (dvb->fe[1]) in em28xx_register_dvb()
1004 dvb_unregister_frontend(dvb->fe[1]); in em28xx_register_dvb()
1005 dvb_unregister_frontend(dvb->fe[0]); in em28xx_register_dvb()
1007 if (dvb->fe[1]) in em28xx_register_dvb()
1008 dvb_frontend_detach(dvb->fe[1]); in em28xx_register_dvb()
1010 dvb_frontend_detach(dvb->fe[0]); in em28xx_register_dvb()
1011 dvb_unregister_adapter(&dvb->adapter); in em28xx_register_dvb()
1016 static void em28xx_unregister_dvb(struct em28xx_dvb *dvb) in em28xx_unregister_dvb() argument
1018 dvb_net_release(&dvb->net); in em28xx_unregister_dvb()
1019 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem); in em28xx_unregister_dvb()
1020 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw); in em28xx_unregister_dvb()
1021 dvb_dmxdev_release(&dvb->dmxdev); in em28xx_unregister_dvb()
1022 dvb_dmx_release(&dvb->demux); in em28xx_unregister_dvb()
1023 if (dvb->fe[1]) in em28xx_unregister_dvb()
1024 dvb_unregister_frontend(dvb->fe[1]); in em28xx_unregister_dvb()
1025 dvb_unregister_frontend(dvb->fe[0]); in em28xx_unregister_dvb()
1026 if (dvb->fe[1] && !dvb->dont_attach_fe1) in em28xx_unregister_dvb()
1027 dvb_frontend_detach(dvb->fe[1]); in em28xx_unregister_dvb()
1028 dvb_frontend_detach(dvb->fe[0]); in em28xx_unregister_dvb()
1029 dvb_unregister_adapter(&dvb->adapter); in em28xx_unregister_dvb()
1035 struct em28xx_dvb *dvb; in em28xx_dvb_init() local
1049 dvb = kzalloc(sizeof(struct em28xx_dvb), GFP_KERNEL); in em28xx_dvb_init()
1050 if (dvb == NULL) { in em28xx_dvb_init()
1054 dev->dvb = dvb; in em28xx_dvb_init()
1055 dvb->fe[0] = dvb->fe[1] = NULL; in em28xx_dvb_init()
1073 kfree(dvb); in em28xx_dvb_init()
1074 dev->dvb = NULL; in em28xx_dvb_init()
1083 dvb->fe[0] = dvb_attach(s921_attach, in em28xx_dvb_init()
1086 if (!dvb->fe[0]) { in em28xx_dvb_init()
1096 dvb->fe[0] = dvb_attach(lgdt330x_attach, in em28xx_dvb_init()
1105 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1116 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1129 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1132 if (dvb->fe[0] == NULL) { in em28xx_dvb_init()
1135 dvb->fe[0] = dvb_attach(mt352_attach, in em28xx_dvb_init()
1146 dvb->fe[0] = dvb_attach(zl10353_attach, in em28xx_dvb_init()
1149 if (dvb->fe[0] != NULL) in em28xx_dvb_init()
1150 dvb_attach(qt1010_attach, dvb->fe[0], in em28xx_dvb_init()
1155 dvb->fe[0] = dvb_attach(s5h1409_attach, in em28xx_dvb_init()
1164 dvb->fe[0] = dvb_attach(lgdt330x_attach, in em28xx_dvb_init()
1167 if (dvb->fe[0] != NULL) { in em28xx_dvb_init()
1168 if (!dvb_attach(simple_tuner_attach, dvb->fe[0], in em28xx_dvb_init()
1178 dvb->fe[0] = dvb_attach(drxd_attach, &em28xx_drxd, NULL, in em28xx_dvb_init()
1187 dvb->fe[0] = dvb_attach(tda10023_attach, in em28xx_dvb_init()
1190 if (dvb->fe[0]) { in em28xx_dvb_init()
1191 if (!dvb_attach(simple_tuner_attach, dvb->fe[0], in em28xx_dvb_init()
1200 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1203 if (!dvb->fe[0]) { in em28xx_dvb_init()
1207 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1210 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1217 dvb->lna_gpio = CXD2820R_GPIO_E | CXD2820R_GPIO_O | in em28xx_dvb_init()
1219 dvb->fe[0] = dvb_attach(cxd2820r_attach, in em28xx_dvb_init()
1222 &dvb->lna_gpio); in em28xx_dvb_init()
1223 if (dvb->fe[0]) { in em28xx_dvb_init()
1226 dvb->fe[0], in em28xx_dvb_init()
1231 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1238 result = gpio_request_one(dvb->lna_gpio, in em28xx_dvb_init()
1244 gpio_free(dvb->lna_gpio); in em28xx_dvb_init()
1248 dvb->fe[0]->ops.set_lna = em28xx_pctv_290e_set_lna; in em28xx_dvb_init()
1258 dvb->fe[0] = dvb_attach(drxk_attach, in em28xx_dvb_init()
1260 if (!dvb->fe[0]) { in em28xx_dvb_init()
1265 dvb->fe[0]->sec_priv = dvb; in em28xx_dvb_init()
1266 sema_init(&dvb->pll_mutex, 1); in em28xx_dvb_init()
1267 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl; in em28xx_dvb_init()
1268 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl; in em28xx_dvb_init()
1275 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1276 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1); in em28xx_dvb_init()
1277 if (!dvb_attach(xc5000_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], in em28xx_dvb_init()
1282 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1283 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0); in em28xx_dvb_init()
1290 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_h5_drxk, &dev->i2c_adap[dev->def_i2c_bus]); in em28xx_dvb_init()
1291 if (!dvb->fe[0]) { in em28xx_dvb_init()
1296 dvb->fe[0]->sec_priv = dvb; in em28xx_dvb_init()
1297 sema_init(&dvb->pll_mutex, 1); in em28xx_dvb_init()
1298 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl; in em28xx_dvb_init()
1299 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl; in em28xx_dvb_init()
1302 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1303 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1); in em28xx_dvb_init()
1304 if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0], &dev->i2c_adap[dev->def_i2c_bus], 0x60)) { in em28xx_dvb_init()
1308 if (dvb->fe[0]->ops.i2c_gate_ctrl) in em28xx_dvb_init()
1309 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0); in em28xx_dvb_init()
1313 dvb->fe[0] = dvb_attach(mb86a20s_attach, in em28xx_dvb_init()
1316 if (dvb->fe[0] != NULL) in em28xx_dvb_init()
1317 dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1348 dvb->fe[0] = tda10071_pdata.get_dvb_frontend(client); in em28xx_dvb_init()
1349 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1352 a8293_pdata.dvb_frontend = dvb->fe[0]; in em28xx_dvb_init()
1360 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1361 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1367 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1368 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1372 dvb->i2c_client_sec = client; in em28xx_dvb_init()
1378 dvb->fe[0] = dvb_attach(drxk_attach, &maxmedia_ub425_tc_drxk, in em28xx_dvb_init()
1381 if (dvb->fe[0]) { in em28xx_dvb_init()
1383 dvb->fe[0]->ops.i2c_gate_ctrl = NULL; in em28xx_dvb_init()
1386 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1389 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1400 dvb->fe[0] = dvb_attach(drxk_attach, &pctv_520e_drxk, in em28xx_dvb_init()
1403 if (dvb->fe[0]) { in em28xx_dvb_init()
1405 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1408 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1419 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk, in em28xx_dvb_init()
1421 if (!dvb->fe[0]) { in em28xx_dvb_init()
1427 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1438 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk, in em28xx_dvb_init()
1440 if (!dvb->fe[0]) { in em28xx_dvb_init()
1446 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1454 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1457 if (!dvb->fe[0]) { in em28xx_dvb_init()
1463 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1480 dvb->fe[0] = dvb_attach(lgdt3305_attach, in em28xx_dvb_init()
1483 if (!dvb->fe[0]) { in em28xx_dvb_init()
1489 kworld_ub435q_v3_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1493 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1500 dvb_frontend_detach(dvb->fe[0]); in em28xx_dvb_init()
1505 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1509 dvb->fe[0] = dvb_attach(drx39xxj_attach, &dev->i2c_adap[dev->def_i2c_bus]); in em28xx_dvb_init()
1510 if (dvb->fe[0] != NULL) { in em28xx_dvb_init()
1511 dvb->fe[0] = dvb_attach(tda18271_attach, dvb->fe[0], 0x60, in em28xx_dvb_init()
1514 if (!dvb->fe[0]) { in em28xx_dvb_init()
1550 dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(client); in em28xx_dvb_init()
1552 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1555 ts2020_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1563 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1564 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1570 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1571 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1575 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1577 dvb->fe[0]->ops.read_signal_strength = in em28xx_dvb_init()
1578 dvb->fe[0]->ops.tuner_ops.get_rf_strength; in em28xx_dvb_init()
1581 a8293_pdata.dvb_frontend = dvb->fe[0]; in em28xx_dvb_init()
1589 module_put(dvb->i2c_client_tuner->dev.driver->owner); in em28xx_dvb_init()
1590 i2c_unregister_device(dvb->i2c_client_tuner); in em28xx_dvb_init()
1591 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1592 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1598 module_put(dvb->i2c_client_tuner->dev.driver->owner); in em28xx_dvb_init()
1599 i2c_unregister_device(dvb->i2c_client_tuner); in em28xx_dvb_init()
1600 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1601 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1605 dvb->i2c_client_sec = client; in em28xx_dvb_init()
1619 si2168_config.fe = &dvb->fe[0]; in em28xx_dvb_init()
1638 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1642 si2157_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1651 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1652 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1659 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1660 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1665 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1666 dvb->fe[0]->ops.set_lna = em28xx_pctv_292e_set_lna; in em28xx_dvb_init()
1680 si2168_config.fe = &dvb->fe[0]; in em28xx_dvb_init()
1699 dvb->i2c_client_demod = client; in em28xx_dvb_init()
1703 si2157_config.fe = dvb->fe[0]; in em28xx_dvb_init()
1712 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1713 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1720 module_put(dvb->i2c_client_demod->dev.driver->owner); in em28xx_dvb_init()
1721 i2c_unregister_device(dvb->i2c_client_demod); in em28xx_dvb_init()
1726 dvb->i2c_client_tuner = client; in em28xx_dvb_init()
1734 if (NULL == dvb->fe[0]) { in em28xx_dvb_init()
1740 dvb->fe[0]->callback = em28xx_tuner_callback; in em28xx_dvb_init()
1741 if (dvb->fe[1]) in em28xx_dvb_init()
1742 dvb->fe[1]->callback = em28xx_tuner_callback; in em28xx_dvb_init()
1745 result = em28xx_register_dvb(dvb, THIS_MODULE, dev, &dev->udev->dev); in em28xx_dvb_init()
1760 kfree(dvb); in em28xx_dvb_init()
1761 dev->dvb = NULL; in em28xx_dvb_init()
1774 struct em28xx_dvb *dvb; in em28xx_dvb_fini() local
1787 if (!dev->dvb) in em28xx_dvb_fini()
1792 dvb = dev->dvb; in em28xx_dvb_fini()
1799 if (dvb->fe[0]) { in em28xx_dvb_fini()
1800 prevent_sleep(&dvb->fe[0]->ops); in em28xx_dvb_fini()
1801 dvb->fe[0]->exit = DVB_FE_DEVICE_REMOVED; in em28xx_dvb_fini()
1803 if (dvb->fe[1]) { in em28xx_dvb_fini()
1804 prevent_sleep(&dvb->fe[1]->ops); in em28xx_dvb_fini()
1805 dvb->fe[1]->exit = DVB_FE_DEVICE_REMOVED; in em28xx_dvb_fini()
1810 client = dvb->i2c_client_sec; in em28xx_dvb_fini()
1817 client = dvb->i2c_client_tuner; in em28xx_dvb_fini()
1824 client = dvb->i2c_client_demod; in em28xx_dvb_fini()
1830 em28xx_unregister_dvb(dvb); in em28xx_dvb_fini()
1831 kfree(dvb); in em28xx_dvb_fini()
1832 dev->dvb = NULL; in em28xx_dvb_fini()
1849 if (dev->dvb) { in em28xx_dvb_suspend()
1850 struct em28xx_dvb *dvb = dev->dvb; in em28xx_dvb_suspend() local
1852 if (dvb->fe[0]) { in em28xx_dvb_suspend()
1853 ret = dvb_frontend_suspend(dvb->fe[0]); in em28xx_dvb_suspend()
1856 if (dvb->fe[1]) { in em28xx_dvb_suspend()
1857 dvb_frontend_suspend(dvb->fe[1]); in em28xx_dvb_suspend()
1876 if (dev->dvb) { in em28xx_dvb_resume()
1877 struct em28xx_dvb *dvb = dev->dvb; in em28xx_dvb_resume() local
1879 if (dvb->fe[0]) { in em28xx_dvb_resume()
1880 ret = dvb_frontend_resume(dvb->fe[0]); in em28xx_dvb_resume()
1884 if (dvb->fe[1]) { in em28xx_dvb_resume()
1885 ret = dvb_frontend_resume(dvb->fe[1]); in em28xx_dvb_resume()