Lines Matching defs:radio
3 * Driver for the MasterKit MA901 USB FM radio. This device plugs
24 #define DRIVER_DESC "Masterkit MA901 USB FM radio driver"
36 #define MA901_DRIVER_NAME "radio-ma901"
93 static int ma901radio_set_freq(struct ma901radio_device *radio, int freq)
98 radio->buffer[0] = 0x0a;
99 radio->buffer[1] = MA901_RADIO_SET_FREQ;
100 radio->buffer[2] = ((freq_send >> 8) & 0xff) + 0x80;
101 radio->buffer[3] = freq_send & 0xff;
102 radio->buffer[4] = 0x00;
103 radio->buffer[5] = 0x00;
104 radio->buffer[6] = 0x00;
105 radio->buffer[7] = 0x00;
107 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0),
109 radio->buffer, BUFFER_LENGTH, USB_TIMEOUT);
113 radio->curfreq = freq;
117 static int ma901radio_set_volume(struct ma901radio_device *radio, u16 vol_to_set)
121 radio->buffer[0] = 0x0a;
122 radio->buffer[1] = MA901_RADIO_SET_VOLUME;
123 radio->buffer[2] = 0xc2;
124 radio->buffer[3] = vol_to_set + 0x20;
125 radio->buffer[4] = 0x00;
126 radio->buffer[5] = 0x00;
127 radio->buffer[6] = 0x00;
128 radio->buffer[7] = 0x00;
130 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0),
132 radio->buffer, BUFFER_LENGTH, USB_TIMEOUT);
136 radio->volume = vol_to_set;
140 static int ma901_set_stereo(struct ma901radio_device *radio, u8 stereo)
144 radio->buffer[0] = 0x0a;
145 radio->buffer[1] = MA901_RADIO_SET_MONO_STEREO;
146 radio->buffer[2] = stereo;
147 radio->buffer[3] = 0x00;
148 radio->buffer[4] = 0x00;
149 radio->buffer[5] = 0x00;
150 radio->buffer[6] = 0x00;
151 radio->buffer[7] = 0x00;
153 retval = usb_control_msg(radio->usbdev, usb_sndctrlpipe(radio->usbdev, 0),
155 radio->buffer, BUFFER_LENGTH, USB_TIMEOUT);
161 radio->stereo = V4L2_TUNER_MODE_STEREO;
163 radio->stereo = V4L2_TUNER_MODE_MONO;
175 struct ma901radio_device *radio = to_ma901radio_dev(usb_get_intfdata(intf));
177 mutex_lock(&radio->lock);
178 video_unregister_device(&radio->vdev);
180 v4l2_device_disconnect(&radio->v4l2_dev);
181 mutex_unlock(&radio->lock);
182 v4l2_device_put(&radio->v4l2_dev);
189 struct ma901radio_device *radio = video_drvdata(file);
191 strscpy(v->driver, "radio-ma901", sizeof(v->driver));
193 usb_make_path(radio->usbdev, v->bus_info, sizeof(v->bus_info));
201 struct ma901radio_device *radio = video_drvdata(file);
211 * retval = ma901radio_get_stat(radio, &is_stereo, &v->signal);
220 v->audmode = radio->stereo ?
229 struct ma901radio_device *radio = video_drvdata(file);
237 return ma901_set_stereo(radio, MA901_WANT_MONO);
239 return ma901_set_stereo(radio, MA901_WANT_STEREO);
243 /* vidioc_s_frequency - set tuner radio frequency */
247 struct ma901radio_device *radio = video_drvdata(file);
252 return ma901radio_set_freq(radio, clamp_t(unsigned, f->frequency,
256 /* vidioc_g_frequency - get tuner radio frequency */
260 struct ma901radio_device *radio = video_drvdata(file);
264 f->frequency = radio->curfreq;
271 struct ma901radio_device *radio =
276 return ma901radio_set_volume(radio, (u16)ctrl->val);
323 struct ma901radio_device *radio = to_ma901radio_dev(v4l2_dev);
325 v4l2_ctrl_handler_free(&radio->hdl);
326 v4l2_device_unregister(&radio->v4l2_dev);
327 kfree(radio->buffer);
328 kfree(radio);
336 struct ma901radio_device *radio;
339 /* Masterkit MA901 usb radio has the same USB ID as many others
349 radio = kzalloc(sizeof(struct ma901radio_device), GFP_KERNEL);
350 if (!radio) {
356 radio->buffer = kmalloc(BUFFER_LENGTH, GFP_KERNEL);
357 if (!radio->buffer) {
358 dev_err(&intf->dev, "kmalloc for radio->buffer failed\n");
363 retval = v4l2_device_register(&intf->dev, &radio->v4l2_dev);
369 v4l2_ctrl_handler_init(&radio->hdl, 1);
371 /* TODO:It looks like this radio doesn't have mute/unmute control
375 * v4l2_ctrl_new_std(&radio->hdl, &usb_ma901radio_ctrl_ops,
379 v4l2_ctrl_new_std(&radio->hdl, &usb_ma901radio_ctrl_ops,
383 if (radio->hdl.error) {
384 retval = radio->hdl.error;
388 mutex_init(&radio->lock);
390 radio->v4l2_dev.ctrl_handler = &radio->hdl;
391 radio->v4l2_dev.release = usb_ma901radio_release;
392 strscpy(radio->vdev.name, radio->v4l2_dev.name,
393 sizeof(radio->vdev.name));
394 radio->vdev.v4l2_dev = &radio->v4l2_dev;
395 radio->vdev.fops = &usb_ma901radio_fops;
396 radio->vdev.ioctl_ops = &usb_ma901radio_ioctl_ops;
397 radio->vdev.release = video_device_release_empty;
398 radio->vdev.lock = &radio->lock;
399 radio->vdev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
401 radio->usbdev = interface_to_usbdev(intf);
402 radio->intf = intf;
403 usb_set_intfdata(intf, &radio->v4l2_dev);
404 radio->curfreq = 95.21 * FREQ_MUL;
406 video_set_drvdata(&radio->vdev, radio);
409 * but it's not implemented yet. After insertion in usb-port radio
412 * retval = usb_ma901radio_init(radio);
415 retval = video_register_device(&radio->vdev, VFL_TYPE_RADIO,
425 v4l2_ctrl_handler_free(&radio->hdl);
427 v4l2_device_unregister(&radio->v4l2_dev);
429 kfree(radio->buffer);
431 kfree(radio);