Commit 97e08f5d732bbfd5180f73aa7875d328421bee8a
Committed by
Takashi Iwai
1 parent
97ec710cab
Exists in
master
and in
20 other branches
[ALSA] snd-pcsp - fix pcsp_treble_info() to honour an item number
This solves the problem with mixers wrongly displaying the PWM freq. Signed-off-by: Stas Sergeev <stsp@aknet.ru> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Showing 2 changed files with 6 additions and 3 deletions Side-by-side Diff
sound/drivers/pcsp/pcsp.h
... | ... | @@ -24,7 +24,8 @@ |
24 | 24 | /* default timer freq for PC-Speaker: 18643 Hz */ |
25 | 25 | #define DIV_18KHZ 64 |
26 | 26 | #define MAX_DIV DIV_18KHZ |
27 | -#define CUR_DIV() (MAX_DIV >> chip->treble) | |
27 | +#define CALC_DIV(d) (MAX_DIV >> (d)) | |
28 | +#define CUR_DIV() CALC_DIV(chip->treble) | |
28 | 29 | #define PCSP_MAX_TREBLE 1 |
29 | 30 | |
30 | 31 | /* unfortunately, with hrtimers 37KHz does not work very well :( */ |
... | ... | @@ -36,7 +37,8 @@ |
36 | 37 | #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) |
37 | 38 | #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) |
38 | 39 | #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) |
39 | -#define PCSP_RATE() (PIT_TICK_RATE / CUR_DIV()) | |
40 | +#define PCSP_CALC_RATE(i) (PIT_TICK_RATE / CALC_DIV(i)) | |
41 | +#define PCSP_RATE() PCSP_CALC_RATE(chip->treble) | |
40 | 42 | #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE |
41 | 43 | #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE |
42 | 44 | #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1) |
sound/drivers/pcsp/pcsp_mixer.c
... | ... | @@ -50,7 +50,8 @@ |
50 | 50 | uinfo->value.enumerated.items = chip->max_treble + 1; |
51 | 51 | if (uinfo->value.enumerated.item > chip->max_treble) |
52 | 52 | uinfo->value.enumerated.item = chip->max_treble; |
53 | - sprintf(uinfo->value.enumerated.name, "%d", PCSP_RATE()); | |
53 | + sprintf(uinfo->value.enumerated.name, "%d", | |
54 | + PCSP_CALC_RATE(uinfo->value.enumerated.item)); | |
54 | 55 | return 0; |
55 | 56 | } |
56 | 57 |