Date: | 2011-10-09 01:26:05 (12 years 2 months ago) |
---|---|
Author: | Maarten ter Huurne |
Commit: | ed96d8b8595461bb55ca0643934fffba04f540b6 |
Message: | media: radio: RDA5807: Implemented VIDIOC_G_FREQUENCY ioctl. |
Files: |
drivers/media/radio/radio-rda5807.c (4 diffs) |
Change Details
drivers/media/radio/radio-rda5807.c | ||
---|---|---|
78 | 78 | #define RDA5807_MASK_SEEKRES_COMPLETE BIT(14) |
79 | 79 | #define RDA5807_MASK_SEEKRES_FAIL BIT(13) |
80 | 80 | #define RDA5807_MASK_SEEKRES_STEREO BIT(10) |
81 | #define RDA5807_MASK_SEEKRES_READCHAN 0x3FF | |
81 | 82 | |
82 | 83 | #define RDA5807_MASK_DEEMPHASIS BIT(11) |
83 | 84 | |
... | ... | |
210 | 211 | ? RDA5807_MASK_DEEMPHASIS : 0); |
211 | 212 | } |
212 | 213 | |
214 | static int rda5807_get_frequency(struct rda5807_driver *radio) | |
215 | { | |
216 | u32 freq_khz; | |
217 | u16 val; | |
218 | int err; | |
219 | ||
220 | err = rda5807_i2c_read(radio->i2c_client, RDA5807_REG_SEEK_RESULT); | |
221 | if (err < 0) | |
222 | return err; | |
223 | val = err; | |
224 | ||
225 | freq_khz = 50 * (val & RDA5807_MASK_SEEKRES_READCHAN) | |
226 | + RDA5807_FREQ_MIN_KHZ; | |
227 | dev_info(&radio->i2c_client->dev, "get freq of %u kHz\n", freq_khz); | |
228 | return freq_khz; | |
229 | } | |
230 | ||
213 | 231 | static int rda5807_set_frequency(struct rda5807_driver *radio, u32 freq_khz) |
214 | 232 | { |
215 | 233 | u16 mask = 0; |
... | ... | |
346 | 364 | return 0; |
347 | 365 | } |
348 | 366 | |
367 | static int rda5807_vidioc_g_frequency(struct file *file, void *fh, | |
368 | struct v4l2_frequency *a) | |
369 | { | |
370 | struct rda5807_driver *radio = video_drvdata(file); | |
371 | int freq_khz; | |
372 | ||
373 | if (a->tuner != 0) | |
374 | return -EINVAL; | |
375 | /* This ioctl ignores the type field. */ | |
376 | ||
377 | freq_khz = rda5807_get_frequency(radio); | |
378 | if (freq_khz < 0) | |
379 | return freq_khz; | |
380 | ||
381 | a->frequency = (__u32)freq_khz * 16; | |
382 | return 0; | |
383 | } | |
384 | ||
349 | 385 | static int rda5807_vidioc_s_frequency(struct file *file, void *fh, |
350 | 386 | struct v4l2_frequency *a) |
351 | 387 | { |
... | ... | |
363 | 399 | .vidioc_querycap = rda5807_vidioc_querycap, |
364 | 400 | .vidioc_g_audio = rda5807_vidioc_g_audio, |
365 | 401 | .vidioc_g_tuner = rda5807_vidioc_g_tuner, |
402 | .vidioc_g_frequency = rda5807_vidioc_g_frequency, | |
366 | 403 | .vidioc_s_frequency = rda5807_vidioc_s_frequency, |
367 | 404 | }; |
368 | 405 |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9