diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-05-24 12:46:54 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-07-20 05:11:19 -0400 |
commit | 621887aee9c7b4b613c12b82b83df7e56877f303 (patch) | |
tree | fa26d2a5a584db9646ec33df6eb3965f2704bc7a /sound/isa/sb | |
parent | 0ba7962b9f06c02dd1af93002e8d757805d16758 (diff) |
[ALSA] Add support for Cyrix/NatSemi Geode CS5530 (VSA1)
Add support for Cyrix/NatSemi Geode SC5530 (VSA1).
The driver is snd-cs5530.
Signed-off-by Ash Willis <ashwillis@programmer.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/isa/sb')
-rw-r--r-- | sound/isa/sb/sb16_main.c | 10 | ||||
-rw-r--r-- | sound/isa/sb/sb_common.c | 5 | ||||
-rw-r--r-- | sound/isa/sb/sb_mixer.c | 3 |
3 files changed, 17 insertions, 1 deletions
diff --git a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c index 383911b9e74d..5d4d3aafe2d5 100644 --- a/sound/isa/sb/sb16_main.c +++ b/sound/isa/sb/sb16_main.c | |||
@@ -563,6 +563,11 @@ static int snd_sb16_playback_open(struct snd_pcm_substream *substream) | |||
563 | __open_ok: | 563 | __open_ok: |
564 | if (chip->hardware == SB_HW_ALS100) | 564 | if (chip->hardware == SB_HW_ALS100) |
565 | runtime->hw.rate_max = 48000; | 565 | runtime->hw.rate_max = 48000; |
566 | if (chip->hardware == SB_HW_CS5530) { | ||
567 | runtime->hw.buffer_bytes_max = 32 * 1024; | ||
568 | runtime->hw.periods_min = 2; | ||
569 | runtime->hw.rate_min = 44100; | ||
570 | } | ||
566 | if (chip->mode & SB_RATE_LOCK) | 571 | if (chip->mode & SB_RATE_LOCK) |
567 | runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; | 572 | runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; |
568 | chip->playback_substream = substream; | 573 | chip->playback_substream = substream; |
@@ -633,6 +638,11 @@ static int snd_sb16_capture_open(struct snd_pcm_substream *substream) | |||
633 | __open_ok: | 638 | __open_ok: |
634 | if (chip->hardware == SB_HW_ALS100) | 639 | if (chip->hardware == SB_HW_ALS100) |
635 | runtime->hw.rate_max = 48000; | 640 | runtime->hw.rate_max = 48000; |
641 | if (chip->hardware == SB_HW_CS5530) { | ||
642 | runtime->hw.buffer_bytes_max = 32 * 1024; | ||
643 | runtime->hw.periods_min = 2; | ||
644 | runtime->hw.rate_min = 44100; | ||
645 | } | ||
636 | if (chip->mode & SB_RATE_LOCK) | 646 | if (chip->mode & SB_RATE_LOCK) |
637 | runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; | 647 | runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate; |
638 | chip->capture_substream = substream; | 648 | chip->capture_substream = substream; |
diff --git a/sound/isa/sb/sb_common.c b/sound/isa/sb/sb_common.c index 3094f3852167..efa9d5c2558a 100644 --- a/sound/isa/sb/sb_common.c +++ b/sound/isa/sb/sb_common.c | |||
@@ -128,7 +128,7 @@ static int snd_sbdsp_probe(struct snd_sb * chip) | |||
128 | minor = version & 0xff; | 128 | minor = version & 0xff; |
129 | snd_printdd("SB [0x%lx]: DSP chip found, version = %i.%i\n", | 129 | snd_printdd("SB [0x%lx]: DSP chip found, version = %i.%i\n", |
130 | chip->port, major, minor); | 130 | chip->port, major, minor); |
131 | 131 | ||
132 | switch (chip->hardware) { | 132 | switch (chip->hardware) { |
133 | case SB_HW_AUTO: | 133 | case SB_HW_AUTO: |
134 | switch (major) { | 134 | switch (major) { |
@@ -168,6 +168,9 @@ static int snd_sbdsp_probe(struct snd_sb * chip) | |||
168 | case SB_HW_DT019X: | 168 | case SB_HW_DT019X: |
169 | str = "(DT019X/ALS007)"; | 169 | str = "(DT019X/ALS007)"; |
170 | break; | 170 | break; |
171 | case SB_HW_CS5530: | ||
172 | str = "16 (CS5530)"; | ||
173 | break; | ||
171 | default: | 174 | default: |
172 | return -ENODEV; | 175 | return -ENODEV; |
173 | } | 176 | } |
diff --git a/sound/isa/sb/sb_mixer.c b/sound/isa/sb/sb_mixer.c index 490b1ca5cf58..3d4befcff28e 100644 --- a/sound/isa/sb/sb_mixer.c +++ b/sound/isa/sb/sb_mixer.c | |||
@@ -821,6 +821,7 @@ int snd_sbmixer_new(struct snd_sb *chip) | |||
821 | break; | 821 | break; |
822 | case SB_HW_16: | 822 | case SB_HW_16: |
823 | case SB_HW_ALS100: | 823 | case SB_HW_ALS100: |
824 | case SB_HW_CS5530: | ||
824 | if ((err = snd_sbmixer_init(chip, | 825 | if ((err = snd_sbmixer_init(chip, |
825 | snd_sb16_controls, | 826 | snd_sb16_controls, |
826 | ARRAY_SIZE(snd_sb16_controls), | 827 | ARRAY_SIZE(snd_sb16_controls), |
@@ -950,6 +951,7 @@ void snd_sbmixer_suspend(struct snd_sb *chip) | |||
950 | break; | 951 | break; |
951 | case SB_HW_16: | 952 | case SB_HW_16: |
952 | case SB_HW_ALS100: | 953 | case SB_HW_ALS100: |
954 | case SB_HW_CS5530: | ||
953 | save_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs)); | 955 | save_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs)); |
954 | break; | 956 | break; |
955 | case SB_HW_ALS4000: | 957 | case SB_HW_ALS4000: |
@@ -975,6 +977,7 @@ void snd_sbmixer_resume(struct snd_sb *chip) | |||
975 | break; | 977 | break; |
976 | case SB_HW_16: | 978 | case SB_HW_16: |
977 | case SB_HW_ALS100: | 979 | case SB_HW_ALS100: |
980 | case SB_HW_CS5530: | ||
978 | restore_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs)); | 981 | restore_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs)); |
979 | break; | 982 | break; |
980 | case SB_HW_ALS4000: | 983 | case SB_HW_ALS4000: |