Lines Matching refs:dvb

16 // Based on cx88-dvb, saa7134-dvb and videobuf-dvb originally written by:
70 MODULE_PARM_DESC(debug, "enable debug messages [dvb]");
77 "dvb: " fmt, ## arg); \
173 dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer,
184 dvb_dmx_swfilter(&dev->dvb->demux,
194 static int em28xx_start_streaming(struct em28xx_dvb *dvb)
197 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv;
238 static int em28xx_stop_streaming(struct em28xx_dvb *dvb)
240 struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv;
251 struct em28xx_dvb *dvb = demux->priv;
257 mutex_lock(&dvb->lock);
258 dvb->nfeeds++;
259 rc = dvb->nfeeds;
261 if (dvb->nfeeds == 1) {
262 ret = em28xx_start_streaming(dvb);
267 mutex_unlock(&dvb->lock);
274 struct em28xx_dvb *dvb = demux->priv;
277 mutex_lock(&dvb->lock);
278 dvb->nfeeds--;
280 if (!dvb->nfeeds)
281 err = em28xx_stop_streaming(dvb);
283 mutex_unlock(&dvb->lock);
290 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv;
404 .microcode_name = "dvb-usb-terratec-h5-drxk.fw",
412 .microcode_name = "dvb-usb-hauppauge-hvr930c-drxk.fw",
421 .microcode_name = "dvb-usb-terratec-htc-stick-drxk.fw",
434 .microcode_name = "dvb-demod-drxk-01.fw",
442 .microcode_name = "dvb-demod-drxk-pctv.fw",
451 struct em28xx_dvb *dvb = fe->sec_priv;
454 if (!dvb)
458 down(&dvb->pll_mutex);
459 status = dvb->gate_ctrl(fe, 1);
461 status = dvb->gate_ctrl(fe, 0);
462 up(&dvb->pll_mutex);
728 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv;
731 struct em28xx_dvb *dvb = dev->dvb;
740 ret = gpio_request_one(dvb->lna_gpio, flags, NULL);
744 gpio_free(dvb->lna_gpio);
757 struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv;
842 dev->dvb->i2c_client_demod->addr = 0x14;
844 i2c_master_send(dev->dvb->i2c_client_demod,
847 dev->dvb->i2c_client_demod->addr = 0x15;
849 i2c_master_send(dev->dvb->i2c_client_demod, regs2[i].r,
952 if (!dev->dvb->fe[0]) {
954 "dvb frontend not attached. Can't attach xc3028\n");
958 fe = dvb_attach(xc2028_attach, dev->dvb->fe[0], &cfg);
961 dvb_frontend_detach(dev->dvb->fe[0]);
962 dev->dvb->fe[0] = NULL;
973 static int em28xx_register_dvb(struct em28xx_dvb *dvb, struct module *module,
979 mutex_init(&dvb->lock);
982 result = dvb_register_adapter(&dvb->adapter,
992 dvb->adapter.mdev = dev->media_dev;
996 dvb->fe[0]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl;
997 if (dvb->fe[1])
998 dvb->fe[1]->ops.ts_bus_ctrl = em28xx_dvb_bus_ctrl;
1000 dvb->adapter.priv = &dev->i2c_bus[dev->def_i2c_bus];
1003 result = dvb_register_frontend(&dvb->adapter, dvb->fe[0]);
1012 if (dvb->fe[1]) {
1013 result = dvb_register_frontend(&dvb->adapter, dvb->fe[1]);
1023 dvb->demux.dmx.capabilities =
1026 dvb->demux.priv = dvb;
1027 dvb->demux.filternum = 256;
1028 dvb->demux.feednum = 256;
1029 dvb->demux.start_feed = em28xx_start_feed;
1030 dvb->demux.stop_feed = em28xx_stop_feed;
1032 result = dvb_dmx_init(&dvb->demux);
1040 dvb->dmxdev.filternum = 256;
1041 dvb->dmxdev.demux = &dvb->demux.dmx;
1042 dvb->dmxdev.capabilities = 0;
1043 result = dvb_dmxdev_init(&dvb->dmxdev, &dvb->adapter);
1051 dvb->fe_hw.source = DMX_FRONTEND_0;
1052 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_hw);
1060 dvb->fe_mem.source = DMX_MEMORY_FE;
1061 result = dvb->demux.dmx.add_frontend(&dvb->demux.dmx, &dvb->fe_mem);
1069 result = dvb->demux.dmx.connect_frontend(&dvb->demux.dmx, &dvb->fe_hw);
1078 dvb_net_init(&dvb->adapter, &dvb->net, &dvb->demux.dmx);
1084 result = dvb_create_media_graph(&dvb->adapter, create_rf_connector);
1091 dvb_net_release(&dvb->net);
1093 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
1095 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw);
1097 dvb_dmxdev_release(&dvb->dmxdev);
1099 dvb_dmx_release(&dvb->demux);
1101 if (dvb->fe[1])
1102 dvb_unregister_frontend(dvb->fe[1]);
1103 dvb_unregister_frontend(dvb->fe[0]);
1105 if (dvb->fe[1])
1106 dvb_frontend_detach(dvb->fe[1]);
1108 dvb_frontend_detach(dvb->fe[0]);
1109 dvb_unregister_adapter(&dvb->adapter);
1114 static void em28xx_unregister_dvb(struct em28xx_dvb *dvb)
1116 dvb_net_release(&dvb->net);
1117 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
1118 dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_hw);
1119 dvb_dmxdev_release(&dvb->dmxdev);
1120 dvb_dmx_release(&dvb->demux);
1121 if (dvb->fe[1])
1122 dvb_unregister_frontend(dvb->fe[1]);
1123 dvb_unregister_frontend(dvb->fe[0]);
1124 if (dvb->fe[1] && !dvb->dont_attach_fe1)
1125 dvb_frontend_detach(dvb->fe[1]);
1126 dvb_frontend_detach(dvb->fe[0]);
1127 dvb_unregister_adapter(&dvb->adapter);
1132 struct em28xx_dvb *dvb = dev->dvb;
1143 dvb->i2c_client_demod = dvb_module_probe("tda10071", "tda10071_cx24118",
1146 if (!dvb->i2c_client_demod)
1149 dvb->fe[0] = tda10071_pdata.get_dvb_frontend(dvb->i2c_client_demod);
1152 a8293_pdata.dvb_frontend = dvb->fe[0];
1154 dvb->i2c_client_sec = dvb_module_probe("a8293", NULL,
1157 if (!dvb->i2c_client_sec) {
1158 dvb_module_release(dvb->i2c_client_demod);
1167 struct em28xx_dvb *dvb = dev->dvb;
1181 dvb->i2c_client_demod = dvb_module_probe("m88ds3103", NULL,
1184 if (!dvb->i2c_client_demod)
1187 dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod);
1188 i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod);
1191 ts2020_config.fe = dvb->fe[0];
1193 dvb->i2c_client_tuner = dvb_module_probe("ts2020", "ts2022",
1196 if (!dvb->i2c_client_tuner) {
1197 dvb_module_release(dvb->i2c_client_demod);
1202 dvb->fe[0]->ops.read_signal_strength =
1203 dvb->fe[0]->ops.tuner_ops.get_rf_strength;
1206 a8293_pdata.dvb_frontend = dvb->fe[0];
1213 dvb->i2c_client_sec = dvb_module_probe("a8293", NULL,
1216 if (!dvb->i2c_client_sec) {
1217 dvb_module_release(dvb->i2c_client_tuner);
1218 dvb_module_release(dvb->i2c_client_demod);
1227 struct em28xx_dvb *dvb = dev->dvb;
1242 dvb->i2c_client_demod = dvb_module_probe("m88ds3103", "m88ds3103b",
1246 if (!dvb->i2c_client_demod)
1249 dvb->fe[0] = m88ds3103_pdata.get_dvb_frontend(dvb->i2c_client_demod);
1250 i2c_adapter = m88ds3103_pdata.get_i2c_adapter(dvb->i2c_client_demod);
1253 ts2020_config.fe = dvb->fe[0];
1254 dvb->i2c_client_tuner = dvb_module_probe("ts2020", "ts2022",
1257 if (!dvb->i2c_client_tuner) {
1258 dvb_module_release(dvb->i2c_client_demod);
1263 dvb->fe[0]->ops.read_signal_strength =
1264 dvb->fe[0]->ops.tuner_ops.get_rf_strength;
1267 a8293_pdata.dvb_frontend = dvb->fe[0];
1268 dvb->i2c_client_sec = dvb_module_probe("a8293", NULL,
1271 if (!dvb->i2c_client_sec) {
1272 dvb_module_release(dvb->i2c_client_tuner);
1273 dvb_module_release(dvb->i2c_client_demod);
1282 struct em28xx_dvb *dvb = dev->dvb;
1289 si2168_config.fe = &dvb->fe[0];
1293 dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
1296 if (!dvb->i2c_client_demod)
1300 si2157_config.fe = dvb->fe[0];
1305 dvb->i2c_client_tuner = dvb_module_probe("si2157", NULL,
1308 if (!dvb->i2c_client_tuner) {
1309 dvb_module_release(dvb->i2c_client_demod);
1312 dvb->fe[0]->ops.set_lna = em28xx_pctv_292e_set_lna;
1319 struct em28xx_dvb *dvb = dev->dvb;
1326 si2168_config.fe = &dvb->fe[0];
1329 dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
1332 if (!dvb->i2c_client_demod)
1337 si2157_config.fe = dvb->fe[0];
1342 dvb->i2c_client_tuner = dvb_module_probe("si2157", "si2146",
1345 if (!dvb->i2c_client_tuner) {
1346 dvb_module_release(dvb->i2c_client_demod);
1355 struct em28xx_dvb *dvb = dev->dvb;
1360 dvb->i2c_client_demod = dvb_module_probe("tc90522", "tc90522sat",
1363 if (!dvb->i2c_client_demod)
1370 dvb->i2c_client_tuner = dvb_module_probe("qm1d1c0042", NULL,
1373 if (!dvb->i2c_client_tuner) {
1374 dvb_module_release(dvb->i2c_client_demod);
1378 dvb->fe[0] = tc90522_config.fe;
1386 struct em28xx_dvb *dvb = dev->dvb;
1394 si2168_config.fe = &dvb->fe[0];
1399 dvb->i2c_client_demod = dvb_module_probe("si2168", NULL,
1402 if (!dvb->i2c_client_demod)
1407 si2157_config.fe = dvb->fe[0];
1414 dvb->i2c_client_tuner = dvb_module_probe("si2157", NULL,
1417 if (!dvb->i2c_client_tuner) {
1418 dvb_module_release(dvb->i2c_client_demod);
1427 struct em28xx_dvb *dvb = dev->dvb;
1435 lgdt3306a_config.fe = &dvb->fe[0];
1439 dvb->i2c_client_demod = dvb_module_probe("lgdt3306a", NULL,
1442 if (!dvb->i2c_client_demod)
1446 si2157_config.fe = dvb->fe[0];
1454 dvb->i2c_client_tuner = dvb_module_probe("si2157", NULL,
1457 if (!dvb->i2c_client_tuner) {
1458 dvb_module_release(dvb->i2c_client_demod);
1467 struct em28xx_dvb *dvb = dev->dvb;
1473 mxl692_config.fe = &dvb->fe[0];
1476 dvb->i2c_client_demod = dvb_module_probe("mxl692", NULL,
1479 if (!dvb->i2c_client_demod)
1488 struct em28xx_dvb *dvb;
1503 dvb = kzalloc(sizeof(*dvb), GFP_KERNEL);
1504 if (!dvb)
1507 dev->dvb = dvb;
1508 dvb->fe[0] = NULL;
1509 dvb->fe[1] = NULL;
1528 kfree(dvb);
1529 dev->dvb = NULL;
1538 dvb->fe[0] = dvb_attach(s921_attach,
1542 if (!dvb->fe[0]) {
1552 dvb->fe[0] = dvb_attach(lgdt330x_attach,
1562 dvb->fe[0] = dvb_attach(zl10353_attach,
1574 dvb->fe[0] = dvb_attach(zl10353_attach,
1591 dvb->fe[0] = dvb_attach(zl10353_attach,
1594 if (!dvb->fe[0])
1595 dvb->fe[0] = dvb_attach(mt352_attach,
1605 dvb->fe[0] = dvb_attach(zl10353_attach,
1608 if (dvb->fe[0]) {
1609 dvb_attach(mt2060_attach, dvb->fe[0],
1615 dvb->fe[0] = dvb_attach(zl10353_attach,
1618 if (dvb->fe[0])
1619 dvb_attach(qt1010_attach, dvb->fe[0],
1625 dvb->fe[0] = dvb_attach(s5h1409_attach,
1634 dvb->fe[0] = dvb_attach(lgdt330x_attach,
1638 if (dvb->fe[0]) {
1639 if (!dvb_attach(simple_tuner_attach, dvb->fe[0],
1649 dvb->fe[0] = dvb_attach(drxd_attach, &em28xx_drxd, NULL,
1659 dvb->fe[0] = dvb_attach(tda10023_attach,
1663 if (dvb->fe[0]) {
1664 if (!dvb_attach(simple_tuner_attach, dvb->fe[0],
1673 dvb->fe[0] = dvb_attach(lgdt3305_attach,
1676 if (!dvb->fe[0]) {
1680 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1683 dvb_frontend_detach(dvb->fe[0]);
1690 dvb->lna_gpio = CXD2820R_GPIO_E | CXD2820R_GPIO_O |
1692 dvb->fe[0] = dvb_attach(cxd2820r_attach,
1695 &dvb->lna_gpio);
1696 if (dvb->fe[0]) {
1699 dvb->fe[0],
1703 dvb_frontend_detach(dvb->fe[0]);
1710 result = gpio_request_one(dvb->lna_gpio,
1717 gpio_free(dvb->lna_gpio);
1721 dvb->fe[0]->ops.set_lna = em28xx_pctv_290e_set_lna;
1731 dvb->fe[0] = dvb_attach(drxk_attach,
1734 if (!dvb->fe[0]) {
1739 dvb->fe[0]->sec_priv = dvb;
1740 sema_init(&dvb->pll_mutex, 1);
1741 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl;
1742 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
1748 if (dvb->fe[0]->ops.i2c_gate_ctrl)
1749 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
1750 if (!dvb_attach(xc5000_attach, dvb->fe[0],
1755 if (dvb->fe[0]->ops.i2c_gate_ctrl)
1756 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0);
1763 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_h5_drxk,
1765 if (!dvb->fe[0]) {
1770 dvb->fe[0]->sec_priv = dvb;
1771 sema_init(&dvb->pll_mutex, 1);
1772 dvb->gate_ctrl = dvb->fe[0]->ops.i2c_gate_ctrl;
1773 dvb->fe[0]->ops.i2c_gate_ctrl = drxk_gate_ctrl;
1776 if (dvb->fe[0]->ops.i2c_gate_ctrl)
1777 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 1);
1778 if (!dvb_attach(tda18271c2dd_attach, dvb->fe[0],
1783 if (dvb->fe[0]->ops.i2c_gate_ctrl)
1784 dvb->fe[0]->ops.i2c_gate_ctrl(dvb->fe[0], 0);
1788 dvb->fe[0] = dvb_attach(mb86a20s_attach,
1791 if (dvb->fe[0])
1792 dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1804 dvb->fe[0] = dvb_attach(drxk_attach, &maxmedia_ub425_tc_drxk,
1807 if (dvb->fe[0]) {
1809 dvb->fe[0]->ops.i2c_gate_ctrl = NULL;
1812 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1815 dvb_frontend_detach(dvb->fe[0]);
1826 dvb->fe[0] = dvb_attach(drxk_attach, &pctv_520e_drxk,
1829 if (dvb->fe[0]) {
1831 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1834 dvb_frontend_detach(dvb->fe[0]);
1846 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk,
1848 if (!dvb->fe[0]) {
1854 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1865 dvb->fe[0] = dvb_attach(drxk_attach, &terratec_htc_stick_drxk,
1867 if (!dvb->fe[0]) {
1873 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1881 dvb->fe[0] = dvb_attach(lgdt3305_attach,
1884 if (!dvb->fe[0]) {
1890 if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60,
1901 dvb->fe[0] = dvb_attach(lgdt3305_attach,
1904 if (!dvb->fe[0]) {
1910 kworld_ub435q_v3_config.fe = dvb->fe[0];
1912 dvb->i2c_client_tuner = dvb_module_probe("tda18212", NULL,
1915 if (!dvb->i2c_client_tuner) {
1916 dvb_frontend_detach(dvb->fe[0]);
1923 dvb->fe[0] = dvb_attach(drx39xxj_attach,
1925 if (dvb->fe[0]) {
1926 dvb->fe[0] = dvb_attach(tda18271_attach, dvb->fe[0],
1930 if (!dvb->fe[0]) {
1981 if (!dvb->fe[0]) {
1987 dvb->fe[0]->callback = em28xx_tuner_callback;
1988 if (dvb->fe[1])
1989 dvb->fe[1]->callback = em28xx_tuner_callback;
1992 result = em28xx_register_dvb(dvb, THIS_MODULE, dev, &dev->intf->dev);
2016 kfree(dvb);
2017 dev->dvb = NULL;
2030 struct em28xx_dvb *dvb;
2042 if (!dev->dvb)
2047 dvb = dev->dvb;
2056 if (dvb->fe[0]) {
2057 prevent_sleep(&dvb->fe[0]->ops);
2058 dvb->fe[0]->exit = DVB_FE_DEVICE_REMOVED;
2060 if (dvb->fe[1]) {
2061 prevent_sleep(&dvb->fe[1]->ops);
2062 dvb->fe[1]->exit = DVB_FE_DEVICE_REMOVED;
2066 em28xx_unregister_dvb(dvb);
2069 dvb_module_release(dvb->i2c_client_sec);
2070 dvb_module_release(dvb->i2c_client_tuner);
2071 dvb_module_release(dvb->i2c_client_demod);
2073 kfree(dvb);
2074 dev->dvb = NULL;
2091 if (dev->dvb) {
2092 struct em28xx_dvb *dvb = dev->dvb;
2094 if (dvb->fe[0]) {
2095 ret = dvb_frontend_suspend(dvb->fe[0]);
2098 if (dvb->fe[1]) {
2099 dvb_frontend_suspend(dvb->fe[1]);
2118 if (dev->dvb) {
2119 struct em28xx_dvb *dvb = dev->dvb;
2121 if (dvb->fe[0]) {
2122 ret = dvb_frontend_resume(dvb->fe[0]);
2126 if (dvb->fe[1]) {
2127 ret = dvb_frontend_resume(dvb->fe[1]);
2137 .name = "Em28xx dvb Extension",