Lines Matching defs:go

622 static int go7007_usb_vendor_request(struct go7007 *go, int request,
625 struct go7007_usb *usb = go->hpi_context;
641 static int go7007_usb_interface_reset(struct go7007 *go)
643 struct go7007_usb *usb = go->hpi_context;
646 if (go->status == STATUS_SHUTDOWN)
649 if (go7007_write_interrupt(go, 0x0001, 0x0001) < 0)
656 if (go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0 ||
657 go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0)
661 if (go7007_write_interrupt(go, 0x0001, 0x0001) < 0)
667 if (go7007_read_interrupt(go, &intr_val, &intr_data) < 0 ||
669 dev_err(go->dev, "unable to reset the USB interface\n");
675 static int go7007_usb_ezusb_write_interrupt(struct go7007 *go,
678 struct go7007_usb *usb = go->hpi_context;
689 0, HPI_STATUS_ADDR, go->usb_buf,
693 status_reg = le16_to_cpu(*((__le16 *)go->usb_buf));
701 dev_err(go->dev, "device is hung, status reg = 0x%04x\n", status_reg);
717 dev_err(go->dev, "error in WriteInterrupt: %d\n", r);
721 static int go7007_usb_onboard_write_interrupt(struct go7007 *go,
724 struct go7007_usb *usb = go->hpi_context;
730 go->usb_buf[0] = data & 0xff;
731 go->usb_buf[1] = data >> 8;
732 go->usb_buf[2] = addr & 0xff;
733 go->usb_buf[3] = addr >> 8;
734 go->usb_buf[4] = go->usb_buf[5] = go->usb_buf[6] = go->usb_buf[7] = 0;
737 0xf0f0, go->usb_buf, 8, timeout);
739 dev_err(go->dev, "error in WriteInterrupt: %d\n", r);
747 struct go7007 *go = (struct go7007 *)urb->context;
753 go->status != STATUS_SHUTDOWN) {
754 dev_err(go->dev, "error in read interrupt: %d\n", urb->status);
756 wake_up(&go->interrupt_waitq);
760 dev_err(go->dev, "short read in interrupt pipe!\n");
762 go->interrupt_available = 1;
763 go->interrupt_data = __le16_to_cpu(regs[0]);
764 go->interrupt_value = __le16_to_cpu(regs[1]);
766 go->interrupt_value, go->interrupt_data);
769 wake_up(&go->interrupt_waitq);
772 static int go7007_usb_read_interrupt(struct go7007 *go)
774 struct go7007_usb *usb = go->hpi_context;
779 dev_err(go->dev, "unable to submit interrupt urb: %d\n", r);
787 struct go7007 *go = (struct go7007 *)urb->context;
790 if (!vb2_is_streaming(&go->vidq)) {
791 wake_up_interruptible(&go->frame_waitq);
795 dev_err(go->dev, "error in video pipe: %d\n", status);
799 dev_err(go->dev, "short read in video pipe!\n");
802 go7007_parse_video_stream(go, urb->transfer_buffer, urb->actual_length);
805 dev_err(go->dev, "error in video pipe: %d\n", r);
810 struct go7007 *go = (struct go7007 *)urb->context;
813 if (!vb2_is_streaming(&go->vidq))
816 dev_err(go->dev, "error in audio pipe: %d\n",
821 dev_err(go->dev, "short read in audio pipe!\n");
824 if (go->audio_deliver != NULL)
825 go->audio_deliver(go, urb->transfer_buffer, urb->actual_length);
828 dev_err(go->dev, "error in audio pipe: %d\n", r);
831 static int go7007_usb_stream_start(struct go7007 *go)
833 struct go7007_usb *usb = go->hpi_context;
839 dev_err(go->dev, "error submitting video urb %d: %d\n", i, r);
843 if (!go->audio_enabled)
849 dev_err(go->dev, "error submitting audio urb %d: %d\n", i, r);
864 static int go7007_usb_stream_stop(struct go7007 *go)
866 struct go7007_usb *usb = go->hpi_context;
869 if (go->status == STATUS_SHUTDOWN)
873 if (go->audio_enabled)
879 static int go7007_usb_send_firmware(struct go7007 *go, u8 *data, int len)
881 struct go7007_usb *usb = go->hpi_context;
896 static void go7007_usb_release(struct go7007 *go)
898 struct go7007_usb *usb = go->hpi_context;
924 kfree(go->hpi_context);
952 struct go7007 *go = i2c_get_adapdata(adapter);
953 struct go7007_usb *usb = go->hpi_context;
954 u8 *buf = go->usb_buf;
958 if (go->status == STATUS_SHUTDOWN)
1002 if (go7007_usb_vendor_request(go, 0x24, 0, 0,
1007 if (go7007_usb_vendor_request(go, 0x25, 0, 0, buf,
1043 struct go7007 *go;
1114 go = go7007_alloc(&board->main_info, &intf->dev);
1115 if (go == NULL)
1120 kfree(go);
1126 usb_make_path(usbdev, go->bus_info, sizeof(go->bus_info));
1127 go->board_id = id->driver_info;
1128 strscpy(go->name, name, sizeof(go->name));
1130 go->hpi_ops = &go7007_usb_ezusb_hpi_ops;
1132 go->hpi_ops = &go7007_usb_onboard_hpi_ops;
1133 go->hpi_context = usb;
1152 go7007_usb_readinterrupt_complete, go);
1157 go7007_usb_readinterrupt_complete, go, 8);
1158 usb_set_intfdata(intf, &go->v4l2_dev);
1161 if (go7007_boot_encoder(go, go->board_info->flags &
1167 memcpy(&go->i2c_adapter, &go7007_usb_adap_templ,
1170 go->i2c_adapter.dev.parent = go->dev;
1171 i2c_set_adapdata(&go->i2c_adapter, go);
1172 if (i2c_add_adapter(&go->i2c_adapter) < 0) {
1173 dev_err(go->dev, "error: i2c_add_adapter failed\n");
1176 go->i2c_adapter_online = 1;
1185 if ((go->board_id == GO7007_BOARDID_XMEN ||
1186 go->board_id == GO7007_BOARDID_XMEN_III) &&
1187 go->i2c_adapter_online) {
1191 i2c_smbus_xfer(&go->i2c_adapter, 0x21, I2C_CLIENT_SCCB,
1195 go->board_id = GO7007_BOARDID_ENDURA;
1197 go->board_info = &board->main_info;
1198 strscpy(go->name, "Pelco Endura",
1199 sizeof(go->name));
1204 if (go7007_read_addr(go, 0x3c81, &channel))
1208 go->board_id = GO7007_BOARDID_ADLINK_MPG24;
1210 go->board_info = &board->main_info;
1211 go->channel_number = channel;
1212 snprintf(go->name, sizeof(go->name),
1216 go7007_update_board(go);
1220 num_i2c_devs = go->board_info->num_i2c_devs;
1223 if (go->board_id == GO7007_BOARDID_PX_TV402U) {
1225 if (go7007_usb_vendor_request(go, 0x41, 0, 0, go->usb_buf, 3,
1227 dev_err(go->dev, "GPIO read failed!\n");
1230 switch (go->usb_buf[0] >> 6) {
1232 go->tuner_type = TUNER_SONY_BTF_PG472Z;
1233 go->std = V4L2_STD_PAL;
1234 strscpy(go->name, "Plextor PX-TV402U-EU",
1235 sizeof(go->name));
1238 go->tuner_type = TUNER_SONY_BTF_PK467Z;
1239 go->std = V4L2_STD_NTSC_M_JP;
1241 strscpy(go->name, "Plextor PX-TV402U-JP",
1242 sizeof(go->name));
1245 go->tuner_type = TUNER_SONY_BTF_PB463Z;
1247 strscpy(go->name, "Plextor PX-TV402U-NA",
1248 sizeof(go->name));
1256 if (go7007_usb_vendor_request(go, 0x40, 0x7f02, 0,
1258 dev_err(go->dev, "GPIO write failed!\n");
1267 dev_err(go->dev, "*** WARNING *** This device must be connected to a USB 2.0 port! Attempting to capture video through a USB 1.1 port will result in stream corruption, even at low bitrates!\n");
1291 go7007_usb_read_video_pipe_complete, go);
1310 go7007_usb_read_audio_pipe_complete, go);
1316 if (go7007_register_encoder(go, num_i2c_devs) < 0)
1319 go->status = STATUS_ONLINE;
1323 go7007_usb_release(go);
1324 kfree(go);
1330 struct go7007 *go = to_go7007(usb_get_intfdata(intf));
1332 mutex_lock(&go->queue_lock);
1333 mutex_lock(&go->serialize_lock);
1335 if (go->audio_enabled)
1336 go7007_snd_remove(go);
1338 go->status = STATUS_SHUTDOWN;
1339 v4l2_device_disconnect(&go->v4l2_dev);
1340 video_unregister_device(&go->vdev);
1341 mutex_unlock(&go->serialize_lock);
1342 mutex_unlock(&go->queue_lock);
1344 v4l2_device_put(&go->v4l2_dev);