Lines Matching refs:dev

923 	struct cx231xx *dev = ptr;  in cx231xx_tuner_callback()  local
925 if (dev->tuner_type == TUNER_XC5000) { in cx231xx_tuner_callback()
927 dev_dbg(dev->dev, in cx231xx_tuner_callback()
929 command, dev->tuner_type); in cx231xx_tuner_callback()
930 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
933 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
936 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, in cx231xx_tuner_callback()
940 } else if (dev->tuner_type == TUNER_NXP_TDA18271) { in cx231xx_tuner_callback()
943 if (dev->model == CX231XX_BOARD_PV_PLAYTV_USB_HYBRID) in cx231xx_tuner_callback()
944 rc = cx231xx_set_agc_analog_digital_mux_select(dev, arg); in cx231xx_tuner_callback()
955 static void cx231xx_reset_out(struct cx231xx *dev) in cx231xx_reset_out() argument
957 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
959 cx231xx_set_gpio_value(dev, CX23417_RESET, 0); in cx231xx_reset_out()
961 cx231xx_set_gpio_value(dev, CX23417_RESET, 1); in cx231xx_reset_out()
964 static void cx231xx_enable_OSC(struct cx231xx *dev) in cx231xx_enable_OSC() argument
966 cx231xx_set_gpio_value(dev, CX23417_OSC_EN, 1); in cx231xx_enable_OSC()
969 static void cx231xx_sleep_s5h1432(struct cx231xx *dev) in cx231xx_sleep_s5h1432() argument
971 cx231xx_set_gpio_value(dev, SLEEP_S5H1432, 0); in cx231xx_sleep_s5h1432()
974 static inline void cx231xx_set_model(struct cx231xx *dev) in cx231xx_set_model() argument
976 dev->board = cx231xx_boards[dev->model]; in cx231xx_set_model()
982 void cx231xx_pre_card_setup(struct cx231xx *dev) in cx231xx_pre_card_setup() argument
984 dev_info(dev->dev, "Identified as %s (card=%d)\n", in cx231xx_pre_card_setup()
985 dev->board.name, dev->model); in cx231xx_pre_card_setup()
988 if (dev->board.tuner_gpio) { in cx231xx_pre_card_setup()
989 cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
990 cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1); in cx231xx_pre_card_setup()
992 if (dev->board.tuner_sif_gpio >= 0) in cx231xx_pre_card_setup()
993 cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1); in cx231xx_pre_card_setup()
998 cx231xx_set_mode(dev, CX231XX_ANALOG_MODE); in cx231xx_pre_card_setup()
1005 static void cx231xx_config_tuner(struct cx231xx *dev) in cx231xx_config_tuner() argument
1010 if (dev->tuner_type == TUNER_ABSENT) in cx231xx_config_tuner()
1014 tun_setup.type = dev->tuner_type; in cx231xx_config_tuner()
1015 tun_setup.addr = dev->tuner_addr; in cx231xx_config_tuner()
1018 tuner_call(dev, tuner, s_type_addr, &tun_setup); in cx231xx_config_tuner()
1028 .tuner = dev->tuner_type, in cx231xx_config_tuner()
1031 tuner_call(dev, tuner, s_config, &cfg); in cx231xx_config_tuner()
1038 dev->ctl_freq = f.frequency; in cx231xx_config_tuner()
1039 call_all(dev, tuner, s_frequency, &f); in cx231xx_config_tuner()
1043 static int read_eeprom(struct cx231xx *dev, struct i2c_client *client, in read_eeprom() argument
1058 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1068 dev_err(dev->dev, "Can't read eeprom\n"); in read_eeprom()
1076 dev_dbg(dev->dev, "i2c eeprom %02x: %*ph\n", in read_eeprom()
1082 void cx231xx_card_setup(struct cx231xx *dev) in cx231xx_card_setup() argument
1085 cx231xx_set_model(dev); in cx231xx_card_setup()
1087 dev->tuner_type = cx231xx_boards[dev->model].tuner_type; in cx231xx_card_setup()
1088 if (cx231xx_boards[dev->model].tuner_addr) in cx231xx_card_setup()
1089 dev->tuner_addr = cx231xx_boards[dev->model].tuner_addr; in cx231xx_card_setup()
1092 if (dev->board.decoder == CX231XX_AVDECODER) { in cx231xx_card_setup()
1093 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1094 cx231xx_get_i2c_adap(dev, I2C_0), in cx231xx_card_setup()
1096 if (dev->sd_cx25840 == NULL) in cx231xx_card_setup()
1097 dev_err(dev->dev, in cx231xx_card_setup()
1099 cx25840_call(dev, core, load_fw); in cx231xx_card_setup()
1104 if (dev->board.tuner_type != TUNER_ABSENT) { in cx231xx_card_setup()
1105 struct i2c_adapter *tuner_i2c = cx231xx_get_i2c_adap(dev, in cx231xx_card_setup()
1106 dev->board.tuner_i2c_master); in cx231xx_card_setup()
1107 dev->sd_tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, in cx231xx_card_setup()
1110 dev->tuner_addr, NULL); in cx231xx_card_setup()
1111 if (dev->sd_tuner == NULL) in cx231xx_card_setup()
1112 dev_err(dev->dev, in cx231xx_card_setup()
1115 cx231xx_config_tuner(dev); in cx231xx_card_setup()
1118 switch (dev->model) { in cx231xx_card_setup()
1131 dev_err(dev->dev, in cx231xx_card_setup()
1135 e->client.adapter = cx231xx_get_i2c_adap(dev, I2C_1_MUX_1); in cx231xx_card_setup()
1138 read_eeprom(dev, &e->client, e->eeprom, sizeof(e->eeprom)); in cx231xx_card_setup()
1152 int cx231xx_config(struct cx231xx *dev) in cx231xx_config() argument
1163 void cx231xx_config_i2c(struct cx231xx *dev) in cx231xx_config_i2c() argument
1167 call_all(dev, video, s_stream, 1); in cx231xx_config_i2c()
1170 static void cx231xx_unregister_media_device(struct cx231xx *dev) in cx231xx_unregister_media_device() argument
1173 if (dev->media_dev) { in cx231xx_unregister_media_device()
1174 media_device_unregister(dev->media_dev); in cx231xx_unregister_media_device()
1175 kfree(dev->media_dev); in cx231xx_unregister_media_device()
1176 dev->media_dev = NULL; in cx231xx_unregister_media_device()
1186 void cx231xx_release_resources(struct cx231xx *dev) in cx231xx_release_resources() argument
1188 cx231xx_unregister_media_device(dev); in cx231xx_release_resources()
1190 cx231xx_release_analog_resources(dev); in cx231xx_release_resources()
1192 cx231xx_remove_from_devlist(dev); in cx231xx_release_resources()
1194 cx231xx_ir_exit(dev); in cx231xx_release_resources()
1197 cx231xx_dev_uninit(dev); in cx231xx_release_resources()
1200 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_release_resources()
1202 usb_put_dev(dev->udev); in cx231xx_release_resources()
1205 clear_bit(dev->devno, &cx231xx_devused); in cx231xx_release_resources()
1208 static void cx231xx_media_device_register(struct cx231xx *dev, in cx231xx_media_device_register() argument
1219 mdev->dev = dev->dev; in cx231xx_media_device_register()
1220 strlcpy(mdev->model, dev->board.name, sizeof(mdev->model)); in cx231xx_media_device_register()
1229 dev_err(dev->dev, in cx231xx_media_device_register()
1236 dev->media_dev = mdev; in cx231xx_media_device_register()
1240 static void cx231xx_create_media_graph(struct cx231xx *dev) in cx231xx_create_media_graph() argument
1243 struct media_device *mdev = dev->media_dev; in cx231xx_create_media_graph()
1269 media_entity_create_link(decoder, 1, &dev->vdev.entity, 0, in cx231xx_create_media_graph()
1271 media_entity_create_link(decoder, 2, &dev->vbi_dev.entity, 0, in cx231xx_create_media_graph()
1280 static int cx231xx_init_dev(struct cx231xx *dev, struct usb_device *udev, in cx231xx_init_dev() argument
1286 dev->udev = udev; in cx231xx_init_dev()
1287 mutex_init(&dev->lock); in cx231xx_init_dev()
1288 mutex_init(&dev->ctrl_urb_lock); in cx231xx_init_dev()
1289 mutex_init(&dev->gpio_i2c_lock); in cx231xx_init_dev()
1290 mutex_init(&dev->i2c_lock); in cx231xx_init_dev()
1292 spin_lock_init(&dev->video_mode.slock); in cx231xx_init_dev()
1293 spin_lock_init(&dev->vbi_mode.slock); in cx231xx_init_dev()
1294 spin_lock_init(&dev->sliced_cc_mode.slock); in cx231xx_init_dev()
1296 init_waitqueue_head(&dev->open); in cx231xx_init_dev()
1297 init_waitqueue_head(&dev->wait_frame); in cx231xx_init_dev()
1298 init_waitqueue_head(&dev->wait_stream); in cx231xx_init_dev()
1300 dev->cx231xx_read_ctrl_reg = cx231xx_read_ctrl_reg; in cx231xx_init_dev()
1301 dev->cx231xx_write_ctrl_reg = cx231xx_write_ctrl_reg; in cx231xx_init_dev()
1302 dev->cx231xx_send_usb_command = cx231xx_send_usb_command; in cx231xx_init_dev()
1303 dev->cx231xx_gpio_i2c_read = cx231xx_gpio_i2c_read; in cx231xx_init_dev()
1304 dev->cx231xx_gpio_i2c_write = cx231xx_gpio_i2c_write; in cx231xx_init_dev()
1307 retval = initialize_cx231xx(dev); in cx231xx_init_dev()
1309 dev_err(dev->dev, "Failed to read PCB config\n"); in cx231xx_init_dev()
1315 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER || in cx231xx_init_dev()
1316 dev->model == CX231XX_BOARD_HAUPPAUGE_USBLIVE2) { in cx231xx_init_dev()
1317 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_init_dev()
1318 cx231xx_set_alt_setting(dev, INDEX_VANC, 1); in cx231xx_init_dev()
1321 cx231xx_pre_card_setup(dev); in cx231xx_init_dev()
1323 retval = cx231xx_config(dev); in cx231xx_init_dev()
1325 dev_err(dev->dev, "error configuring device\n"); in cx231xx_init_dev()
1330 dev->norm = dev->board.norm; in cx231xx_init_dev()
1333 retval = cx231xx_dev_init(dev); in cx231xx_init_dev()
1335 dev_err(dev->dev, in cx231xx_init_dev()
1342 cx231xx_card_setup(dev); in cx231xx_init_dev()
1345 cx231xx_config_i2c(dev); in cx231xx_init_dev()
1347 maxw = norm_maxw(dev); in cx231xx_init_dev()
1348 maxh = norm_maxh(dev); in cx231xx_init_dev()
1351 dev->width = maxw; in cx231xx_init_dev()
1352 dev->height = maxh; in cx231xx_init_dev()
1353 dev->interlaced = 0; in cx231xx_init_dev()
1354 dev->video_input = 0; in cx231xx_init_dev()
1356 retval = cx231xx_config(dev); in cx231xx_init_dev()
1358 dev_err(dev->dev, "%s: cx231xx_config - errCode [%d]!\n", in cx231xx_init_dev()
1364 INIT_LIST_HEAD(&dev->video_mode.vidq.active); in cx231xx_init_dev()
1365 INIT_LIST_HEAD(&dev->video_mode.vidq.queued); in cx231xx_init_dev()
1368 INIT_LIST_HEAD(&dev->vbi_mode.vidq.active); in cx231xx_init_dev()
1369 INIT_LIST_HEAD(&dev->vbi_mode.vidq.queued); in cx231xx_init_dev()
1372 cx231xx_add_into_devlist(dev); in cx231xx_init_dev()
1374 if (dev->board.has_417) { in cx231xx_init_dev()
1375 dev_info(dev->dev, "attach 417 %d\n", dev->model); in cx231xx_init_dev()
1376 if (cx231xx_417_register(dev) < 0) { in cx231xx_init_dev()
1377 dev_err(dev->dev, in cx231xx_init_dev()
1383 retval = cx231xx_register_analog_devices(dev); in cx231xx_init_dev()
1387 cx231xx_ir_init(dev); in cx231xx_init_dev()
1389 cx231xx_init_extension(dev); in cx231xx_init_dev()
1393 cx231xx_unregister_media_device(dev); in cx231xx_init_dev()
1394 cx231xx_release_analog_resources(dev); in cx231xx_init_dev()
1395 cx231xx_remove_from_devlist(dev); in cx231xx_init_dev()
1397 cx231xx_dev_uninit(dev); in cx231xx_init_dev()
1404 struct cx231xx *dev = container_of(work, in request_module_async() local
1407 if (dev->has_alsa_audio) in request_module_async()
1410 if (dev->board.has_dvb) in request_module_async()
1415 static void request_modules(struct cx231xx *dev) in request_modules() argument
1417 INIT_WORK(&dev->request_module_wk, request_module_async); in request_modules()
1418 schedule_work(&dev->request_module_wk); in request_modules()
1421 static void flush_request_modules(struct cx231xx *dev) in flush_request_modules() argument
1423 flush_work(&dev->request_module_wk); in flush_request_modules()
1426 #define request_modules(dev) argument
1427 #define flush_request_modules(dev) argument
1430 static int cx231xx_init_v4l2(struct cx231xx *dev, in cx231xx_init_v4l2() argument
1441 idx = dev->current_pcb_config.hs_config_info[0].interface_info.video_index + 1; in cx231xx_init_v4l2()
1442 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1443 dev_err(dev->dev, in cx231xx_init_v4l2()
1450 dev->video_mode.end_point_addr = uif->altsetting[0].endpoint[isoc_pipe].desc.bEndpointAddress; in cx231xx_init_v4l2()
1451 dev->video_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1453 dev_info(dev->dev, in cx231xx_init_v4l2()
1455 dev->video_mode.end_point_addr, in cx231xx_init_v4l2()
1456 dev->video_mode.num_alt); in cx231xx_init_v4l2()
1458dev->video_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->video_mode.num_alt, GFP… in cx231xx_init_v4l2()
1459 if (dev->video_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1462 for (i = 0; i < dev->video_mode.num_alt; i++) { in cx231xx_init_v4l2()
1464 dev->video_mode.alt_max_pkt_size[i] = (tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1); in cx231xx_init_v4l2()
1465 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1467 dev->video_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1472 idx = dev->current_pcb_config.hs_config_info[0].interface_info.vanc_index + 1; in cx231xx_init_v4l2()
1473 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1474 dev_err(dev->dev, in cx231xx_init_v4l2()
1480 dev->vbi_mode.end_point_addr = in cx231xx_init_v4l2()
1484 dev->vbi_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1485 dev_info(dev->dev, in cx231xx_init_v4l2()
1487 dev->vbi_mode.end_point_addr, in cx231xx_init_v4l2()
1488 dev->vbi_mode.num_alt); in cx231xx_init_v4l2()
1491dev->vbi_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->vbi_mode.num_alt, GFP_KER… in cx231xx_init_v4l2()
1492 if (dev->vbi_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1495 for (i = 0; i < dev->vbi_mode.num_alt; i++) { in cx231xx_init_v4l2()
1499 dev->vbi_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1501 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1503 dev->vbi_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1509 idx = dev->current_pcb_config.hs_config_info[0].interface_info.hanc_index + 1; in cx231xx_init_v4l2()
1510 if (idx >= dev->max_iad_interface_count) { in cx231xx_init_v4l2()
1511 dev_err(dev->dev, in cx231xx_init_v4l2()
1517 dev->sliced_cc_mode.end_point_addr = in cx231xx_init_v4l2()
1521 dev->sliced_cc_mode.num_alt = uif->num_altsetting; in cx231xx_init_v4l2()
1522 dev_info(dev->dev, in cx231xx_init_v4l2()
1524 dev->sliced_cc_mode.end_point_addr, in cx231xx_init_v4l2()
1525 dev->sliced_cc_mode.num_alt); in cx231xx_init_v4l2()
1526dev->sliced_cc_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->sliced_cc_mode.num_… in cx231xx_init_v4l2()
1527 if (dev->sliced_cc_mode.alt_max_pkt_size == NULL) in cx231xx_init_v4l2()
1530 for (i = 0; i < dev->sliced_cc_mode.num_alt; i++) { in cx231xx_init_v4l2()
1533 dev->sliced_cc_mode.alt_max_pkt_size[i] = in cx231xx_init_v4l2()
1535 dev_dbg(dev->dev, in cx231xx_init_v4l2()
1537 dev->sliced_cc_mode.alt_max_pkt_size[i]); in cx231xx_init_v4l2()
1551 struct device *d = &interface->dev; in cx231xx_usb_probe()
1553 struct cx231xx *dev = NULL; in cx231xx_usb_probe() local
1585 dev = devm_kzalloc(&udev->dev, sizeof(*dev), GFP_KERNEL); in cx231xx_usb_probe()
1586 if (dev == NULL) { in cx231xx_usb_probe()
1591 snprintf(dev->name, 29, "cx231xx #%d", nr); in cx231xx_usb_probe()
1592 dev->devno = nr; in cx231xx_usb_probe()
1593 dev->model = id->driver_info; in cx231xx_usb_probe()
1594 dev->video_mode.alt = -1; in cx231xx_usb_probe()
1595 dev->dev = d; in cx231xx_usb_probe()
1597 cx231xx_set_model(dev); in cx231xx_usb_probe()
1599 dev->interface_count++; in cx231xx_usb_probe()
1601 dev->gpio_dir = 0; in cx231xx_usb_probe()
1602 dev->gpio_val = 0; in cx231xx_usb_probe()
1603 dev->xc_fw_load_done = 0; in cx231xx_usb_probe()
1604 dev->has_alsa_audio = 1; in cx231xx_usb_probe()
1605 dev->power_mode = -1; in cx231xx_usb_probe()
1606 atomic_set(&dev->devlist_count, 0); in cx231xx_usb_probe()
1609 dev->vbi_or_sliced_cc_mode = 0; in cx231xx_usb_probe()
1612 dev->max_iad_interface_count = udev->config->desc.bNumInterfaces; in cx231xx_usb_probe()
1617 dev->mode_tv = 0; in cx231xx_usb_probe()
1619 dev->USE_ISO = transfer_mode; in cx231xx_usb_probe()
1643 dev->max_iad_interface_count); in cx231xx_usb_probe()
1646 dev->interface_count++; in cx231xx_usb_probe()
1649 nr = dev->devno; in cx231xx_usb_probe()
1661 usb_set_intfdata(interface, dev); in cx231xx_usb_probe()
1664 cx231xx_media_device_register(dev, udev); in cx231xx_usb_probe()
1668 dev->v4l2_dev.mdev = dev->media_dev; in cx231xx_usb_probe()
1670 retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev); in cx231xx_usb_probe()
1677 retval = cx231xx_init_dev(dev, udev, nr); in cx231xx_usb_probe()
1681 retval = cx231xx_init_v4l2(dev, udev, interface, isoc_pipe); in cx231xx_usb_probe()
1685 if (dev->current_pcb_config.ts1_source != 0xff) { in cx231xx_usb_probe()
1687 idx = dev->current_pcb_config.hs_config_info[0].interface_info.ts1_index + 1; in cx231xx_usb_probe()
1688 if (idx >= dev->max_iad_interface_count) { in cx231xx_usb_probe()
1696 dev->ts1_mode.end_point_addr = in cx231xx_usb_probe()
1700 dev->ts1_mode.num_alt = uif->num_altsetting; in cx231xx_usb_probe()
1703 dev->ts1_mode.end_point_addr, in cx231xx_usb_probe()
1704 dev->ts1_mode.num_alt); in cx231xx_usb_probe()
1706dev->ts1_mode.alt_max_pkt_size = devm_kmalloc_array(&udev->dev, 32, dev->ts1_mode.num_alt, GFP_KER… in cx231xx_usb_probe()
1707 if (dev->ts1_mode.alt_max_pkt_size == NULL) { in cx231xx_usb_probe()
1712 for (i = 0; i < dev->ts1_mode.num_alt; i++) { in cx231xx_usb_probe()
1716 dev->ts1_mode.alt_max_pkt_size[i] = in cx231xx_usb_probe()
1719 i, dev->ts1_mode.alt_max_pkt_size[i]); in cx231xx_usb_probe()
1723 if (dev->model == CX231XX_BOARD_CNXT_VIDEO_GRABBER) { in cx231xx_usb_probe()
1724 cx231xx_enable_OSC(dev); in cx231xx_usb_probe()
1725 cx231xx_reset_out(dev); in cx231xx_usb_probe()
1726 cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3); in cx231xx_usb_probe()
1729 if (dev->model == CX231XX_BOARD_CNXT_RDE_253S) in cx231xx_usb_probe()
1730 cx231xx_sleep_s5h1432(dev); in cx231xx_usb_probe()
1733 request_modules(dev); in cx231xx_usb_probe()
1735 cx231xx_create_media_graph(dev); in cx231xx_usb_probe()
1740 cx231xx_close_extension(dev); in cx231xx_usb_probe()
1741 cx231xx_ir_exit(dev); in cx231xx_usb_probe()
1742 cx231xx_release_analog_resources(dev); in cx231xx_usb_probe()
1743 cx231xx_417_unregister(dev); in cx231xx_usb_probe()
1744 cx231xx_remove_from_devlist(dev); in cx231xx_usb_probe()
1745 cx231xx_dev_uninit(dev); in cx231xx_usb_probe()
1747 v4l2_device_unregister(&dev->v4l2_dev); in cx231xx_usb_probe()
1763 struct cx231xx *dev; in cx231xx_usb_disconnect() local
1765 dev = usb_get_intfdata(interface); in cx231xx_usb_disconnect()
1768 if (!dev) in cx231xx_usb_disconnect()
1771 if (!dev->udev) in cx231xx_usb_disconnect()
1774 dev->state |= DEV_DISCONNECTED; in cx231xx_usb_disconnect()
1776 flush_request_modules(dev); in cx231xx_usb_disconnect()
1780 mutex_lock(&dev->lock); in cx231xx_usb_disconnect()
1782 wake_up_interruptible_all(&dev->open); in cx231xx_usb_disconnect()
1784 if (dev->users) { in cx231xx_usb_disconnect()
1785 dev_warn(dev->dev, in cx231xx_usb_disconnect()
1787 video_device_node_name(&dev->vdev)); in cx231xx_usb_disconnect()
1790 cx231xx_ir_exit(dev); in cx231xx_usb_disconnect()
1792 if (dev->USE_ISO) in cx231xx_usb_disconnect()
1793 cx231xx_uninit_isoc(dev); in cx231xx_usb_disconnect()
1795 cx231xx_uninit_bulk(dev); in cx231xx_usb_disconnect()
1796 wake_up_interruptible(&dev->wait_frame); in cx231xx_usb_disconnect()
1797 wake_up_interruptible(&dev->wait_stream); in cx231xx_usb_disconnect()
1801 cx231xx_close_extension(dev); in cx231xx_usb_disconnect()
1803 mutex_unlock(&dev->lock); in cx231xx_usb_disconnect()
1805 if (!dev->users) in cx231xx_usb_disconnect()
1806 cx231xx_release_resources(dev); in cx231xx_usb_disconnect()