Date: | 2011-10-03 00:13:25 (12 years 2 months ago) |
---|---|
Author: | Maarten ter Huurne |
Commit: | 144e9c2530f863e32a3538b06c63484401bbe314 |
Message: | media: radio: RDA5807: Mute at startup; power down when muted. This way the radio does not draw power when it is not in use. |
Files: |
drivers/media/radio/radio-rda5807.c (5 diffs) |
Change Details
drivers/media/radio/radio-rda5807.c | ||
---|---|---|
166 | 166 | |
167 | 167 | static int rda5807_set_enable(struct rda5807_driver *radio, int enabled) |
168 | 168 | { |
169 | // TODO: What should control power up/down? | |
170 | // Mute would be a candidate. | |
171 | 169 | u16 val = enabled ? RDA5807_MASK_CTRL_ENABLE : 0; |
170 | dev_info(&radio->i2c_client->dev, "set enabled to %d\n", enabled); | |
172 | 171 | return rda5807_update_reg(radio, RDA5807_REG_CTRL, |
173 | 172 | RDA5807_MASK_CTRL_ENABLE, val); |
174 | 173 | } |
... | ... | |
176 | 175 | static int rda5807_set_mute(struct rda5807_driver *radio, int muted) |
177 | 176 | { |
178 | 177 | u16 val = muted ? 0 : RDA5807_MASK_CTRL_DMUTE /* disable mute */; |
178 | dev_info(&radio->i2c_client->dev, "set mute to %d\n", muted); | |
179 | 179 | return rda5807_update_reg(radio, RDA5807_REG_CTRL, |
180 | 180 | RDA5807_MASK_CTRL_DMUTE, val); |
181 | 181 | } |
... | ... | |
237 | 237 | struct rda5807_driver *radio = ctrl_to_radio(ctrl); |
238 | 238 | |
239 | 239 | switch (ctrl->id) { |
240 | case V4L2_CID_AUDIO_MUTE: | |
241 | return rda5807_set_mute(radio, ctrl->val); | |
240 | case V4L2_CID_AUDIO_MUTE: { | |
241 | /* Disable the radio while muted, to save power. | |
242 | * TODO: We can't seek while the radio is disabled; | |
243 | * is that a problem? | |
244 | */ | |
245 | int err1 = rda5807_set_enable(radio, !ctrl->val); | |
246 | int err2 = rda5807_set_mute(radio, ctrl->val); | |
247 | return err1 ? err1 : err2; | |
248 | } | |
242 | 249 | case V4L2_CID_AUDIO_VOLUME: |
243 | 250 | return rda5807_set_volume(radio, ctrl->val); |
244 | 251 | case V4L2_CID_TUNE_PREEMPHASIS: |
... | ... | |
369 | 376 | /* Initialize controls. */ |
370 | 377 | v4l2_ctrl_handler_init(&radio->ctrl_handler, 3); |
371 | 378 | v4l2_ctrl_new_std(&radio->ctrl_handler, &rda5807_ctrl_ops, |
372 | V4L2_CID_AUDIO_MUTE, 0, 1, 1, 0); | |
379 | V4L2_CID_AUDIO_MUTE, 0, 1, 1, 1); | |
373 | 380 | v4l2_ctrl_new_std(&radio->ctrl_handler, &rda5807_ctrl_ops, |
374 | 381 | V4L2_CID_AUDIO_VOLUME, 0, 15, 1, 8); |
375 | 382 | v4l2_ctrl_new_std_menu(&radio->ctrl_handler, &rda5807_ctrl_ops, |
... | ... | |
409 | 416 | " (%d)\n", err); |
410 | 417 | goto err_video_unreg; |
411 | 418 | } |
412 | // TODO: Disable on startup and enable on demand. | |
413 | rda5807_set_enable(radio, 1); | |
414 | 419 | |
415 | 420 | return 0; |
416 | 421 |
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