Lines Matching refs:dev
895 struct cx231xx *dev = ptr; in cx231xx_tuner_callback() local
897 if (dev->tuner_type == TUNER_XC5000) { in cx231xx_tuner_callback()
899 dev_dbg(dev->dev, in cx231xx_tuner_callback()
901 command, dev->tuner_type); in cx231xx_tuner_callback()
902 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
905 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
908 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
912 } else if (dev->tuner_type == TUNER_NXP_TDA18271) { in cx231xx_tuner_callback()
915 if (dev->model == CX231XX_BOARD_PV_PLAYTV_USB_HYBRID) in cx231xx_tuner_callback()
916 rc = cx231xx_set_agc_analog_digital_mux_select(dev, arg); in cx231xx_tuner_callback()
927 static void cx231xx_reset_out(struct cx231xx *dev) in cx231xx_reset_out() argument
929 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
931 cx231xx_set_gpio_value(dev, CX23417_RESET, 0); in cx231xx_reset_out()
933 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
936 static void cx231xx_enable_OSC(struct cx231xx *dev) in cx231xx_enable_OSC() argument
938 cx231xx_set_gpio_value(dev, CX23417_OSC_EN, 1); in cx231xx_enable_OSC()
941 static void cx231xx_sleep_s5h1432(struct cx231xx *dev) in cx231xx_sleep_s5h1432() argument
943 cx231xx_set_gpio_value(dev, SLEEP_S5H1432, 0); in cx231xx_sleep_s5h1432()
946 static inline void cx231xx_set_model(struct cx231xx *dev) in cx231xx_set_model() argument
948 dev->board = cx231xx_boards[dev->model]; in cx231xx_set_model()
954 void cx231xx_pre_card_setup(struct cx231xx *dev) in cx231xx_pre_card_setup() argument
956 dev_info(dev->dev, "Identified as %s (card=%d)\n", in cx231xx_pre_card_setup()
957 dev->board.name, dev->model); in cx231xx_pre_card_setup()
960 if (dev->board.tuner_gpio) { in cx231xx_pre_card_setup()
961 cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
962 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
964 if (dev->board.tuner_sif_gpio >= 0) in cx231xx_pre_card_setup()
965 cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1); in cx231xx_pre_card_setup()
970 cx231xx_set_mode(dev, CX231XX_ANALOG_MODE); in cx231xx_pre_card_setup()
977 static void cx231xx_config_tuner(struct cx231xx *dev) in cx231xx_config_tuner() argument
982 if (dev->tuner_type == TUNER_ABSENT) in cx231xx_config_tuner()
986 tun_setup.type = dev->tuner_type; in cx231xx_config_tuner()
987 tun_setup.addr = dev->tuner_addr; in cx231xx_config_tuner()
990 tuner_call(dev, tuner, s_type_addr, &tun_setup); in cx231xx_config_tuner()
1000 .tuner = dev->tuner_type, in cx231xx_config_tuner()
1003 tuner_call(dev, tuner, s_config, &cfg); in cx231xx_config_tuner()
1010 dev->ctl_freq = f.frequency; in cx231xx_config_tuner()
1011 call_all(dev, tuner, s_frequency, &f); in cx231xx_config_tuner()
1015 static int read_eeprom(struct cx231xx *dev, struct i2c_client *client, in read_eeprom() argument
1030 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1040 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1048 dev_dbg(dev->dev, "i2c eeprom %02x: %*ph\n", in read_eeprom()
1054 void cx231xx_card_setup(struct cx231xx *dev) in cx231xx_card_setup() argument
1057 cx231xx_set_model(dev); in cx231xx_card_setup()
1059 dev->tuner_type = cx231xx_boards[dev->model].tuner_type; in cx231xx_card_setup()
1060 if (cx231xx_boards[dev->model].tuner_addr) in cx231xx_card_setup()
1061 dev->tuner_addr = cx231xx_boards[dev->model].tuner_addr; in cx231xx_card_setup()
1064 if (dev->board.decoder == CX231XX_AVDECODER) { in cx231xx_card_setup()
1065 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1066 cx231xx_get_i2c_adap(dev, I2C_0), in cx231xx_card_setup()
1068 if (dev->sd_cx25840 == NULL) in cx231xx_card_setup()
1069 dev_err(dev->dev, in cx231xx_card_setup()
1071 cx25840_call(dev, core, load_fw); in cx231xx_card_setup()
1076 if (dev->board.tuner_type != TUNER_ABSENT) { in cx231xx_card_setup()
1077 struct i2c_adapter *tuner_i2c = cx231xx_get_i2c_adap(dev, in cx231xx_card_setup()
1078 dev->board.tuner_i2c_master); in cx231xx_card_setup()
1079 dev->sd_tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1082 dev->tuner_addr, NULL); in cx231xx_card_setup()
1083 if (dev->sd_tuner == NULL) in cx231xx_card_setup()
1084 dev_err(dev->dev, in cx231xx_card_setup()
1087 cx231xx_config_tuner(dev); in cx231xx_card_setup()
1090 switch (dev->model) { in cx231xx_card_setup()
1100 client.adapter = cx231xx_get_i2c_adap(dev, I2C_1_MUX_1); in cx231xx_card_setup()
1103 read_eeprom(dev, &client, eeprom, sizeof(eeprom)); in cx231xx_card_setup()
1116 int cx231xx_config(struct cx231xx *dev) in cx231xx_config() argument
1127 void cx231xx_config_i2c(struct cx231xx *dev) in cx231xx_config_i2c() argument
1131 call_all(dev, video, s_stream, 1); in cx231xx_config_i2c()
1134 static void cx231xx_unregister_media_device(struct cx231xx *dev) in cx231xx_unregister_media_device() argument
1137 if (dev->media_dev) { in cx231xx_unregister_media_device()
1138 media_device_unregister(dev->media_dev); in cx231xx_unregister_media_device()
1139 kfree(dev->media_dev); in cx231xx_unregister_media_device()
1140 dev->media_dev = NULL; in cx231xx_unregister_media_device()
1150 void cx231xx_release_resources(struct cx231xx *dev) in cx231xx_release_resources() argument
1152 cx231xx_unregister_media_device(dev); in cx231xx_release_resources()
1154 cx231xx_release_analog_resources(dev); in cx231xx_release_resources()
1156 cx231xx_remove_from_devlist(dev); in cx231xx_release_resources()
1158 cx231xx_ir_exit(dev); in cx231xx_release_resources()
1161 cx231xx_dev_uninit(dev); in cx231xx_release_resources()
1164 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_release_resources()
1166 usb_put_dev(dev->udev); in cx231xx_release_resources()
1169 clear_bit(dev->devno, &cx231xx_devused); in cx231xx_release_resources()
1172 static void cx231xx_media_device_register(struct cx231xx *dev, in cx231xx_media_device_register() argument
1183 mdev->dev = dev->dev; in cx231xx_media_device_register()
1184 strlcpy(mdev->model, dev->board.name, sizeof(mdev->model)); in cx231xx_media_device_register()
1193 dev_err(dev->dev, in cx231xx_media_device_register()
1200 dev->media_dev = mdev; in cx231xx_media_device_register()
1204 static void cx231xx_create_media_graph(struct cx231xx *dev) in cx231xx_create_media_graph() argument
1207 struct media_device *mdev = dev->media_dev; in cx231xx_create_media_graph()
1233 media_entity_create_link(decoder, 1, &dev->vdev.entity, 0, in cx231xx_create_media_graph()
1235 media_entity_create_link(decoder, 2, &dev->vbi_dev.entity, 0, in cx231xx_create_media_graph()
1244 static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev, in cx231xx_init_dev() argument
1250 dev->udev = udev; in cx231xx_init_dev()
1251 mutex_init(&dev->lock); in cx231xx_init_dev()
1252 mutex_init(&dev->ctrl_urb_lock); in cx231xx_init_dev()
1253 mutex_init(&dev->gpio_i2c_lock); in cx231xx_init_dev()
1254 mutex_init(&dev->i2c_lock); in cx231xx_init_dev()
1256 spin_lock_init(&dev->video_mode.slock); in cx231xx_init_dev()
1257 spin_lock_init(&dev->vbi_mode.slock); in cx231xx_init_dev()
1258 spin_lock_init(&dev->sliced_cc_mode.slock); in cx231xx_init_dev()
1260 init_waitqueue_head(&dev->open); in cx231xx_init_dev()
1261 init_waitqueue_head(&dev->wait_frame); in cx231xx_init_dev()
1262 init_waitqueue_head(&dev->wait_stream); in cx231xx_init_dev()
1264 dev->cx231xx_read_ctrl_reg = cx231xx_read_ctrl_reg; in cx231xx_init_dev()
1265 dev->cx231xx_write_ctrl_reg = cx231xx_write_ctrl_reg; in cx231xx_init_dev()
1266 dev->cx231xx_send_usb_command = cx231xx_send_usb_command; in cx231xx_init_dev()
1267 dev->cx231xx_gpio_i2c_read = cx231xx_gpio_i2c_read; in cx231xx_init_dev()
1268 dev->cx231xx_gpio_i2c_write = cx231xx_gpio_i2c_write; in cx231xx_init_dev()
1271 retval = initialize_cx231xx(dev); in cx231xx_init_dev()
1273 dev_err(dev->dev, "Failed to read PCB config\n"); in cx231xx_init_dev()
1279 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER || in cx231xx_init_dev()
1280 dev->model == CX231XX_BOARD_HAUPPAUGE_USBLIVE2) { in cx231xx_init_dev()
1281 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_init_dev()
1282 cx231xx_set_alt_setting(dev, INDEX_VANC, 1); in cx231xx_init_dev()
1285 cx231xx_pre_card_setup(dev); in cx231xx_init_dev()
1287 retval = cx231xx_config(dev); in cx231xx_init_dev()
1289 dev_err(dev->dev, "error configuring device\n"); in cx231xx_init_dev()
1294 dev->norm = dev->board.norm; in cx231xx_init_dev()
1297 retval = cx231xx_dev_init(dev); in cx231xx_init_dev()
1299 dev_err(dev->dev, in cx231xx_init_dev()
1306 cx231xx_card_setup(dev); in cx231xx_init_dev()
1309 cx231xx_config_i2c(dev); in cx231xx_init_dev()
1311 maxw = norm_maxw(dev); in cx231xx_init_dev()
1312 maxh = norm_maxh(dev); in cx231xx_init_dev()
1315 dev->width = maxw; in cx231xx_init_dev()
1316 dev->height = maxh; in cx231xx_init_dev()
1317 dev->interlaced = 0; in cx231xx_init_dev()
1318 dev->video_input = 0; in cx231xx_init_dev()
1320 retval = cx231xx_config(dev); in cx231xx_init_dev()
1322 dev_err(dev->dev, "%s: cx231xx_config - errCode [%d]!\n", in cx231xx_init_dev()
1328 INIT_LIST_HEAD(&dev->video_mode.vidq.active); in cx231xx_init_dev()
1329 INIT_LIST_HEAD(&dev->video_mode.vidq.queued); in cx231xx_init_dev()
1332 INIT_LIST_HEAD(&dev->vbi_mode.vidq.active); in cx231xx_init_dev()
1333 INIT_LIST_HEAD(&dev->vbi_mode.vidq.queued); in cx231xx_init_dev()
1336 cx231xx_add_into_devlist(dev); in cx231xx_init_dev()
1338 if (dev->board.has_417) { in cx231xx_init_dev()
1339 dev_info(dev->dev, "attach 417 %d\n", dev->model); in cx231xx_init_dev()
1340 if (cx231xx_417_register(dev) < 0) { in cx231xx_init_dev()
1341 dev_err(dev->dev, in cx231xx_init_dev()
1347 retval = cx231xx_register_analog_devices(dev); in cx231xx_init_dev()
1351 cx231xx_ir_init(dev); in cx231xx_init_dev()
1353 cx231xx_init_extension(dev); in cx231xx_init_dev()
1357 cx231xx_unregister_media_device(dev); in cx231xx_init_dev()
1358 cx231xx_release_analog_resources(dev); in cx231xx_init_dev()
1359 cx231xx_remove_from_devlist(dev); in cx231xx_init_dev()
1361 cx231xx_dev_uninit(dev); in cx231xx_init_dev()
1368 struct cx231xx *dev = container_of(work, in request_module_async() local
1371 if (dev->has_alsa_audio) in request_module_async()
1374 if (dev->board.has_dvb) in request_module_async()
1379 static void request_modules(struct cx231xx *dev) in request_modules() argument
1381 INIT_WORK(&dev->request_module_wk, request_module_async); in request_modules()
1382 schedule_work(&dev->request_module_wk); in request_modules()
1385 static void flush_request_modules(struct cx231xx *dev) in flush_request_modules() argument
1387 flush_work(&dev->request_module_wk); in flush_request_modules()
1390 #define request_modules(dev) argument
1391 #define flush_request_modules(dev) argument
1394 static int cx231xx_init_v4l2(struct cx231xx *dev, in cx231xx_init_v4l2() argument
1405 idx = dev->current_pcb_config.hs_config_info[0].interface_info.video_index + 1; in cx231xx_init_v4l2()
1406 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1407 dev_err(dev->dev, in cx231xx_init_v4l2()
1414 dev->video_mode.end_point_addr = uif->altsetting[0].endpoint[isoc_pipe].desc.bEndpointAddress; in cx231xx_init_v4l2()
1415 dev->video_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1417 dev_info(dev->dev, in cx231xx_init_v4l2()
1419 dev->video_mode.end_point_addr, in cx231xx_init_v4l2()
1420 dev->video_mode.num_alt); in cx231xx_init_v4l2()
1422 …dev->video_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->video_mode.num_alt, GFP… in cx231xx_init_v4l2()
1423 if (dev->video_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1426 for (i = 0; i < dev->video_mode.num_alt; i++) { in cx231xx_init_v4l2()
1428 dev->video_mode.alt_max_pkt_size[i] = (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1); in cx231xx_init_v4l2()
1429 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1431 dev->video_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1436 idx = dev->current_pcb_config.hs_config_info[0].interface_info.vanc_index + 1; in cx231xx_init_v4l2()
1437 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1438 dev_err(dev->dev, in cx231xx_init_v4l2()
1444 dev->vbi_mode.end_point_addr = in cx231xx_init_v4l2()
1448 dev->vbi_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1449 dev_info(dev->dev, in cx231xx_init_v4l2()
1451 dev->vbi_mode.end_point_addr, in cx231xx_init_v4l2()
1452 dev->vbi_mode.num_alt); in cx231xx_init_v4l2()
1455 …dev->vbi_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->vbi_mode.num_alt, GFP_KER… in cx231xx_init_v4l2()
1456 if (dev->vbi_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1459 for (i = 0; i < dev->vbi_mode.num_alt; i++) { in cx231xx_init_v4l2()
1463 dev->vbi_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1465 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1467 dev->vbi_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1473 idx = dev->current_pcb_config.hs_config_info[0].interface_info.hanc_index + 1; in cx231xx_init_v4l2()
1474 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1475 dev_err(dev->dev, in cx231xx_init_v4l2()
1481 dev->sliced_cc_mode.end_point_addr = in cx231xx_init_v4l2()
1485 dev->sliced_cc_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1486 dev_info(dev->dev, in cx231xx_init_v4l2()
1488 dev->sliced_cc_mode.end_point_addr, in cx231xx_init_v4l2()
1489 dev->sliced_cc_mode.num_alt); in cx231xx_init_v4l2()
1490 …dev->sliced_cc_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->sliced_cc_mode.num_… in cx231xx_init_v4l2()
1491 if (dev->sliced_cc_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1494 for (i = 0; i < dev->sliced_cc_mode.num_alt; i++) { in cx231xx_init_v4l2()
1497 dev->sliced_cc_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1499 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1501 dev->sliced_cc_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1515 struct device *d = &interface->dev; in cx231xx_usb_probe()
1517 struct cx231xx *dev = NULL; in cx231xx_usb_probe() local
1549 dev = devm_kzalloc(&udev->dev, sizeof(*dev), GFP_KERNEL); in cx231xx_usb_probe()
1550 if (dev == NULL) { in cx231xx_usb_probe()
1555 snprintf(dev->name, 29, "cx231xx #%d", nr); in cx231xx_usb_probe()
1556 dev->devno = nr; in cx231xx_usb_probe()
1557 dev->model = id->driver_info; in cx231xx_usb_probe()
1558 dev->video_mode.alt = -1; in cx231xx_usb_probe()
1559 dev->dev = d; in cx231xx_usb_probe()
1561 cx231xx_set_model(dev); in cx231xx_usb_probe()
1563 dev->interface_count++; in cx231xx_usb_probe()
1565 dev->gpio_dir = 0; in cx231xx_usb_probe()
1566 dev->gpio_val = 0; in cx231xx_usb_probe()
1567 dev->xc_fw_load_done = 0; in cx231xx_usb_probe()
1568 dev->has_alsa_audio = 1; in cx231xx_usb_probe()
1569 dev->power_mode = -1; in cx231xx_usb_probe()
1570 atomic_set(&dev->devlist_count, 0); in cx231xx_usb_probe()
1573 dev->vbi_or_sliced_cc_mode = 0; in cx231xx_usb_probe()
1576 dev->max_iad_interface_count = udev->config->desc.bNumInterfaces; in cx231xx_usb_probe()
1581 dev->mode_tv = 0; in cx231xx_usb_probe()
1583 dev->USE_ISO = transfer_mode; in cx231xx_usb_probe()
1607 dev->max_iad_interface_count); in cx231xx_usb_probe()
1610 dev->interface_count++; in cx231xx_usb_probe()
1613 nr = dev->devno; in cx231xx_usb_probe()
1625 usb_set_intfdata(interface, dev); in cx231xx_usb_probe()
1628 cx231xx_media_device_register(dev, udev); in cx231xx_usb_probe()
1632 dev->v4l2_dev.mdev = dev->media_dev; in cx231xx_usb_probe()
1634 retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev); in cx231xx_usb_probe()
1641 retval = cx231xx_init_dev(dev, udev, nr); in cx231xx_usb_probe()
1645 retval = cx231xx_init_v4l2(dev, udev, interface, isoc_pipe); in cx231xx_usb_probe()
1649 if (dev->current_pcb_config.ts1_source != 0xff) { in cx231xx_usb_probe()
1651 idx = dev->current_pcb_config.hs_config_info[0].interface_info.ts1_index + 1; in cx231xx_usb_probe()
1652 if (idx >= dev->max_iad_interface_count) { in cx231xx_usb_probe()
1660 dev->ts1_mode.end_point_addr = in cx231xx_usb_probe()
1664 dev->ts1_mode.num_alt = uif->num_altsetting; in cx231xx_usb_probe()
1667 dev->ts1_mode.end_point_addr, in cx231xx_usb_probe()
1668 dev->ts1_mode.num_alt); in cx231xx_usb_probe()
1670 …dev->ts1_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->ts1_mode.num_alt, GFP_KER… in cx231xx_usb_probe()
1671 if (dev->ts1_mode.alt_max_pkt_size == NULL) { in cx231xx_usb_probe()
1676 for (i = 0; i < dev->ts1_mode.num_alt; i++) { in cx231xx_usb_probe()
1680 dev->ts1_mode.alt_max_pkt_size[i] = in cx231xx_usb_probe()
1683 i, dev->ts1_mode.alt_max_pkt_size[i]); in cx231xx_usb_probe()
1687 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER) { in cx231xx_usb_probe()
1688 cx231xx_enable_OSC(dev); in cx231xx_usb_probe()
1689 cx231xx_reset_out(dev); in cx231xx_usb_probe()
1690 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_usb_probe()
1693 if (dev->model == CX231XX_BOARD_CNXT_RDE_253S) in cx231xx_usb_probe()
1694 cx231xx_sleep_s5h1432(dev); in cx231xx_usb_probe()
1697 request_modules(dev); in cx231xx_usb_probe()
1699 cx231xx_create_media_graph(dev); in cx231xx_usb_probe()
1704 cx231xx_close_extension(dev); in cx231xx_usb_probe()
1705 cx231xx_ir_exit(dev); in cx231xx_usb_probe()
1706 cx231xx_release_analog_resources(dev); in cx231xx_usb_probe()
1707 cx231xx_417_unregister(dev); in cx231xx_usb_probe()
1708 cx231xx_remove_from_devlist(dev); in cx231xx_usb_probe()
1709 cx231xx_dev_uninit(dev); in cx231xx_usb_probe()
1711 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_usb_probe()
1727 struct cx231xx *dev; in cx231xx_usb_disconnect() local
1729 dev = usb_get_intfdata(interface); in cx231xx_usb_disconnect()
1732 if (!dev) in cx231xx_usb_disconnect()
1735 if (!dev->udev) in cx231xx_usb_disconnect()
1738 dev->state |= DEV_DISCONNECTED; in cx231xx_usb_disconnect()
1740 flush_request_modules(dev); in cx231xx_usb_disconnect()
1744 mutex_lock(&dev->lock); in cx231xx_usb_disconnect()
1746 wake_up_interruptible_all(&dev->open); in cx231xx_usb_disconnect()
1748 if (dev->users) { in cx231xx_usb_disconnect()
1749 dev_warn(dev->dev, in cx231xx_usb_disconnect()
1751 video_device_node_name(&dev->vdev)); in cx231xx_usb_disconnect()
1754 cx231xx_ir_exit(dev); in cx231xx_usb_disconnect()
1756 if (dev->USE_ISO) in cx231xx_usb_disconnect()
1757 cx231xx_uninit_isoc(dev); in cx231xx_usb_disconnect()
1759 cx231xx_uninit_bulk(dev); in cx231xx_usb_disconnect()
1760 wake_up_interruptible(&dev->wait_frame); in cx231xx_usb_disconnect()
1761 wake_up_interruptible(&dev->wait_stream); in cx231xx_usb_disconnect()
1765 cx231xx_close_extension(dev); in cx231xx_usb_disconnect()
1767 mutex_unlock(&dev->lock); in cx231xx_usb_disconnect()
1769 if (!dev->users) in cx231xx_usb_disconnect()
1770 cx231xx_release_resources(dev); in cx231xx_usb_disconnect()