Lines Matching refs:radio

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