diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-07-10 05:17:12 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-07-10 05:17:12 -0400 |
commit | 3ae30796663cc8e144e5b586198b10bc97f1ec38 (patch) | |
tree | d401b84bedfec3022fb90f7278979ff502886953 /sound/pci/hda/hda_beep.c | |
parent | f371f12f3e9840771026aa6a9312b554c5bfd6ec (diff) | |
parent | 005b10769c05fb16db70f7689ffb5ba17e3fc324 (diff) |
Merge branch 'fix/hda' into for-linus
* fix/hda:
ALSA: hda - targa and targa-2ch fix
ALSA: hda - fix beep tone calculation for IDT/STAC codecs
ALSA: hda - Missing volume controls for Intel HDA (ALC269/EeePC)
ALSA: hda - Disable AMD SB600 64bit address support only
ALSA: hda - Check widget types while parsing capture source in patch_via.c
ALSA: hda - Fix capture source selection in patch_via.c
ALSA: hda - Add missing EAPD initialization for VIA codecs
ALSA: hda - Clean up VT170x dig-in initialization code
ALSA: hda - Fix error path in the sanity check in azx_pcm_open()
ALSA: hda - move 8086:fb30 quirk (stac9205) to the proper section
Diffstat (limited to 'sound/pci/hda/hda_beep.c')
-rw-r--r-- | sound/pci/hda/hda_beep.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c index 29272f2e95a0..b0275a050870 100644 --- a/sound/pci/hda/hda_beep.c +++ b/sound/pci/hda/hda_beep.c | |||
@@ -50,19 +50,22 @@ static void snd_hda_generate_beep(struct work_struct *work) | |||
50 | * The tone frequency of beep generator on IDT/STAC codecs is | 50 | * The tone frequency of beep generator on IDT/STAC codecs is |
51 | * defined from the 8bit tone parameter, in Hz, | 51 | * defined from the 8bit tone parameter, in Hz, |
52 | * freq = 48000 * (257 - tone) / 1024 | 52 | * freq = 48000 * (257 - tone) / 1024 |
53 | * that is from 12kHz to 93.75kHz in step of 46.875 hz | 53 | * that is from 12kHz to 93.75Hz in steps of 46.875 Hz |
54 | */ | 54 | */ |
55 | static int beep_linear_tone(struct hda_beep *beep, int hz) | 55 | static int beep_linear_tone(struct hda_beep *beep, int hz) |
56 | { | 56 | { |
57 | if (hz <= 0) | ||
58 | return 0; | ||
57 | hz *= 1000; /* fixed point */ | 59 | hz *= 1000; /* fixed point */ |
58 | hz = hz - DIGBEEP_HZ_MIN; | 60 | hz = hz - DIGBEEP_HZ_MIN |
61 | + DIGBEEP_HZ_STEP / 2; /* round to nearest step */ | ||
59 | if (hz < 0) | 62 | if (hz < 0) |
60 | hz = 0; /* turn off PC beep*/ | 63 | hz = 0; /* turn off PC beep*/ |
61 | else if (hz >= (DIGBEEP_HZ_MAX - DIGBEEP_HZ_MIN)) | 64 | else if (hz >= (DIGBEEP_HZ_MAX - DIGBEEP_HZ_MIN)) |
62 | hz = 0xff; | 65 | hz = 1; /* max frequency */ |
63 | else { | 66 | else { |
64 | hz /= DIGBEEP_HZ_STEP; | 67 | hz /= DIGBEEP_HZ_STEP; |
65 | hz++; | 68 | hz = 255 - hz; |
66 | } | 69 | } |
67 | return hz; | 70 | return hz; |
68 | } | 71 | } |