Lines Matching +full:onoff +full:- +full:gpios

1 // SPDX-License-Identifier: GPL-2.0-or-later
18 #include <media/v4l2-common.h>
32 #include "tuner-simple.h"
45 #include "netup-eeprom.h"
46 #include "netup-init.h"
51 #include "cx23885-f300.h"
52 #include "altera-ci.h"
78 /* ------------------------------------------------------------------ */
86 /* ------------------------------------------------------------------ */
92 struct cx23885_tsport *port = q->drv_priv; in queue_setup()
94 port->ts_packet_size = 188 * 4; in queue_setup()
95 port->ts_packet_count = 32; in queue_setup()
97 sizes[0] = port->ts_packet_size * port->ts_packet_count; in queue_setup()
106 struct cx23885_tsport *port = vb->vb2_queue->drv_priv; in buffer_prepare()
116 struct cx23885_tsport *port = vb->vb2_queue->drv_priv; in buffer_finish()
117 struct cx23885_dev *dev = port->dev; in buffer_finish()
127 struct cx23885_tsport *port = vb->vb2_queue->drv_priv; in buffer_queue()
139 f = &port->frontends; in cx23885_dvb_gate_ctrl()
141 if (f->gate <= 1) /* undefined or fe0 */ in cx23885_dvb_gate_ctrl()
144 fe = vb2_dvb_get_frontend(f, f->gate); in cx23885_dvb_gate_ctrl()
146 if (fe && fe->dvb.frontend && fe->dvb.frontend->ops.i2c_gate_ctrl) in cx23885_dvb_gate_ctrl()
147 fe->dvb.frontend->ops.i2c_gate_ctrl(fe->dvb.frontend, open); in cx23885_dvb_gate_ctrl()
152 struct cx23885_tsport *port = q->drv_priv; in cx23885_start_streaming()
153 struct cx23885_dmaqueue *dmaq = &port->mpegq; in cx23885_start_streaming()
154 struct cx23885_buffer *buf = list_entry(dmaq->active.next, in cx23885_start_streaming()
163 struct cx23885_tsport *port = q->drv_priv; in cx23885_stop_streaming()
472 .clkmode = 3,/* 0-CLKI, 2-XTALI, else AUTO */
485 .gain = 8, /* +16 dB - maximum gain */
492 .gain = 8, /* +16 dB - maximum gain */
594 struct cx23885_tsport *port = fe->dvb->priv; in p8000_set_voltage()
595 struct cx23885_dev *dev = port->dev; in p8000_set_voltage()
609 struct cx23885_tsport *port = fe->dvb->priv; in dvbsky_t9580_set_voltage()
610 struct cx23885_dev *dev = port->dev; in dvbsky_t9580_set_voltage()
630 port->fe_set_voltage(fe, voltage); in dvbsky_t9580_set_voltage()
638 struct cx23885_tsport *port = fe->dvb->priv; in dvbsky_s952_portc_set_voltage()
639 struct cx23885_dev *dev = port->dev; in dvbsky_s952_portc_set_voltage()
658 return port->fe_set_voltage(fe, voltage); in dvbsky_s952_portc_set_voltage()
677 struct cx23885_dev *dev = port->dev; in cx23885_sp2_ci_ctrl()
682 mutex_lock(&dev->gpio_lock); in cx23885_sp2_ci_ctrl()
718 mutex_unlock(&dev->gpio_lock); in cx23885_sp2_ci_ctrl()
722 ret = -EREMOTEIO; in cx23885_sp2_ci_ctrl()
734 struct dtv_frontend_properties *p = &fe->dtv_property_cache; in cx23885_dvb_set_frontend()
735 struct cx23885_tsport *port = fe->dvb->priv; in cx23885_dvb_set_frontend()
736 struct cx23885_dev *dev = port->dev; in cx23885_dvb_set_frontend()
738 switch (dev->board) { in cx23885_dvb_set_frontend()
740 switch (p->modulation) { in cx23885_dvb_set_frontend()
760 if (port->set_frontend) in cx23885_dvb_set_frontend()
761 return port->set_frontend(fe); in cx23885_dvb_set_frontend()
769 port->set_frontend = fe->ops.set_frontend; in cx23885_set_frontend_hook()
770 fe->ops.set_frontend = cx23885_dvb_set_frontend; in cx23885_set_frontend_hook()
942 cx_clear(MC417_OEN, ALT_DATA);/* D0-D7 out */ in netup_altera_fpga_rw()
976 static int dib7070_tuner_reset(struct dvb_frontend *fe, int onoff) in dib7070_tuner_reset() argument
978 struct dib7000p_ops *dib7000p_ops = fe->sec_priv; in dib7070_tuner_reset()
980 return dib7000p_ops->set_gpio(fe, 8, 0, !onoff); in dib7070_tuner_reset()
983 static int dib7070_tuner_sleep(struct dvb_frontend *fe, int onoff) in dib7070_tuner_sleep() argument
1077 struct cx23885_dev *dev = port->dev; in dvb_register_ci_mac()
1081 fe0 = vb2_dvb_get_frontend(&port->frontends, 1); in dvb_register_ci_mac()
1083 return -EINVAL; in dvb_register_ci_mac()
1085 switch (dev->board) { in dvb_register_ci_mac()
1089 netup_get_card_info(&dev->i2c_bus[0].i2c_adap, &cinfo); in dvb_register_ci_mac()
1090 memcpy(port->frontends.adapter.proposed_mac, in dvb_register_ci_mac()
1091 cinfo.port[port->nr - 1].mac, 6); in dvb_register_ci_mac()
1092 pr_info("NetUP Dual DVB-S2 CI card port%d MAC=%pM\n", in dvb_register_ci_mac()
1093 port->nr, port->frontends.adapter.proposed_mac); in dvb_register_ci_mac()
1101 .adapter = &port->frontends.adapter,/* for CI */ in dvb_register_ci_mac()
1102 .demux = &fe0->dvb.demux,/* for hw pid filter */ in dvb_register_ci_mac()
1106 altera_ci_init(&netup_ci_cfg, port->nr); in dvb_register_ci_mac()
1112 if (port->nr != 1) in dvb_register_ci_mac()
1116 dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1; in dvb_register_ci_mac()
1117 tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom)); in dvb_register_ci_mac()
1119 memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6); in dvb_register_ci_mac()
1128 if (port->nr > 2) in dvb_register_ci_mac()
1132 dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1; in dvb_register_ci_mac()
1133 tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, in dvb_register_ci_mac()
1136 cx23885_boards[dev->board].name, port->nr, in dvb_register_ci_mac()
1137 eeprom + 0xc0 + (port->nr-1) * 8); in dvb_register_ci_mac()
1138 memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + in dvb_register_ci_mac()
1139 (port->nr-1) * 8, 6); in dvb_register_ci_mac()
1148 struct cx23885_i2c *i2c_bus = &dev->i2c_bus[0]; in dvb_register_ci_mac()
1152 sp2_config.dvb_adap = &port->frontends.adapter; in dvb_register_ci_mac()
1160 client_ci = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register_ci_mac()
1162 return -ENODEV; in dvb_register_ci_mac()
1163 if (!try_module_get(client_ci->dev.driver->owner)) { in dvb_register_ci_mac()
1165 return -ENODEV; in dvb_register_ci_mac()
1167 port->i2c_client_ci = client_ci; in dvb_register_ci_mac()
1169 if (port->nr != 1) in dvb_register_ci_mac()
1173 dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1; in dvb_register_ci_mac()
1174 tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, in dvb_register_ci_mac()
1177 cx23885_boards[dev->board].name, eeprom + 0xc0); in dvb_register_ci_mac()
1178 memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0, 6); in dvb_register_ci_mac()
1188 struct cx23885_dev *dev = port->dev; in dvb_register()
1208 fe0 = vb2_dvb_get_frontend(&port->frontends, 1); in dvb_register()
1210 return -EINVAL; in dvb_register()
1213 fe0->dvb.name = dev->name; in dvb_register()
1215 /* multi-frontend gate control is undefined or defaults to fe0 */ in dvb_register()
1216 port->frontends.gate = 0; in dvb_register()
1219 port->gate_ctrl = cx23885_dvb_gate_ctrl; in dvb_register()
1222 switch (dev->board) { in dvb_register()
1224 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1225 fe0->dvb.frontend = dvb_attach(s5h1409_attach, in dvb_register()
1227 &i2c_bus->i2c_adap); in dvb_register()
1228 if (fe0->dvb.frontend == NULL) in dvb_register()
1230 dvb_attach(mt2131_attach, fe0->dvb.frontend, in dvb_register()
1231 &i2c_bus->i2c_adap, in dvb_register()
1236 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1237 fe0->dvb.frontend = dvb_attach(lgdt3305_attach, in dvb_register()
1239 &i2c_bus->i2c_adap); in dvb_register()
1240 if (fe0->dvb.frontend == NULL) in dvb_register()
1242 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1243 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1245 if (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1275) in dvb_register()
1246 cx23885_set_frontend_hook(port, fe0->dvb.frontend); in dvb_register()
1250 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1251 fe0->dvb.frontend = dvb_attach(s5h1411_attach, in dvb_register()
1253 &i2c_bus->i2c_adap); in dvb_register()
1254 if (fe0->dvb.frontend == NULL) in dvb_register()
1257 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1258 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1261 tda18271_attach(&dev->ts1.analog_fe, in dvb_register()
1262 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1267 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1270 fe0->dvb.frontend = in dvb_register()
1273 &i2c_bus->i2c_adap); in dvb_register()
1274 if (fe0->dvb.frontend == NULL) in dvb_register()
1277 dvb_attach(tda829x_attach, fe0->dvb.frontend, in dvb_register()
1278 &dev->i2c_bus[1].i2c_adap, 0x42, in dvb_register()
1280 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1281 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1286 fe0->dvb.frontend = in dvb_register()
1289 &i2c_bus->i2c_adap); in dvb_register()
1290 if (fe0->dvb.frontend == NULL) in dvb_register()
1292 dvb_attach(mt2131_attach, fe0->dvb.frontend, in dvb_register()
1293 &i2c_bus->i2c_adap, in dvb_register()
1298 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1299 fe0->dvb.frontend = dvb_attach(s5h1409_attach, in dvb_register()
1301 &i2c_bus->i2c_adap); in dvb_register()
1302 if (fe0->dvb.frontend == NULL) in dvb_register()
1304 dvb_attach(mt2131_attach, fe0->dvb.frontend, in dvb_register()
1305 &i2c_bus->i2c_adap, in dvb_register()
1309 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1310 fe0->dvb.frontend = dvb_attach(lgdt330x_attach, in dvb_register()
1313 &i2c_bus->i2c_adap); in dvb_register()
1314 if (fe0->dvb.frontend == NULL) in dvb_register()
1316 dvb_attach(simple_tuner_attach, fe0->dvb.frontend, in dvb_register()
1317 &i2c_bus->i2c_adap, 0x61, in dvb_register()
1321 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1322 fe0->dvb.frontend = dvb_attach(s5h1409_attach, in dvb_register()
1324 &dev->i2c_bus[0].i2c_adap); in dvb_register()
1325 if (fe0->dvb.frontend == NULL) in dvb_register()
1327 dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1328 &i2c_bus->i2c_adap, in dvb_register()
1332 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1333 fe0->dvb.frontend = dvb_attach(s5h1409_attach, in dvb_register()
1335 &dev->i2c_bus[0].i2c_adap); in dvb_register()
1336 if (fe0->dvb.frontend != NULL) { in dvb_register()
1339 .i2c_adap = &i2c_bus->i2c_adap, in dvb_register()
1349 fe0->dvb.frontend, &cfg); in dvb_register()
1350 if (fe != NULL && fe->ops.tuner_ops.set_config != NULL) in dvb_register()
1351 fe->ops.tuner_ops.set_config(fe, &ctl); in dvb_register()
1356 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1357 fe0->dvb.frontend = dvb_attach(tda10048_attach, in dvb_register()
1359 &i2c_bus->i2c_adap); in dvb_register()
1360 if (fe0->dvb.frontend == NULL) in dvb_register()
1362 dvb_attach(tda829x_attach, fe0->dvb.frontend, in dvb_register()
1363 &dev->i2c_bus[1].i2c_adap, 0x42, in dvb_register()
1365 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1366 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1370 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1371 fe0->dvb.frontend = dvb_attach(tda10048_attach, in dvb_register()
1373 &i2c_bus->i2c_adap); in dvb_register()
1374 if (fe0->dvb.frontend != NULL) { in dvb_register()
1375 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1376 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1381 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1384 return -ENODEV; in dvb_register()
1386 fe0->dvb.frontend = dib7000p_ops.init(&i2c_bus->i2c_adap, in dvb_register()
1388 if (fe0->dvb.frontend != NULL) { in dvb_register()
1391 .i2c_adap = &dev->i2c_bus[1].i2c_adap, in dvb_register()
1404 fe0->dvb.frontend, &cfg); in dvb_register()
1405 if (fe != NULL && fe->ops.tuner_ops.set_config != NULL) in dvb_register()
1406 fe->ops.tuner_ops.set_config(fe, &ctl); in dvb_register()
1410 i2c_bus = &dev->i2c_bus[port->nr - 1]; in dvb_register()
1412 fe0->dvb.frontend = dvb_attach(s5h1409_attach, in dvb_register()
1414 &i2c_bus->i2c_adap); in dvb_register()
1415 if (fe0->dvb.frontend == NULL) in dvb_register()
1416 fe0->dvb.frontend = dvb_attach(s5h1411_attach, in dvb_register()
1418 &i2c_bus->i2c_adap); in dvb_register()
1419 if (fe0->dvb.frontend != NULL) in dvb_register()
1420 dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1421 &i2c_bus->i2c_adap, in dvb_register()
1425 i2c_bus = &dev->i2c_bus[port->nr - 1]; in dvb_register()
1427 fe0->dvb.frontend = dvb_attach(zl10353_attach, in dvb_register()
1429 &i2c_bus->i2c_adap); in dvb_register()
1430 if (fe0->dvb.frontend != NULL) { in dvb_register()
1433 .i2c_adap = &i2c_bus->i2c_adap, in dvb_register()
1442 fe = dvb_attach(xc2028_attach, fe0->dvb.frontend, in dvb_register()
1444 if (fe != NULL && fe->ops.tuner_ops.set_config != NULL) in dvb_register()
1445 fe->ops.tuner_ops.set_config(fe, &ctl); in dvb_register()
1450 i2c_bus = &dev->i2c_bus[port->nr - 1]; in dvb_register()
1451 /* cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); */ in dvb_register()
1452 /* cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); */ in dvb_register()
1455 return -ENODEV; in dvb_register()
1457 if (dib7000p_ops.i2c_enumeration(&i2c_bus->i2c_adap, 1, 0x12, &dib7070p_dib7000p_config) < 0) { in dvb_register()
1459 return -ENODEV; in dvb_register()
1461 fe0->dvb.frontend = dib7000p_ops.init(&i2c_bus->i2c_adap, 0x80, &dib7070p_dib7000p_config); in dvb_register()
1462 if (fe0->dvb.frontend != NULL) { in dvb_register()
1465 fe0->dvb.frontend->sec_priv = kmemdup(&dib7000p_ops, sizeof(dib7000p_ops), GFP_KERNEL); in dvb_register()
1466 if (!fe0->dvb.frontend->sec_priv) in dvb_register()
1467 return -ENOMEM; in dvb_register()
1468 tun_i2c = dib7000p_ops.get_i2c_master(fe0->dvb.frontend, DIBX000_I2C_INTERFACE_TUNER, 1); in dvb_register()
1469 if (!dvb_attach(dib0070_attach, fe0->dvb.frontend, tun_i2c, &dib7070p_dib0070_config)) in dvb_register()
1470 return -ENODEV; in dvb_register()
1477 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1479 fe0->dvb.frontend = dvb_attach(zl10353_attach, in dvb_register()
1481 &i2c_bus->i2c_adap); in dvb_register()
1482 if (fe0->dvb.frontend != NULL) { in dvb_register()
1485 .i2c_adap = &dev->i2c_bus[1].i2c_adap, in dvb_register()
1494 fe = dvb_attach(xc2028_attach, fe0->dvb.frontend, in dvb_register()
1496 if (fe != NULL && fe->ops.tuner_ops.set_config != NULL) in dvb_register()
1497 fe->ops.tuner_ops.set_config(fe, &ctl); in dvb_register()
1501 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1503 fe0->dvb.frontend = dvb_attach(zl10353_attach, in dvb_register()
1505 &i2c_bus->i2c_adap); in dvb_register()
1506 if (fe0->dvb.frontend != NULL) { in dvb_register()
1516 fe = dvb_attach(xc4000_attach, fe0->dvb.frontend, in dvb_register()
1517 &dev->i2c_bus[1].i2c_adap, &cfg); in dvb_register()
1520 dev->name); in dvb_register()
1526 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1528 fe0->dvb.frontend = dvb_attach(cx24116_attach, in dvb_register()
1530 &i2c_bus->i2c_adap); in dvb_register()
1531 if (fe0->dvb.frontend != NULL) in dvb_register()
1532 fe0->dvb.frontend->ops.set_voltage = f300_set_voltage; in dvb_register()
1537 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1539 switch (port->nr) { in dvb_register()
1542 fe0->dvb.frontend = dvb_attach(cx24117_attach, in dvb_register()
1544 &i2c_bus->i2c_adap); in dvb_register()
1548 fe0->dvb.frontend = dvb_attach(cx24117_attach, in dvb_register()
1550 &i2c_bus->i2c_adap); in dvb_register()
1555 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1557 fe0->dvb.frontend = dvb_attach(ds3000_attach, in dvb_register()
1559 &i2c_bus->i2c_adap); in dvb_register()
1560 if (fe0->dvb.frontend != NULL) { in dvb_register()
1561 dvb_attach(ts2020_attach, fe0->dvb.frontend, in dvb_register()
1562 &tevii_ts2020_config, &i2c_bus->i2c_adap); in dvb_register()
1563 fe0->dvb.frontend->ops.set_voltage = f300_set_voltage; in dvb_register()
1568 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1570 fe0->dvb.frontend = dvb_attach(cx24116_attach, in dvb_register()
1572 &i2c_bus->i2c_adap); in dvb_register()
1575 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1576 switch (port->nr) { in dvb_register()
1579 fe0->dvb.frontend = dvb_attach(stv0900_attach, in dvb_register()
1581 &i2c_bus->i2c_adap, 0); in dvb_register()
1582 if (fe0->dvb.frontend != NULL) { in dvb_register()
1584 fe0->dvb.frontend, in dvb_register()
1586 &i2c_bus->i2c_adap)) { in dvb_register()
1588 fe0->dvb.frontend, in dvb_register()
1589 &i2c_bus->i2c_adap, in dvb_register()
1599 fe0->dvb.frontend = dvb_attach(stv0900_attach, in dvb_register()
1601 &i2c_bus->i2c_adap, 1); in dvb_register()
1602 if (fe0->dvb.frontend != NULL) { in dvb_register()
1604 fe0->dvb.frontend, in dvb_register()
1606 &i2c_bus->i2c_adap)) { in dvb_register()
1608 fe0->dvb.frontend, in dvb_register()
1609 &i2c_bus->i2c_adap, in dvb_register()
1620 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1621 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1622 fe0->dvb.frontend = dvb_attach(lgs8gxx_attach, in dvb_register()
1624 &i2c_bus->i2c_adap); in dvb_register()
1625 if (fe0->dvb.frontend == NULL) in dvb_register()
1627 dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1628 &i2c_bus2->i2c_adap, &mygica_x8506_xc5000_config); in dvb_register()
1629 cx23885_set_frontend_hook(port, fe0->dvb.frontend); in dvb_register()
1632 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1633 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1634 fe0->dvb.frontend = dvb_attach(mb86a20s_attach, in dvb_register()
1636 &i2c_bus->i2c_adap); in dvb_register()
1637 if (fe0->dvb.frontend == NULL) in dvb_register()
1640 dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1641 &i2c_bus2->i2c_adap, in dvb_register()
1643 cx23885_set_frontend_hook(port, fe0->dvb.frontend); in dvb_register()
1646 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1647 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1648 fe0->dvb.frontend = dvb_attach(lgs8gxx_attach, in dvb_register()
1650 &i2c_bus->i2c_adap); in dvb_register()
1651 if (fe0->dvb.frontend == NULL) in dvb_register()
1653 dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1654 &i2c_bus2->i2c_adap, in dvb_register()
1656 cx23885_set_frontend_hook(port, fe0->dvb.frontend); in dvb_register()
1659 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1660 fe0->dvb.frontend = dvb_attach(s5h1411_attach, in dvb_register()
1662 &i2c_bus->i2c_adap); in dvb_register()
1663 if (fe0->dvb.frontend == NULL) in dvb_register()
1665 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1666 0x60, &dev->i2c_bus[0].i2c_adap, in dvb_register()
1669 tda18271_attach(&dev->ts1.analog_fe, in dvb_register()
1670 0x60, &dev->i2c_bus[1].i2c_adap, in dvb_register()
1675 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1676 fe0->dvb.frontend = dvb_attach(s5h1411_attach, in dvb_register()
1678 &i2c_bus->i2c_adap); in dvb_register()
1679 if (fe0->dvb.frontend == NULL) in dvb_register()
1681 dvb_attach(tda18271_attach, fe0->dvb.frontend, in dvb_register()
1682 0x60, &dev->i2c_bus[0].i2c_adap, in dvb_register()
1686 switch (port->nr) { in dvb_register()
1689 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1690 fe0->dvb.frontend = dvb_attach(atbm8830_attach, in dvb_register()
1692 &i2c_bus->i2c_adap); in dvb_register()
1693 if (fe0->dvb.frontend == NULL) in dvb_register()
1695 dvb_attach(max2165_attach, fe0->dvb.frontend, in dvb_register()
1696 &i2c_bus->i2c_adap, in dvb_register()
1701 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1702 fe0->dvb.frontend = dvb_attach(atbm8830_attach, in dvb_register()
1704 &i2c_bus->i2c_adap); in dvb_register()
1705 if (fe0->dvb.frontend == NULL) in dvb_register()
1707 dvb_attach(max2165_attach, fe0->dvb.frontend, in dvb_register()
1708 &i2c_bus->i2c_adap, in dvb_register()
1713 if (port->nr > 2) in dvb_register()
1716 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1718 port->frontends.gate = 0;/* not clear for me yet */ in dvb_register()
1720 /* MFE frontend 1 DVB-T */ in dvb_register()
1721 fe0->dvb.frontend = dvb_attach(stv0367ter_attach, in dvb_register()
1722 &netup_stv0367_config[port->nr - 1], in dvb_register()
1723 &i2c_bus->i2c_adap); in dvb_register()
1724 if (fe0->dvb.frontend == NULL) in dvb_register()
1726 if (NULL == dvb_attach(xc5000_attach, fe0->dvb.frontend, in dvb_register()
1727 &i2c_bus->i2c_adap, in dvb_register()
1728 &netup_xc5000_config[port->nr - 1])) in dvb_register()
1731 fe0->dvb.frontend->ops.tuner_ops.init(fe0->dvb.frontend); in dvb_register()
1734 fe1 = vb2_dvb_get_frontend(&port->frontends, 2); in dvb_register()
1737 /* DVB-C init */ in dvb_register()
1738 fe1->dvb.frontend = dvb_attach(stv0367cab_attach, in dvb_register()
1739 &netup_stv0367_config[port->nr - 1], in dvb_register()
1740 &i2c_bus->i2c_adap); in dvb_register()
1741 if (fe1->dvb.frontend == NULL) in dvb_register()
1744 fe1->dvb.frontend->id = 1; in dvb_register()
1746 fe1->dvb.frontend, in dvb_register()
1747 &i2c_bus->i2c_adap, in dvb_register()
1748 &netup_xc5000_config[port->nr - 1])) in dvb_register()
1752 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1753 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1755 switch (port->nr) { in dvb_register()
1758 fe0->dvb.frontend = dvb_attach(drxk_attach, in dvb_register()
1760 &i2c_bus->i2c_adap); in dvb_register()
1761 if (fe0->dvb.frontend == NULL) in dvb_register()
1764 fe0->dvb.frontend, in dvb_register()
1766 &i2c_bus2->i2c_adap)) in dvb_register()
1771 fe0->dvb.frontend = dvb_attach(drxk_attach, in dvb_register()
1773 &i2c_bus->i2c_adap); in dvb_register()
1774 if (fe0->dvb.frontend == NULL) in dvb_register()
1777 fe0->dvb.frontend, in dvb_register()
1779 &i2c_bus2->i2c_adap)) in dvb_register()
1785 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
1787 fe0->dvb.frontend = dvb_attach(ds3000_attach, in dvb_register()
1789 &i2c_bus->i2c_adap); in dvb_register()
1790 if (fe0->dvb.frontend == NULL) in dvb_register()
1792 dvb_attach(ts2020_attach, fe0->dvb.frontend, in dvb_register()
1793 &tevii_ts2020_config, &i2c_bus->i2c_adap); in dvb_register()
1796 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1798 fe0->dvb.frontend = dvb_attach(stv090x_attach, in dvb_register()
1800 &i2c_bus->i2c_adap, in dvb_register()
1802 if (fe0->dvb.frontend == NULL) in dvb_register()
1805 fe0->dvb.frontend, in dvb_register()
1807 &i2c_bus->i2c_adap)) in dvb_register()
1810 fe0->dvb.frontend->ops.set_voltage = p8000_set_voltage; in dvb_register()
1816 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1817 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1818 switch (port->nr) { in dvb_register()
1827 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1830 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
1834 fe0->dvb.frontend = tda10071_pdata.get_dvb_frontend(client_demod); in dvb_register()
1835 port->i2c_client_demod = client_demod; in dvb_register()
1838 a8293_pdata.dvb_frontend = fe0->dvb.frontend; in dvb_register()
1844 client_sec = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1847 if (!try_module_get(client_sec->dev.driver->owner)) { in dvb_register()
1851 port->i2c_client_sec = client_sec; in dvb_register()
1857 si2165_pdata.fe = &fe0->dvb.frontend; in dvb_register()
1865 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1868 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
1872 port->i2c_client_demod = client_demod; in dvb_register()
1874 if (fe0->dvb.frontend == NULL) in dvb_register()
1876 fe0->dvb.frontend->ops.i2c_gate_ctrl = NULL; in dvb_register()
1878 fe0->dvb.frontend, in dvb_register()
1879 0x60, &i2c_bus2->i2c_adap, in dvb_register()
1890 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1898 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1901 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
1905 fe0->dvb.frontend = tda10071_pdata.get_dvb_frontend(client_demod); in dvb_register()
1906 port->i2c_client_demod = client_demod; in dvb_register()
1909 a8293_pdata.dvb_frontend = fe0->dvb.frontend; in dvb_register()
1915 client_sec = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1918 if (!try_module_get(client_sec->dev.driver->owner)) { in dvb_register()
1922 port->i2c_client_sec = client_sec; in dvb_register()
1927 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
1928 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
1929 switch (port->nr) { in dvb_register()
1930 /* port b - satellite */ in dvb_register()
1933 fe0->dvb.frontend = dvb_attach(m88ds3103_attach, in dvb_register()
1935 &i2c_bus2->i2c_adap, &adapter); in dvb_register()
1936 if (fe0->dvb.frontend == NULL) in dvb_register()
1941 ts2020_config.fe = fe0->dvb.frontend; in dvb_register()
1951 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
1957 fe0->dvb.frontend->ops.read_signal_strength = in dvb_register()
1958 fe0->dvb.frontend->ops.tuner_ops.get_rf_strength; in dvb_register()
1961 * for setting the voltage we need to set GPIOs on in dvb_register()
1964 port->fe_set_voltage = in dvb_register()
1965 fe0->dvb.frontend->ops.set_voltage; in dvb_register()
1966 fe0->dvb.frontend->ops.set_voltage = in dvb_register()
1969 port->i2c_client_tuner = client_tuner; in dvb_register()
1972 /* port c - terrestrial/cable */ in dvb_register()
1977 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
1984 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
1987 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
1991 port->i2c_client_demod = client_demod; in dvb_register()
1995 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2006 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2010 port->i2c_client_tuner = client_tuner; in dvb_register()
2016 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2017 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
2022 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
2029 client_demod = i2c_new_client_device(&i2c_bus2->i2c_adap, &info); in dvb_register()
2032 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2036 port->i2c_client_demod = client_demod; in dvb_register()
2040 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2050 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2054 port->i2c_client_tuner = client_tuner; in dvb_register()
2057 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2058 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
2061 fe0->dvb.frontend = dvb_attach(m88ds3103_attach, in dvb_register()
2063 &i2c_bus2->i2c_adap, &adapter); in dvb_register()
2064 if (fe0->dvb.frontend == NULL) in dvb_register()
2069 ts2020_config.fe = fe0->dvb.frontend; in dvb_register()
2079 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2085 fe0->dvb.frontend->ops.read_signal_strength = in dvb_register()
2086 fe0->dvb.frontend->ops.tuner_ops.get_rf_strength; in dvb_register()
2088 port->i2c_client_tuner = client_tuner; in dvb_register()
2099 switch (port->nr) { in dvb_register()
2102 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
2110 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2125 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
2128 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2132 port->i2c_client_demod = client_demod; in dvb_register()
2134 fe0->dvb.frontend = m88ds3103_pdata.get_dvb_frontend(client_demod); in dvb_register()
2138 ts2020_config.fe = fe0->dvb.frontend; in dvb_register()
2148 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2154 fe0->dvb.frontend->ops.read_signal_strength = in dvb_register()
2155 fe0->dvb.frontend->ops.tuner_ops.get_rf_strength; in dvb_register()
2158 * for setting the voltage we need to set GPIOs on in dvb_register()
2161 port->fe_set_voltage = in dvb_register()
2162 fe0->dvb.frontend->ops.set_voltage; in dvb_register()
2163 fe0->dvb.frontend->ops.set_voltage = p_set_voltage; in dvb_register()
2165 port->i2c_client_tuner = client_tuner; in dvb_register()
2169 switch (port->nr) { in dvb_register()
2172 i2c_bus = &dev->i2c_bus[1]; in dvb_register()
2177 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2184 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
2190 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
2193 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2197 port->i2c_client_demod = client_demod; in dvb_register()
2201 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2211 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2215 port->i2c_client_tuner = client_tuner; in dvb_register()
2219 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2220 i2c_bus2 = &dev->i2c_bus[1]; in dvb_register()
2222 switch (port->nr) { in dvb_register()
2224 /* port b - satellite */ in dvb_register()
2227 fe0->dvb.frontend = dvb_attach(m88ds3103_attach, in dvb_register()
2229 &i2c_bus->i2c_adap, &adapter); in dvb_register()
2230 if (fe0->dvb.frontend == NULL) in dvb_register()
2234 a8293_pdata.dvb_frontend = fe0->dvb.frontend; in dvb_register()
2240 client_sec = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
2243 if (!try_module_get(client_sec->dev.driver->owner)) { in dvb_register()
2247 port->i2c_client_sec = client_sec; in dvb_register()
2251 m88rs6000t_config.fe = fe0->dvb.frontend; in dvb_register()
2260 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2264 port->i2c_client_tuner = client_tuner; in dvb_register()
2267 fe0->dvb.frontend->ops.read_signal_strength = in dvb_register()
2268 fe0->dvb.frontend->ops.tuner_ops.get_rf_strength; in dvb_register()
2270 /* port c - terrestrial/cable */ in dvb_register()
2275 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
2282 client_demod = i2c_new_client_device(&i2c_bus->i2c_adap, &info); in dvb_register()
2285 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2289 port->i2c_client_demod = client_demod; in dvb_register()
2293 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2300 client_tuner = i2c_new_client_device(&i2c_bus2->i2c_adap, &info); in dvb_register()
2302 module_put(client_demod->dev.driver->owner); in dvb_register()
2304 port->i2c_client_demod = NULL; in dvb_register()
2307 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2309 module_put(client_demod->dev.driver->owner); in dvb_register()
2311 port->i2c_client_demod = NULL; in dvb_register()
2314 port->i2c_client_tuner = client_tuner; in dvb_register()
2316 dev->ts1.analog_fe.tuner_priv = client_tuner; in dvb_register()
2317 memcpy(&dev->ts1.analog_fe.ops.tuner_ops, in dvb_register()
2318 &fe0->dvb.frontend->ops.tuner_ops, in dvb_register()
2327 dev->board, port->nr); in dvb_register()
2328 switch (port->nr) { in dvb_register()
2329 /* port b - Terrestrial/cable */ in dvb_register()
2334 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
2341 client_demod = i2c_new_client_device(&dev->i2c_bus[0].i2c_adap, &info); in dvb_register()
2344 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2348 port->i2c_client_demod = client_demod; in dvb_register()
2352 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2359 client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info); in dvb_register()
2361 module_put(client_demod->dev.driver->owner); in dvb_register()
2363 port->i2c_client_demod = NULL; in dvb_register()
2366 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2368 module_put(client_demod->dev.driver->owner); in dvb_register()
2370 port->i2c_client_demod = NULL; in dvb_register()
2373 port->i2c_client_tuner = client_tuner; in dvb_register()
2376 if (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_DVB) { in dvb_register()
2379 dev->ts1.analog_fe.tuner_priv = client_tuner; in dvb_register()
2380 memcpy(&dev->ts1.analog_fe.ops.tuner_ops, in dvb_register()
2381 &fe0->dvb.frontend->ops.tuner_ops, in dvb_register()
2386 /* port c - terrestrial/cable */ in dvb_register()
2391 si2168_config.fe = &fe0->dvb.frontend; in dvb_register()
2398 client_demod = i2c_new_client_device(&dev->i2c_bus[0].i2c_adap, &info); in dvb_register()
2401 if (!try_module_get(client_demod->dev.driver->owner)) { in dvb_register()
2405 port->i2c_client_demod = client_demod; in dvb_register()
2409 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2416 client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info); in dvb_register()
2418 module_put(client_demod->dev.driver->owner); in dvb_register()
2420 port->i2c_client_demod = NULL; in dvb_register()
2423 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2425 module_put(client_demod->dev.driver->owner); in dvb_register()
2427 port->i2c_client_demod = NULL; in dvb_register()
2430 port->i2c_client_tuner = client_tuner; in dvb_register()
2437 dev->board, port->nr); in dvb_register()
2438 switch (port->nr) { in dvb_register()
2439 /* port b - Terrestrial/cable */ in dvb_register()
2442 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2443 fe0->dvb.frontend = dvb_attach(lgdt3306a_attach, in dvb_register()
2444 &hauppauge_quadHD_ATSC_a_config, &i2c_bus->i2c_adap); in dvb_register()
2445 if (fe0->dvb.frontend == NULL) in dvb_register()
2450 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2458 client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info); in dvb_register()
2462 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2466 port->i2c_client_tuner = client_tuner; in dvb_register()
2469 if (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC) { in dvb_register()
2472 dev->ts1.analog_fe.tuner_priv = client_tuner; in dvb_register()
2473 memcpy(&dev->ts1.analog_fe.ops.tuner_ops, in dvb_register()
2474 &fe0->dvb.frontend->ops.tuner_ops, in dvb_register()
2479 /* port c - terrestrial/cable */ in dvb_register()
2482 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2483 fe0->dvb.frontend = dvb_attach(lgdt3306a_attach, in dvb_register()
2484 &hauppauge_quadHD_ATSC_b_config, &i2c_bus->i2c_adap); in dvb_register()
2485 if (fe0->dvb.frontend == NULL) in dvb_register()
2490 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2498 client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info); in dvb_register()
2502 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2506 port->i2c_client_tuner = client_tuner; in dvb_register()
2511 switch (port->nr) { in dvb_register()
2512 /* port c - Terrestrial/cable */ in dvb_register()
2515 i2c_bus = &dev->i2c_bus[0]; in dvb_register()
2516 fe0->dvb.frontend = dvb_attach(lgdt3306a_attach, in dvb_register()
2518 &i2c_bus->i2c_adap); in dvb_register()
2519 if (fe0->dvb.frontend == NULL) in dvb_register()
2524 si2157_config.fe = fe0->dvb.frontend; in dvb_register()
2532 client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info); in dvb_register()
2536 if (!try_module_get(client_tuner->dev.driver->owner)) { in dvb_register()
2541 port->i2c_client_tuner = client_tuner; in dvb_register()
2543 dev->ts1.analog_fe.tuner_priv = client_tuner; in dvb_register()
2544 memcpy(&dev->ts1.analog_fe.ops.tuner_ops, in dvb_register()
2545 &fe0->dvb.frontend->ops.tuner_ops, in dvb_register()
2552 dev->name); in dvb_register()
2556 if ((NULL == fe0->dvb.frontend) || (fe1 && NULL == fe1->dvb.frontend)) { in dvb_register()
2558 dev->name); in dvb_register()
2562 /* define general-purpose callback pointer */ in dvb_register()
2563 fe0->dvb.frontend->callback = cx23885_tuner_callback; in dvb_register()
2565 fe1->dvb.frontend->callback = cx23885_tuner_callback; in dvb_register()
2568 fe0->dvb.frontend->ops.ts_bus_ctrl = cx23885_dvb_bus_ctrl; in dvb_register()
2570 fe1->dvb.frontend->ops.ts_bus_ctrl = cx23885_dvb_bus_ctrl; in dvb_register()
2576 if (fe0->dvb.frontend->ops.analog_ops.standby) in dvb_register()
2577 fe0->dvb.frontend->ops.analog_ops.standby(fe0->dvb.frontend); in dvb_register()
2580 ret = vb2_dvb_register_bus(&port->frontends, THIS_MODULE, port, in dvb_register()
2581 &dev->pci->dev, NULL, in dvb_register()
2594 client_sec = port->i2c_client_sec; in dvb_register()
2596 module_put(client_sec->dev.driver->owner); in dvb_register()
2598 port->i2c_client_sec = NULL; in dvb_register()
2602 client_tuner = port->i2c_client_tuner; in dvb_register()
2604 module_put(client_tuner->dev.driver->owner); in dvb_register()
2606 port->i2c_client_tuner = NULL; in dvb_register()
2610 client_demod = port->i2c_client_demod; in dvb_register()
2612 module_put(client_demod->dev.driver->owner); in dvb_register()
2614 port->i2c_client_demod = NULL; in dvb_register()
2617 port->gate_ctrl = NULL; in dvb_register()
2618 vb2_dvb_dealloc_frontends(&port->frontends); in dvb_register()
2619 return -EINVAL; in dvb_register()
2626 struct cx23885_dev *dev = port->dev; in cx23885_dvb_register()
2631 * no cx23885 boards support this - yet. But, if we don't modify this in cx23885_dvb_register()
2636 * future addition of any multi-frontend cx23885 based boards. in cx23885_dvb_register()
2639 port->num_frontends); in cx23885_dvb_register()
2641 for (i = 1; i <= port->num_frontends; i++) { in cx23885_dvb_register()
2645 &port->frontends, i) == NULL) { in cx23885_dvb_register()
2647 return -ENOMEM; in cx23885_dvb_register()
2650 fe0 = vb2_dvb_get_frontend(&port->frontends, i); in cx23885_dvb_register()
2652 return -EINVAL; in cx23885_dvb_register()
2655 dprintk(1, " ->probed by Card=%d Name=%s, PCI %02x:%02x\n", in cx23885_dvb_register()
2656 dev->board, in cx23885_dvb_register()
2657 dev->name, in cx23885_dvb_register()
2658 dev->pci_bus, in cx23885_dvb_register()
2659 dev->pci_slot); in cx23885_dvb_register()
2663 pr_info("%s: cx23885 based dvb card\n", dev->name); in cx23885_dvb_register()
2664 q = &fe0->dvb.dvbq; in cx23885_dvb_register()
2665 q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; in cx23885_dvb_register()
2666 q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ; in cx23885_dvb_register()
2667 q->gfp_flags = GFP_DMA32; in cx23885_dvb_register()
2668 q->min_queued_buffers = 2; in cx23885_dvb_register()
2669 q->drv_priv = port; in cx23885_dvb_register()
2670 q->buf_struct_size = sizeof(struct cx23885_buffer); in cx23885_dvb_register()
2671 q->ops = &dvb_qops; in cx23885_dvb_register()
2672 q->mem_ops = &vb2_dma_sg_memops; in cx23885_dvb_register()
2673 q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; in cx23885_dvb_register()
2674 q->lock = &dev->lock; in cx23885_dvb_register()
2675 q->dev = &dev->pci->dev; in cx23885_dvb_register()
2694 fe0 = vb2_dvb_get_frontend(&port->frontends, 1); in cx23885_dvb_unregister()
2696 if (fe0 && fe0->dvb.frontend) in cx23885_dvb_unregister()
2697 vb2_dvb_unregister_bus(&port->frontends); in cx23885_dvb_unregister()
2700 client = port->i2c_client_ci; in cx23885_dvb_unregister()
2702 module_put(client->dev.driver->owner); in cx23885_dvb_unregister()
2707 client = port->i2c_client_sec; in cx23885_dvb_unregister()
2709 module_put(client->dev.driver->owner); in cx23885_dvb_unregister()
2714 client = port->i2c_client_tuner; in cx23885_dvb_unregister()
2716 module_put(client->dev.driver->owner); in cx23885_dvb_unregister()
2721 client = port->i2c_client_demod; in cx23885_dvb_unregister()
2723 module_put(client->dev.driver->owner); in cx23885_dvb_unregister()
2727 switch (port->dev->board) { in cx23885_dvb_unregister()
2732 altera_ci_release(port->dev, port->nr); in cx23885_dvb_unregister()
2736 port->gate_ctrl = NULL; in cx23885_dvb_unregister()