Lines Matching defs:radio

68 	struct si4713_usb_device *radio = video_drvdata(file);
70 strscpy(v->driver, "radio-usb-si4713", sizeof(v->driver));
72 usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
79 struct si4713_usb_device *radio = video_drvdata(file);
81 return v4l2_subdev_call(radio->v4l2_subdev, tuner, g_modulator, vm);
87 struct si4713_usb_device *radio = video_drvdata(file);
89 return v4l2_subdev_call(radio->v4l2_subdev, tuner, s_modulator, vm);
95 struct si4713_usb_device *radio = video_drvdata(file);
97 return v4l2_subdev_call(radio->v4l2_subdev, tuner, s_frequency, vf);
103 struct si4713_usb_device *radio = video_drvdata(file);
105 return v4l2_subdev_call(radio->v4l2_subdev, tuner, g_frequency, vf);
130 struct si4713_usb_device *radio = to_si4713_dev(v4l2_dev);
131 struct i2c_adapter *adapter = &radio->i2c_adapter;
134 v4l2_device_unregister(&radio->v4l2_dev);
135 kfree(radio->buffer);
136 kfree(radio);
152 static int si4713_send_startup_command(struct si4713_usb_device *radio)
155 u8 *buffer = radio->buffer;
159 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0),
160 0x09, 0x21, 0x033f, 0, radio->buffer,
167 retval = usb_control_msg(radio->usbdev, usb_rcvctrlpipe(radio->usbdev, 0),
168 0x01, 0xa1, 0x033f, 0, radio->buffer,
172 if (!radio->buffer[1]) {
177 if (radio->buffer[2] == 0)
182 if (radio->buffer[2] & SI4713_CTS)
186 if ((radio->buffer[2] & SI4713_CTS) && radio->buffer[9] == 0x08)
240 static int si4713_start_seq(struct si4713_usb_device *radio)
245 radio->buffer[0] = 0x3f;
251 memcpy(radio->buffer + 1, payload, len);
252 memset(radio->buffer + len + 1, 0, BUFFER_LENGTH - 1 - len);
253 retval = si4713_send_startup_command(radio);
293 static int send_command(struct si4713_usb_device *radio, u8 *payload, char *data, int len)
297 radio->buffer[0] = 0x3f;
298 radio->buffer[1] = 0x06;
300 memcpy(radio->buffer + 2, payload, 3);
301 memcpy(radio->buffer + 5, data, len);
302 memset(radio->buffer + 5 + len, 0, BUFFER_LENGTH - 5 - len);
305 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0),
306 0x09, 0x21, 0x033f, 0, radio->buffer,
312 static int si4713_i2c_read(struct si4713_usb_device *radio, char *data, int len)
319 retval = usb_control_msg(radio->usbdev,
320 usb_rcvctrlpipe(radio->usbdev, 0),
321 0x01, 0xa1, 0x033f, 0, radio->buffer,
333 if (radio->buffer[1] == 0 && (radio->buffer[2] & SI4713_CTS)) {
334 memcpy(data, radio->buffer + 2, len);
346 static int si4713_i2c_write(struct si4713_usb_device *radio, char *data, int len)
356 retval = send_command(radio, command_table[i].payload,
366 struct si4713_usb_device *radio = i2c_get_adapdata(i2c_adapter);
372 retval = si4713_i2c_read(radio, msgs[i].buf, msgs[i].len);
374 retval = si4713_i2c_write(radio, msgs[i].buf, msgs[i].len);
400 static int si4713_register_i2c_adapter(struct si4713_usb_device *radio)
402 radio->i2c_adapter = si4713_i2c_adapter_template;
404 radio->i2c_adapter.dev.parent = &radio->usbdev->dev;
405 i2c_set_adapdata(&radio->i2c_adapter, radio);
407 return i2c_add_adapter(&radio->i2c_adapter);
414 struct si4713_usb_device *radio;
423 radio = kzalloc(sizeof(struct si4713_usb_device), GFP_KERNEL);
424 if (radio)
425 radio->buffer = kmalloc(BUFFER_LENGTH, GFP_KERNEL);
427 if (!radio || !radio->buffer) {
429 kfree(radio);
433 mutex_init(&radio->lock);
435 radio->usbdev = interface_to_usbdev(intf);
436 radio->intf = intf;
437 usb_set_intfdata(intf, &radio->v4l2_dev);
439 retval = si4713_start_seq(radio);
443 retval = v4l2_device_register(&intf->dev, &radio->v4l2_dev);
449 retval = si4713_register_i2c_adapter(radio);
455 adapter = &radio->i2c_adapter;
456 sd = v4l2_i2c_new_subdev_board(&radio->v4l2_dev, adapter,
458 radio->v4l2_subdev = sd;
465 radio->vdev.ctrl_handler = sd->ctrl_handler;
466 radio->v4l2_dev.release = usb_si4713_video_device_release;
467 strscpy(radio->vdev.name, radio->v4l2_dev.name,
468 sizeof(radio->vdev.name));
469 radio->vdev.v4l2_dev = &radio->v4l2_dev;
470 radio->vdev.fops = &usb_si4713_fops;
471 radio->vdev.ioctl_ops = &usb_si4713_ioctl_ops;
472 radio->vdev.lock = &radio->lock;
473 radio->vdev.release = video_device_release_empty;
474 radio->vdev.vfl_dir = VFL_DIR_TX;
475 radio->vdev.device_caps = V4L2_CAP_MODULATOR | V4L2_CAP_RDS_OUTPUT;
477 video_set_drvdata(&radio->vdev, radio);
479 retval = video_register_device(&radio->vdev, VFL_TYPE_RADIO, -1);
486 video_device_node_name(&radio->vdev));
493 v4l2_device_unregister(&radio->v4l2_dev);
495 kfree(radio->buffer);
496 kfree(radio);
502 struct si4713_usb_device *radio = to_si4713_dev(usb_get_intfdata(intf));
506 mutex_lock(&radio->lock);
508 video_unregister_device(&radio->vdev);
509 v4l2_device_disconnect(&radio->v4l2_dev);
510 mutex_unlock(&radio->lock);
511 v4l2_device_put(&radio->v4l2_dev);
516 .name = "radio-usb-si4713",