All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] snd-hda-intel: fix beep tone calculation for IDT/STAC codecs
@ 2009-07-09  6:57 Paul Vojta
  2009-07-09  7:38 ` Takashi Iwai
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Vojta @ 2009-07-09  6:57 UTC (permalink / raw)
  To: alsa-devel

In the beep tone calculation for IDT/STAC codecs, lower numbers correspond
to higher frequencies and vice versa.  The current code has this backwards,
resulting in beep frequencies which are way too high (and sound bad on
tinny laptop speakers, resulting in complaints).

Signed-off-by: Paul Vojta <vojta@math.berkeley.edu>

diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c
index 08fe659..d559a7a 100644
--- a/sound/pci/hda/hda_beep.c
+++ b/sound/pci/hda/hda_beep.c
@@ -51,19 +51,20 @@ static void snd_hda_generate_beep(struct work_struct *work)
  * The tone frequency of beep generator on IDT/STAC codecs is
  * defined from the 8bit tone parameter, in Hz,
  *    freq = 48000 * (257 - tone) / 1024
- * that is from 12kHz to 93.75kHz in step of 46.875 hz
+ * that is from 12kHz to 93.75Hz in steps of 46.875 Hz
  */
 static int beep_linear_tone(struct hda_beep *beep, int hz)
 {
 	hz *= 1000; /* fixed point */
-	hz = hz - DIGBEEP_HZ_MIN;
+	hz = hz - DIGBEEP_HZ_MIN
+	        + DIGBEEP_HZ_STEP / 2; /* round to nearest step */
 	if (hz < 0)
 		hz = 0; /* turn off PC beep*/
 	else if (hz >= (DIGBEEP_HZ_MAX - DIGBEEP_HZ_MIN))
-		hz = 0xff;
+		hz = 1; /* max frequency */
 	else {
 		hz /= DIGBEEP_HZ_STEP;
-		hz++;
+		hz = 255 - hz;
 	}
 	return hz;
 }

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] snd-hda-intel: fix beep tone calculation for IDT/STAC codecs
  2009-07-09  6:57 [PATCH] snd-hda-intel: fix beep tone calculation for IDT/STAC codecs Paul Vojta
@ 2009-07-09  7:38 ` Takashi Iwai
  0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2009-07-09  7:38 UTC (permalink / raw)
  To: Paul Vojta; +Cc: alsa-devel

At Wed, 8 Jul 2009 23:57:46 -0700,
Paul Vojta wrote:
> 
> In the beep tone calculation for IDT/STAC codecs, lower numbers correspond
> to higher frequencies and vice versa.  The current code has this backwards,
> resulting in beep frequencies which are way too high (and sound bad on
> tinny laptop speakers, resulting in complaints).
> 
> Signed-off-by: Paul Vojta <vojta@math.berkeley.edu>

Thanks, applied now (with a minor modification).


Takashi

> 
> diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c
> index 08fe659..d559a7a 100644
> --- a/sound/pci/hda/hda_beep.c
> +++ b/sound/pci/hda/hda_beep.c
> @@ -51,19 +51,20 @@ static void snd_hda_generate_beep(struct work_struct *work)
>   * The tone frequency of beep generator on IDT/STAC codecs is
>   * defined from the 8bit tone parameter, in Hz,
>   *    freq = 48000 * (257 - tone) / 1024
> - * that is from 12kHz to 93.75kHz in step of 46.875 hz
> + * that is from 12kHz to 93.75Hz in steps of 46.875 Hz
>   */
>  static int beep_linear_tone(struct hda_beep *beep, int hz)
>  {
>  	hz *= 1000; /* fixed point */
> -	hz = hz - DIGBEEP_HZ_MIN;
> +	hz = hz - DIGBEEP_HZ_MIN
> +	        + DIGBEEP_HZ_STEP / 2; /* round to nearest step */
>  	if (hz < 0)
>  		hz = 0; /* turn off PC beep*/
>  	else if (hz >= (DIGBEEP_HZ_MAX - DIGBEEP_HZ_MIN))
> -		hz = 0xff;
> +		hz = 1; /* max frequency */
>  	else {
>  		hz /= DIGBEEP_HZ_STEP;
> -		hz++;
> +		hz = 255 - hz;
>  	}
>  	return hz;
>  }
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-07-09  7:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-09  6:57 [PATCH] snd-hda-intel: fix beep tone calculation for IDT/STAC codecs Paul Vojta
2009-07-09  7:38 ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.