Lines Matching refs:radio
80 struct si4713_usb_device *radio = video_drvdata(file); in vidioc_querycap() local
84 usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info)); in vidioc_querycap()
94 struct si4713_usb_device *radio = video_drvdata(file); in vidioc_g_modulator() local
96 return v4l2_subdev_call(radio->v4l2_subdev, tuner, g_modulator, vm); in vidioc_g_modulator()
102 struct si4713_usb_device *radio = video_drvdata(file); in vidioc_s_modulator() local
104 return v4l2_subdev_call(radio->v4l2_subdev, tuner, s_modulator, vm); in vidioc_s_modulator()
110 struct si4713_usb_device *radio = video_drvdata(file); in vidioc_s_frequency() local
112 return v4l2_subdev_call(radio->v4l2_subdev, tuner, s_frequency, vf); in vidioc_s_frequency()
118 struct si4713_usb_device *radio = video_drvdata(file); in vidioc_g_frequency() local
120 return v4l2_subdev_call(radio->v4l2_subdev, tuner, g_frequency, vf); in vidioc_g_frequency()
145 struct si4713_usb_device *radio = to_si4713_dev(v4l2_dev); in usb_si4713_video_device_release() local
146 struct i2c_adapter *adapter = &radio->i2c_adapter; in usb_si4713_video_device_release()
149 v4l2_device_unregister(&radio->v4l2_dev); in usb_si4713_video_device_release()
150 kfree(radio->buffer); in usb_si4713_video_device_release()
151 kfree(radio); in usb_si4713_video_device_release()
167 static int si4713_send_startup_command(struct si4713_usb_device *radio) in si4713_send_startup_command() argument
170 u8 *buffer = radio->buffer; in si4713_send_startup_command()
174 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0), in si4713_send_startup_command()
175 0x09, 0x21, 0x033f, 0, radio->buffer, in si4713_send_startup_command()
182 retval = usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0), in si4713_send_startup_command()
183 0x01, 0xa1, 0x033f, 0, radio->buffer, in si4713_send_startup_command()
187 if (!radio->buffer[1]) { in si4713_send_startup_command()
192 if (radio->buffer[2] == 0) in si4713_send_startup_command()
197 if (radio->buffer[2] & SI4713_CTS) in si4713_send_startup_command()
201 if ((radio->buffer[2] & SI4713_CTS) && radio->buffer[9] == 0x08) in si4713_send_startup_command()
255 static int si4713_start_seq(struct si4713_usb_device *radio) in si4713_start_seq() argument
260 radio->buffer[0] = 0x3f; in si4713_start_seq()
266 memcpy(radio->buffer + 1, payload, len); in si4713_start_seq()
267 memset(radio->buffer + len + 1, 0, BUFFER_LENGTH - 1 - len); in si4713_start_seq()
268 retval = si4713_send_startup_command(radio); in si4713_start_seq()
308 static int send_command(struct si4713_usb_device *radio, u8 *payload, char *data, int len) in send_command() argument
312 radio->buffer[0] = 0x3f; in send_command()
313 radio->buffer[1] = 0x06; in send_command()
315 memcpy(radio->buffer + 2, payload, 3); in send_command()
316 memcpy(radio->buffer + 5, data, len); in send_command()
317 memset(radio->buffer + 5 + len, 0, BUFFER_LENGTH - 5 - len); in send_command()
320 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0), in send_command()
321 0x09, 0x21, 0x033f, 0, radio->buffer, in send_command()
327 static int si4713_i2c_read(struct si4713_usb_device *radio, char *data, int len) in si4713_i2c_read() argument
334 retval = usb_control_msg(radio->usbdev, in si4713_i2c_read()
335 usb_rcvctrlpipe(radio->usbdev, 0), in si4713_i2c_read()
336 0x01, 0xa1, 0x033f, 0, radio->buffer, in si4713_i2c_read()
348 if (radio->buffer[1] == 0 && (radio->buffer[2] & SI4713_CTS)) { in si4713_i2c_read()
349 memcpy(data, radio->buffer + 2, len); in si4713_i2c_read()
361 static int si4713_i2c_write(struct si4713_usb_device *radio, char *data, int len) in si4713_i2c_write() argument
371 retval = send_command(radio, command_table[i].payload, in si4713_i2c_write()
381 struct si4713_usb_device *radio = i2c_get_adapdata(i2c_adapter); in si4713_transfer() local
390 retval = si4713_i2c_read(radio, msgs[i].buf, msgs[i].len); in si4713_transfer()
392 retval = si4713_i2c_write(radio, msgs[i].buf, msgs[i].len); in si4713_transfer()
418 static int si4713_register_i2c_adapter(struct si4713_usb_device *radio) in si4713_register_i2c_adapter() argument
420 radio->i2c_adapter = si4713_i2c_adapter_template; in si4713_register_i2c_adapter()
422 radio->i2c_adapter.dev.parent = &radio->usbdev->dev; in si4713_register_i2c_adapter()
423 i2c_set_adapdata(&radio->i2c_adapter, radio); in si4713_register_i2c_adapter()
425 return i2c_add_adapter(&radio->i2c_adapter); in si4713_register_i2c_adapter()
432 struct si4713_usb_device *radio; in usb_si4713_probe() local
441 radio = kzalloc(sizeof(struct si4713_usb_device), GFP_KERNEL); in usb_si4713_probe()
442 if (radio) in usb_si4713_probe()
443 radio->buffer = kmalloc(BUFFER_LENGTH, GFP_KERNEL); in usb_si4713_probe()
445 if (!radio || !radio->buffer) { in usb_si4713_probe()
447 kfree(radio); in usb_si4713_probe()
451 mutex_init(&radio->lock); in usb_si4713_probe()
453 radio->usbdev = interface_to_usbdev(intf); in usb_si4713_probe()
454 radio->intf = intf; in usb_si4713_probe()
455 usb_set_intfdata(intf, &radio->v4l2_dev); in usb_si4713_probe()
457 retval = si4713_start_seq(radio); in usb_si4713_probe()
461 retval = v4l2_device_register(&intf->dev, &radio->v4l2_dev); in usb_si4713_probe()
467 retval = si4713_register_i2c_adapter(radio); in usb_si4713_probe()
473 adapter = &radio->i2c_adapter; in usb_si4713_probe()
474 sd = v4l2_i2c_new_subdev_board(&radio->v4l2_dev, adapter, in usb_si4713_probe()
476 radio->v4l2_subdev = sd; in usb_si4713_probe()
483 radio->vdev.ctrl_handler = sd->ctrl_handler; in usb_si4713_probe()
484 radio->v4l2_dev.release = usb_si4713_video_device_release; in usb_si4713_probe()
485 strlcpy(radio->vdev.name, radio->v4l2_dev.name, in usb_si4713_probe()
486 sizeof(radio->vdev.name)); in usb_si4713_probe()
487 radio->vdev.v4l2_dev = &radio->v4l2_dev; in usb_si4713_probe()
488 radio->vdev.fops = &usb_si4713_fops; in usb_si4713_probe()
489 radio->vdev.ioctl_ops = &usb_si4713_ioctl_ops; in usb_si4713_probe()
490 radio->vdev.lock = &radio->lock; in usb_si4713_probe()
491 radio->vdev.release = video_device_release_empty; in usb_si4713_probe()
492 radio->vdev.vfl_dir = VFL_DIR_TX; in usb_si4713_probe()
494 video_set_drvdata(&radio->vdev, radio); in usb_si4713_probe()
496 retval = video_register_device(&radio->vdev, VFL_TYPE_RADIO, -1); in usb_si4713_probe()
503 video_device_node_name(&radio->vdev)); in usb_si4713_probe()
510 v4l2_device_unregister(&radio->v4l2_dev); in usb_si4713_probe()
512 kfree(radio->buffer); in usb_si4713_probe()
513 kfree(radio); in usb_si4713_probe()
519 struct si4713_usb_device *radio = to_si4713_dev(usb_get_intfdata(intf)); in usb_si4713_disconnect() local
523 mutex_lock(&radio->lock); in usb_si4713_disconnect()
525 video_unregister_device(&radio->vdev); in usb_si4713_disconnect()
526 v4l2_device_disconnect(&radio->v4l2_dev); in usb_si4713_disconnect()
527 mutex_unlock(&radio->lock); in usb_si4713_disconnect()
528 v4l2_device_put(&radio->v4l2_dev); in usb_si4713_disconnect()