Lines Matching defs:radio

2 /* A driver for the D-Link DSB-R100 USB radio and Gemtek USB Radio 21.
40 MODULE_DESCRIPTION("D-Link DSB-R100 USB FM radio driver");
81 static int dsbr100_setfreq(struct dsbr100_device *radio, unsigned freq)
86 if (!radio->muted) {
87 retval = usb_control_msg(radio->usbdev,
88 usb_rcvctrlpipe(radio->usbdev, 0),
92 radio->transfer_buffer, 8, 300);
98 radio->curfreq = freq;
101 dev_err(&radio->usbdev->dev,
107 /* switch on radio */
108 static int dsbr100_start(struct dsbr100_device *radio)
110 int retval = usb_control_msg(radio->usbdev,
111 usb_rcvctrlpipe(radio->usbdev, 0),
114 0x01, 0x00, radio->transfer_buffer, 8, 300);
117 return dsbr100_setfreq(radio, radio->curfreq);
118 dev_err(&radio->usbdev->dev,
125 /* switch off radio */
126 static int dsbr100_stop(struct dsbr100_device *radio)
128 int retval = usb_control_msg(radio->usbdev,
129 usb_rcvctrlpipe(radio->usbdev, 0),
132 0x00, 0x00, radio->transfer_buffer, 8, 300);
136 dev_err(&radio->usbdev->dev,
145 static void dsbr100_getstat(struct dsbr100_device *radio)
147 int retval = usb_control_msg(radio->usbdev,
148 usb_rcvctrlpipe(radio->usbdev, 0),
151 0x00, 0x24, radio->transfer_buffer, 8, 300);
154 radio->stereo = false;
155 dev_err(&radio->usbdev->dev,
159 radio->stereo = !(radio->transfer_buffer[0] & 0x01);
166 struct dsbr100_device *radio = video_drvdata(file);
170 usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
177 struct dsbr100_device *radio = video_drvdata(file);
182 dsbr100_getstat(radio);
187 v->rxsubchans = radio->stereo ? V4L2_TUNER_SUB_STEREO :
191 v->signal = radio->stereo ? 0xffff : 0; /* We can't get the signal strength */
204 struct dsbr100_device *radio = video_drvdata(file);
209 return dsbr100_setfreq(radio, clamp_t(unsigned, f->frequency,
216 struct dsbr100_device *radio = video_drvdata(file);
221 f->frequency = radio->curfreq;
227 struct dsbr100_device *radio =
232 radio->muted = ctrl->val;
233 return radio->muted ? dsbr100_stop(radio) : dsbr100_start(radio);
249 struct dsbr100_device *radio = usb_get_intfdata(intf);
251 mutex_lock(&radio->v4l2_lock);
257 usb_control_msg(radio->usbdev,
258 usb_rcvctrlpipe(radio->usbdev, 0),
261 0x00, 0x00, radio->transfer_buffer, 8, 300);
263 video_unregister_device(&radio->videodev);
264 v4l2_device_disconnect(&radio->v4l2_dev);
265 mutex_unlock(&radio->v4l2_lock);
266 v4l2_device_put(&radio->v4l2_dev);
273 struct dsbr100_device *radio = usb_get_intfdata(intf);
275 mutex_lock(&radio->v4l2_lock);
276 if (!radio->muted && dsbr100_stop(radio) < 0)
278 mutex_unlock(&radio->v4l2_lock);
287 struct dsbr100_device *radio = usb_get_intfdata(intf);
289 mutex_lock(&radio->v4l2_lock);
290 if (!radio->muted && dsbr100_start(radio) < 0)
292 mutex_unlock(&radio->v4l2_lock);
301 struct dsbr100_device *radio = v4l2_dev_to_radio(v4l2_dev);
303 v4l2_ctrl_handler_free(&radio->hdl);
304 v4l2_device_unregister(&radio->v4l2_dev);
305 kfree(radio->transfer_buffer);
306 kfree(radio);
337 struct dsbr100_device *radio;
341 radio = kzalloc(sizeof(struct dsbr100_device), GFP_KERNEL);
343 if (!radio)
346 radio->transfer_buffer = kmalloc(TB_LEN, GFP_KERNEL);
348 if (!(radio->transfer_buffer)) {
349 kfree(radio);
353 v4l2_dev = &radio->v4l2_dev;
362 v4l2_ctrl_handler_init(&radio->hdl, 1);
363 v4l2_ctrl_new_std(&radio->hdl, &usb_dsbr100_ctrl_ops,
365 if (radio->hdl.error) {
366 retval = radio->hdl.error;
370 mutex_init(&radio->v4l2_lock);
371 strscpy(radio->videodev.name, v4l2_dev->name,
372 sizeof(radio->videodev.name));
373 radio->videodev.v4l2_dev = v4l2_dev;
374 radio->videodev.fops = &usb_dsbr100_fops;
375 radio->videodev.ioctl_ops = &usb_dsbr100_ioctl_ops;
376 radio->videodev.release = video_device_release_empty;
377 radio->videodev.lock = &radio->v4l2_lock;
378 radio->videodev.ctrl_handler = &radio->hdl;
379 radio->videodev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
381 radio->usbdev = interface_to_usbdev(intf);
382 radio->curfreq = FREQ_MIN * FREQ_MUL;
383 radio->muted = true;
385 video_set_drvdata(&radio->videodev, radio);
386 usb_set_intfdata(intf, radio);
388 retval = video_register_device(&radio->videodev, VFL_TYPE_RADIO, radio_nr);
394 v4l2_ctrl_handler_free(&radio->hdl);
397 kfree(radio->transfer_buffer);
398 kfree(radio);