aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/sb
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-05-24 12:46:54 -0400
committerJaroslav Kysela <perex@suse.cz>2007-07-20 05:11:19 -0400
commit621887aee9c7b4b613c12b82b83df7e56877f303 (patch)
treefa26d2a5a584db9646ec33df6eb3965f2704bc7a /sound/isa/sb
parent0ba7962b9f06c02dd1af93002e8d757805d16758 (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.c10
-rw-r--r--sound/isa/sb/sb_common.c5
-rw-r--r--sound/isa/sb/sb_mixer.c3
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: