Lines Matching refs:radio
3 * driver/media/radio/radio-tea5764.c
5 * Driver for TEA5764 radio chip for linux 2.6.
9 * Based in radio-tea5761.c Copyright (C) 2005 Nokia Corporation
25 #include <linux/videodev2.h> /* kernel radio structs */
36 #define DRIVER_DESC "A driver for the TEA5764 radio chip for EZX Phones."
140 static int tea5764_i2c_read(struct tea5764_device *radio)
143 u16 *p = (u16 *) &radio->regs;
146 { .addr = radio->i2c_client->addr,
148 .len = sizeof(radio->regs),
149 .buf = (void *)&radio->regs
152 if (i2c_transfer(radio->i2c_client->adapter, msgs, 1) != 1)
160 static int tea5764_i2c_write(struct tea5764_device *radio)
163 struct tea5764_regs *r = &radio->regs;
166 .addr = radio->i2c_client->addr,
177 if (i2c_transfer(radio->i2c_client->adapter, msgs, 1) != 1)
182 static void tea5764_power_up(struct tea5764_device *radio)
184 struct tea5764_regs *r = &radio->regs;
195 tea5764_i2c_write(radio);
199 static void tea5764_power_down(struct tea5764_device *radio)
201 struct tea5764_regs *r = &radio->regs;
205 tea5764_i2c_write(radio);
209 static void tea5764_set_freq(struct tea5764_device *radio, int freq)
211 struct tea5764_regs *r = &radio->regs;
220 static int tea5764_get_freq(struct tea5764_device *radio)
222 struct tea5764_regs *r = &radio->regs;
231 static void tea5764_tune(struct tea5764_device *radio, int freq)
233 tea5764_set_freq(radio, freq);
234 if (tea5764_i2c_write(radio))
238 static void tea5764_set_audout_mode(struct tea5764_device *radio, int audmode)
240 struct tea5764_regs *r = &radio->regs;
248 tea5764_i2c_write(radio);
251 static int tea5764_get_audout_mode(struct tea5764_device *radio)
253 struct tea5764_regs *r = &radio->regs;
261 static void tea5764_mute(struct tea5764_device *radio, int on)
263 struct tea5764_regs *r = &radio->regs;
271 tea5764_i2c_write(radio);
278 struct tea5764_device *radio = video_drvdata(file);
279 struct video_device *dev = &radio->vdev;
291 struct tea5764_device *radio = video_drvdata(file);
292 struct tea5764_regs *r = &radio->regs;
299 tea5764_i2c_read(radio);
307 v->audmode = tea5764_get_audout_mode(radio);
317 struct tea5764_device *radio = video_drvdata(file);
322 tea5764_set_audout_mode(radio, v->audmode);
329 struct tea5764_device *radio = video_drvdata(file);
336 tea5764_power_down(radio);
345 tea5764_power_up(radio);
346 tea5764_tune(radio, (freq * 125) / 2);
353 struct tea5764_device *radio = video_drvdata(file);
354 struct tea5764_regs *r = &radio->regs;
358 tea5764_i2c_read(radio);
361 f->frequency = (tea5764_get_freq(radio) * 2) / 125;
370 struct tea5764_device *radio =
375 tea5764_mute(radio, ctrl->val);
416 struct tea5764_device *radio;
423 radio = kzalloc(sizeof(struct tea5764_device), GFP_KERNEL);
424 if (!radio)
427 v4l2_dev = &radio->v4l2_dev;
434 hdl = &radio->ctrl_handler;
445 mutex_init(&radio->mutex);
446 radio->i2c_client = client;
447 ret = tea5764_i2c_read(radio);
450 r = &radio->regs;
459 radio->vdev = tea5764_radio_template;
461 i2c_set_clientdata(client, radio);
462 video_set_drvdata(&radio->vdev, radio);
463 radio->vdev.lock = &radio->mutex;
464 radio->vdev.v4l2_dev = v4l2_dev;
465 radio->vdev.device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
468 tea5764_i2c_read(radio);
469 tea5764_set_audout_mode(radio, V4L2_TUNER_MODE_STEREO);
470 tea5764_mute(radio, 1);
471 tea5764_power_down(radio);
473 ret = video_register_device(&radio->vdev, VFL_TYPE_RADIO, radio_nr);
485 kfree(radio);
491 struct tea5764_device *radio = i2c_get_clientdata(client);
494 if (radio) {
495 tea5764_power_down(radio);
496 video_unregister_device(&radio->vdev);
497 v4l2_ctrl_handler_free(&radio->ctrl_handler);
498 v4l2_device_unregister(&radio->v4l2_dev);
499 kfree(radio);
505 { "radio-tea5764", 0 },
512 .name = "radio-tea5764",