Lines Matching refs:dev

1086 	struct cx231xx *dev = ptr;  in cx231xx_tuner_callback()  local
1088 if (dev->tuner_type == TUNER_XC5000) { in cx231xx_tuner_callback()
1090 dev_dbg(dev->dev, in cx231xx_tuner_callback()
1092 command, dev->tuner_type); in cx231xx_tuner_callback()
1093 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
1096 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
1099 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
1103 } else if (dev->tuner_type == TUNER_NXP_TDA18271) { in cx231xx_tuner_callback()
1106 if (dev->model == CX231XX_BOARD_PV_PLAYTV_USB_HYBRID) in cx231xx_tuner_callback()
1107 rc = cx231xx_set_agc_analog_digital_mux_select(dev, arg); in cx231xx_tuner_callback()
1118 static void cx231xx_reset_out(struct cx231xx *dev) in cx231xx_reset_out() argument
1120 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
1122 cx231xx_set_gpio_value(dev, CX23417_RESET, 0); in cx231xx_reset_out()
1124 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
1127 static void cx231xx_enable_OSC(struct cx231xx *dev) in cx231xx_enable_OSC() argument
1129 cx231xx_set_gpio_value(dev, CX23417_OSC_EN, 1); in cx231xx_enable_OSC()
1132 static void cx231xx_sleep_s5h1432(struct cx231xx *dev) in cx231xx_sleep_s5h1432() argument
1134 cx231xx_set_gpio_value(dev, SLEEP_S5H1432, 0); in cx231xx_sleep_s5h1432()
1137 static inline void cx231xx_set_model(struct cx231xx *dev) in cx231xx_set_model() argument
1139 dev->board = cx231xx_boards[dev->model]; in cx231xx_set_model()
1145 void cx231xx_pre_card_setup(struct cx231xx *dev) in cx231xx_pre_card_setup() argument
1147 dev_info(dev->dev, "Identified as %s (card=%d)\n", in cx231xx_pre_card_setup()
1148 dev->board.name, dev->model); in cx231xx_pre_card_setup()
1150 if (CX231XX_BOARD_ASTROMETA_T2HYBRID == dev->model) { in cx231xx_pre_card_setup()
1152 cx231xx_set_gpio_value(dev, 0x03, 0x01); in cx231xx_pre_card_setup()
1156 if (dev->board.tuner_gpio) { in cx231xx_pre_card_setup()
1157 cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
1158 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
1160 if (dev->board.tuner_sif_gpio >= 0) in cx231xx_pre_card_setup()
1161 cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1); in cx231xx_pre_card_setup()
1166 cx231xx_set_mode(dev, CX231XX_ANALOG_MODE); in cx231xx_pre_card_setup()
1173 static void cx231xx_config_tuner(struct cx231xx *dev) in cx231xx_config_tuner() argument
1178 if (dev->tuner_type == TUNER_ABSENT) in cx231xx_config_tuner()
1182 tun_setup.type = dev->tuner_type; in cx231xx_config_tuner()
1183 tun_setup.addr = dev->tuner_addr; in cx231xx_config_tuner()
1186 tuner_call(dev, tuner, s_type_addr, &tun_setup); in cx231xx_config_tuner()
1196 .tuner = dev->tuner_type, in cx231xx_config_tuner()
1199 tuner_call(dev, tuner, s_config, &cfg); in cx231xx_config_tuner()
1206 dev->ctl_freq = f.frequency; in cx231xx_config_tuner()
1207 call_all(dev, tuner, s_frequency, &f); in cx231xx_config_tuner()
1211 static int read_eeprom(struct cx231xx *dev, struct i2c_client *client, in read_eeprom() argument
1226 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1236 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1244 dev_dbg(dev->dev, "i2c eeprom %02x: %*ph\n", in read_eeprom()
1250 void cx231xx_card_setup(struct cx231xx *dev) in cx231xx_card_setup() argument
1253 cx231xx_set_model(dev); in cx231xx_card_setup()
1255 dev->tuner_type = cx231xx_boards[dev->model].tuner_type; in cx231xx_card_setup()
1256 if (cx231xx_boards[dev->model].tuner_addr) in cx231xx_card_setup()
1257 dev->tuner_addr = cx231xx_boards[dev->model].tuner_addr; in cx231xx_card_setup()
1260 if (dev->board.decoder == CX231XX_AVDECODER) { in cx231xx_card_setup()
1261 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1262 cx231xx_get_i2c_adap(dev, I2C_0), in cx231xx_card_setup()
1264 if (dev->sd_cx25840 == NULL) in cx231xx_card_setup()
1265 dev_err(dev->dev, in cx231xx_card_setup()
1267 cx25840_call(dev, core, load_fw); in cx231xx_card_setup()
1272 if (dev->board.tuner_type != TUNER_ABSENT) { in cx231xx_card_setup()
1273 struct i2c_adapter *tuner_i2c = cx231xx_get_i2c_adap(dev, in cx231xx_card_setup()
1274 dev->board.tuner_i2c_master); in cx231xx_card_setup()
1275 dev->sd_tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1278 dev->tuner_addr, NULL); in cx231xx_card_setup()
1279 if (dev->sd_tuner == NULL) in cx231xx_card_setup()
1280 dev_err(dev->dev, in cx231xx_card_setup()
1283 cx231xx_config_tuner(dev); in cx231xx_card_setup()
1286 switch (dev->model) { in cx231xx_card_setup()
1301 dev_err(dev->dev, in cx231xx_card_setup()
1305 e->client.adapter = cx231xx_get_i2c_adap(dev, I2C_1_MUX_1); in cx231xx_card_setup()
1308 read_eeprom(dev, &e->client, e->eeprom, sizeof(e->eeprom)); in cx231xx_card_setup()
1321 int cx231xx_config(struct cx231xx *dev) in cx231xx_config() argument
1332 void cx231xx_config_i2c(struct cx231xx *dev) in cx231xx_config_i2c() argument
1336 call_all(dev, video, s_stream, 1); in cx231xx_config_i2c()
1339 static void cx231xx_unregister_media_device(struct cx231xx *dev) in cx231xx_unregister_media_device() argument
1342 if (dev->media_dev) { in cx231xx_unregister_media_device()
1343 media_device_unregister(dev->media_dev); in cx231xx_unregister_media_device()
1344 media_device_cleanup(dev->media_dev); in cx231xx_unregister_media_device()
1345 kfree(dev->media_dev); in cx231xx_unregister_media_device()
1346 dev->media_dev = NULL; in cx231xx_unregister_media_device()
1356 void cx231xx_release_resources(struct cx231xx *dev) in cx231xx_release_resources() argument
1358 cx231xx_ir_exit(dev); in cx231xx_release_resources()
1360 cx231xx_release_analog_resources(dev); in cx231xx_release_resources()
1362 cx231xx_remove_from_devlist(dev); in cx231xx_release_resources()
1365 cx231xx_dev_uninit(dev); in cx231xx_release_resources()
1368 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_release_resources()
1370 cx231xx_unregister_media_device(dev); in cx231xx_release_resources()
1372 usb_put_dev(dev->udev); in cx231xx_release_resources()
1375 clear_bit(dev->devno, &cx231xx_devused); in cx231xx_release_resources()
1378 static int cx231xx_media_device_init(struct cx231xx *dev, in cx231xx_media_device_init() argument
1388 media_device_usb_init(mdev, udev, dev->board.name); in cx231xx_media_device_init()
1390 dev->media_dev = mdev; in cx231xx_media_device_init()
1399 static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev, in cx231xx_init_dev() argument
1405 dev->udev = udev; in cx231xx_init_dev()
1406 mutex_init(&dev->lock); in cx231xx_init_dev()
1407 mutex_init(&dev->ctrl_urb_lock); in cx231xx_init_dev()
1408 mutex_init(&dev->gpio_i2c_lock); in cx231xx_init_dev()
1409 mutex_init(&dev->i2c_lock); in cx231xx_init_dev()
1411 spin_lock_init(&dev->video_mode.slock); in cx231xx_init_dev()
1412 spin_lock_init(&dev->vbi_mode.slock); in cx231xx_init_dev()
1413 spin_lock_init(&dev->sliced_cc_mode.slock); in cx231xx_init_dev()
1415 init_waitqueue_head(&dev->open); in cx231xx_init_dev()
1416 init_waitqueue_head(&dev->wait_frame); in cx231xx_init_dev()
1417 init_waitqueue_head(&dev->wait_stream); in cx231xx_init_dev()
1419 dev->cx231xx_read_ctrl_reg = cx231xx_read_ctrl_reg; in cx231xx_init_dev()
1420 dev->cx231xx_write_ctrl_reg = cx231xx_write_ctrl_reg; in cx231xx_init_dev()
1421 dev->cx231xx_send_usb_command = cx231xx_send_usb_command; in cx231xx_init_dev()
1422 dev->cx231xx_gpio_i2c_read = cx231xx_gpio_i2c_read; in cx231xx_init_dev()
1423 dev->cx231xx_gpio_i2c_write = cx231xx_gpio_i2c_write; in cx231xx_init_dev()
1426 retval = initialize_cx231xx(dev); in cx231xx_init_dev()
1428 dev_err(dev->dev, "Failed to read PCB config\n"); in cx231xx_init_dev()
1434 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER || in cx231xx_init_dev()
1435 dev->model == CX231XX_BOARD_HAUPPAUGE_USBLIVE2) { in cx231xx_init_dev()
1436 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_init_dev()
1437 cx231xx_set_alt_setting(dev, INDEX_VANC, 1); in cx231xx_init_dev()
1440 cx231xx_pre_card_setup(dev); in cx231xx_init_dev()
1442 retval = cx231xx_config(dev); in cx231xx_init_dev()
1444 dev_err(dev->dev, "error configuring device\n"); in cx231xx_init_dev()
1449 dev->norm = dev->board.norm; in cx231xx_init_dev()
1452 retval = cx231xx_dev_init(dev); in cx231xx_init_dev()
1454 dev_err(dev->dev, in cx231xx_init_dev()
1461 cx231xx_card_setup(dev); in cx231xx_init_dev()
1464 cx231xx_config_i2c(dev); in cx231xx_init_dev()
1466 maxw = norm_maxw(dev); in cx231xx_init_dev()
1467 maxh = norm_maxh(dev); in cx231xx_init_dev()
1470 dev->width = maxw; in cx231xx_init_dev()
1471 dev->height = maxh; in cx231xx_init_dev()
1472 dev->interlaced = 0; in cx231xx_init_dev()
1473 dev->video_input = 0; in cx231xx_init_dev()
1475 retval = cx231xx_config(dev); in cx231xx_init_dev()
1477 dev_err(dev->dev, "%s: cx231xx_config - errCode [%d]!\n", in cx231xx_init_dev()
1483 INIT_LIST_HEAD(&dev->video_mode.vidq.active); in cx231xx_init_dev()
1486 INIT_LIST_HEAD(&dev->vbi_mode.vidq.active); in cx231xx_init_dev()
1489 cx231xx_add_into_devlist(dev); in cx231xx_init_dev()
1491 if (dev->board.has_417) { in cx231xx_init_dev()
1492 dev_info(dev->dev, "attach 417 %d\n", dev->model); in cx231xx_init_dev()
1493 if (cx231xx_417_register(dev) < 0) { in cx231xx_init_dev()
1494 dev_err(dev->dev, in cx231xx_init_dev()
1500 retval = cx231xx_register_analog_devices(dev); in cx231xx_init_dev()
1504 cx231xx_ir_init(dev); in cx231xx_init_dev()
1506 cx231xx_init_extension(dev); in cx231xx_init_dev()
1510 cx231xx_unregister_media_device(dev); in cx231xx_init_dev()
1511 cx231xx_release_analog_resources(dev); in cx231xx_init_dev()
1512 cx231xx_remove_from_devlist(dev); in cx231xx_init_dev()
1514 cx231xx_dev_uninit(dev); in cx231xx_init_dev()
1521 struct cx231xx *dev = container_of(work, in request_module_async() local
1524 if (dev->has_alsa_audio) in request_module_async()
1527 if (dev->board.has_dvb) in request_module_async()
1532 static void request_modules(struct cx231xx *dev) in request_modules() argument
1534 INIT_WORK(&dev->request_module_wk, request_module_async); in request_modules()
1535 schedule_work(&dev->request_module_wk); in request_modules()
1538 static void flush_request_modules(struct cx231xx *dev) in flush_request_modules() argument
1540 flush_work(&dev->request_module_wk); in flush_request_modules()
1543 #define request_modules(dev) argument
1544 #define flush_request_modules(dev) argument
1547 static int cx231xx_init_v4l2(struct cx231xx *dev, in cx231xx_init_v4l2() argument
1558 idx = dev->current_pcb_config.hs_config_info[0].interface_info.video_index + 1; in cx231xx_init_v4l2()
1559 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1560 dev_err(dev->dev, in cx231xx_init_v4l2()
1570 dev->video_mode.end_point_addr = uif->altsetting[0].endpoint[isoc_pipe].desc.bEndpointAddress; in cx231xx_init_v4l2()
1571 dev->video_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1573 dev_info(dev->dev, in cx231xx_init_v4l2()
1575 dev->video_mode.end_point_addr, in cx231xx_init_v4l2()
1576 dev->video_mode.num_alt); in cx231xx_init_v4l2()
1578dev->video_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->video_mode.num_alt, GFP… in cx231xx_init_v4l2()
1579 if (dev->video_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1582 for (i = 0; i < dev->video_mode.num_alt; i++) { in cx231xx_init_v4l2()
1589 dev->video_mode.alt_max_pkt_size[i] = (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1); in cx231xx_init_v4l2()
1590 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1592 dev->video_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1597 idx = dev->current_pcb_config.hs_config_info[0].interface_info.vanc_index + 1; in cx231xx_init_v4l2()
1598 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1599 dev_err(dev->dev, in cx231xx_init_v4l2()
1608 dev->vbi_mode.end_point_addr = in cx231xx_init_v4l2()
1612 dev->vbi_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1613 dev_info(dev->dev, in cx231xx_init_v4l2()
1615 dev->vbi_mode.end_point_addr, in cx231xx_init_v4l2()
1616 dev->vbi_mode.num_alt); in cx231xx_init_v4l2()
1619dev->vbi_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->vbi_mode.num_alt, GFP_KER… in cx231xx_init_v4l2()
1620 if (dev->vbi_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1623 for (i = 0; i < dev->vbi_mode.num_alt; i++) { in cx231xx_init_v4l2()
1631 dev->vbi_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1633 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1635 dev->vbi_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1641 idx = dev->current_pcb_config.hs_config_info[0].interface_info.hanc_index + 1; in cx231xx_init_v4l2()
1642 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1643 dev_err(dev->dev, in cx231xx_init_v4l2()
1652 dev->sliced_cc_mode.end_point_addr = in cx231xx_init_v4l2()
1656 dev->sliced_cc_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1657 dev_info(dev->dev, in cx231xx_init_v4l2()
1659 dev->sliced_cc_mode.end_point_addr, in cx231xx_init_v4l2()
1660 dev->sliced_cc_mode.num_alt); in cx231xx_init_v4l2()
1661dev->sliced_cc_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->sliced_cc_mode.num_… in cx231xx_init_v4l2()
1662 if (dev->sliced_cc_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1665 for (i = 0; i < dev->sliced_cc_mode.num_alt; i++) { in cx231xx_init_v4l2()
1673 dev->sliced_cc_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1675 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1677 dev->sliced_cc_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1691 struct device *d = &interface->dev; in cx231xx_usb_probe()
1693 struct cx231xx *dev = NULL; in cx231xx_usb_probe() local
1725 dev = devm_kzalloc(&udev->dev, sizeof(*dev), GFP_KERNEL); in cx231xx_usb_probe()
1726 if (dev == NULL) { in cx231xx_usb_probe()
1731 snprintf(dev->name, 29, "cx231xx #%d", nr); in cx231xx_usb_probe()
1732 dev->devno = nr; in cx231xx_usb_probe()
1733 dev->model = id->driver_info; in cx231xx_usb_probe()
1734 dev->video_mode.alt = -1; in cx231xx_usb_probe()
1735 dev->dev = d; in cx231xx_usb_probe()
1737 cx231xx_set_model(dev); in cx231xx_usb_probe()
1739 dev->interface_count++; in cx231xx_usb_probe()
1741 dev->gpio_dir = 0; in cx231xx_usb_probe()
1742 dev->gpio_val = 0; in cx231xx_usb_probe()
1743 dev->xc_fw_load_done = 0; in cx231xx_usb_probe()
1744 dev->has_alsa_audio = 1; in cx231xx_usb_probe()
1745 dev->power_mode = -1; in cx231xx_usb_probe()
1746 atomic_set(&dev->devlist_count, 0); in cx231xx_usb_probe()
1749 dev->vbi_or_sliced_cc_mode = 0; in cx231xx_usb_probe()
1752 dev->max_iad_interface_count = udev->config->desc.bNumInterfaces; in cx231xx_usb_probe()
1757 dev->mode_tv = 0; in cx231xx_usb_probe()
1759 dev->USE_ISO = transfer_mode; in cx231xx_usb_probe()
1783 dev->max_iad_interface_count); in cx231xx_usb_probe()
1786 dev->interface_count++; in cx231xx_usb_probe()
1789 nr = dev->devno; in cx231xx_usb_probe()
1801 usb_set_intfdata(interface, dev); in cx231xx_usb_probe()
1804 retval = cx231xx_media_device_init(dev, udev); in cx231xx_usb_probe()
1812 dev->v4l2_dev.mdev = dev->media_dev; in cx231xx_usb_probe()
1814 retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev); in cx231xx_usb_probe()
1821 retval = cx231xx_init_dev(dev, udev, nr); in cx231xx_usb_probe()
1825 retval = cx231xx_init_v4l2(dev, udev, interface, isoc_pipe); in cx231xx_usb_probe()
1829 if (dev->current_pcb_config.ts1_source != 0xff) { in cx231xx_usb_probe()
1831 idx = dev->current_pcb_config.hs_config_info[0].interface_info.ts1_index + 1; in cx231xx_usb_probe()
1832 if (idx >= dev->max_iad_interface_count) { in cx231xx_usb_probe()
1845 dev->ts1_mode.end_point_addr = in cx231xx_usb_probe()
1849 dev->ts1_mode.num_alt = uif->num_altsetting; in cx231xx_usb_probe()
1852 dev->ts1_mode.end_point_addr, in cx231xx_usb_probe()
1853 dev->ts1_mode.num_alt); in cx231xx_usb_probe()
1855dev->ts1_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->ts1_mode.num_alt, GFP_KER… in cx231xx_usb_probe()
1856 if (dev->ts1_mode.alt_max_pkt_size == NULL) { in cx231xx_usb_probe()
1861 for (i = 0; i < dev->ts1_mode.num_alt; i++) { in cx231xx_usb_probe()
1872 dev->ts1_mode.alt_max_pkt_size[i] = in cx231xx_usb_probe()
1875 i, dev->ts1_mode.alt_max_pkt_size[i]); in cx231xx_usb_probe()
1879 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER) { in cx231xx_usb_probe()
1880 cx231xx_enable_OSC(dev); in cx231xx_usb_probe()
1881 cx231xx_reset_out(dev); in cx231xx_usb_probe()
1882 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_usb_probe()
1885 if (dev->model == CX231XX_BOARD_CNXT_RDE_253S) in cx231xx_usb_probe()
1886 cx231xx_sleep_s5h1432(dev); in cx231xx_usb_probe()
1889 request_modules(dev); in cx231xx_usb_probe()
1893 cx231xx_v4l2_create_entities(dev); in cx231xx_usb_probe()
1895 retval = v4l2_mc_create_media_graph(dev->media_dev); in cx231xx_usb_probe()
1897 retval = media_device_register(dev->media_dev); in cx231xx_usb_probe()
1900 cx231xx_release_resources(dev); in cx231xx_usb_probe()
1905 cx231xx_close_extension(dev); in cx231xx_usb_probe()
1906 cx231xx_ir_exit(dev); in cx231xx_usb_probe()
1907 cx231xx_release_analog_resources(dev); in cx231xx_usb_probe()
1908 cx231xx_417_unregister(dev); in cx231xx_usb_probe()
1909 cx231xx_remove_from_devlist(dev); in cx231xx_usb_probe()
1910 cx231xx_dev_uninit(dev); in cx231xx_usb_probe()
1912 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_usb_probe()
1914 cx231xx_unregister_media_device(dev); in cx231xx_usb_probe()
1930 struct cx231xx *dev; in cx231xx_usb_disconnect() local
1932 dev = usb_get_intfdata(interface); in cx231xx_usb_disconnect()
1935 if (!dev) in cx231xx_usb_disconnect()
1938 if (!dev->udev) in cx231xx_usb_disconnect()
1941 dev->state |= DEV_DISCONNECTED; in cx231xx_usb_disconnect()
1943 flush_request_modules(dev); in cx231xx_usb_disconnect()
1947 mutex_lock(&dev->lock); in cx231xx_usb_disconnect()
1949 wake_up_interruptible_all(&dev->open); in cx231xx_usb_disconnect()
1951 if (dev->users) { in cx231xx_usb_disconnect()
1952 dev_warn(dev->dev, in cx231xx_usb_disconnect()
1954 video_device_node_name(&dev->vdev)); in cx231xx_usb_disconnect()
1957 cx231xx_ir_exit(dev); in cx231xx_usb_disconnect()
1959 if (dev->USE_ISO) in cx231xx_usb_disconnect()
1960 cx231xx_uninit_isoc(dev); in cx231xx_usb_disconnect()
1962 cx231xx_uninit_bulk(dev); in cx231xx_usb_disconnect()
1963 wake_up_interruptible(&dev->wait_frame); in cx231xx_usb_disconnect()
1964 wake_up_interruptible(&dev->wait_stream); in cx231xx_usb_disconnect()
1968 cx231xx_close_extension(dev); in cx231xx_usb_disconnect()
1970 mutex_unlock(&dev->lock); in cx231xx_usb_disconnect()
1972 if (!dev->users) in cx231xx_usb_disconnect()
1973 cx231xx_release_resources(dev); in cx231xx_usb_disconnect()