Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 621887ae authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[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: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 0ba7962b
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -468,6 +468,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.

    The power-management is supported.

  Module snd-cs5530
  _________________

    Module for Cyrix/NatSemi Geode 5530 chip. 
  
  Module snd-cs5535audio
  ----------------------

+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ enum sb_hw_type {
	SB_HW_ALS100,		/* Avance Logic ALS100 chip */
	SB_HW_ALS4000,		/* Avance Logic ALS4000 chip */
	SB_HW_DT019X,		/* Diamond Tech. DT-019X / Avance Logic ALS-007 */
	SB_HW_CS5530,		/* Cyrix/NatSemi 5530 VSA1 */
};

#define SB_OPEN_PCM			0x01
+10 −0
Original line number Diff line number Diff line
@@ -563,6 +563,11 @@ static int snd_sb16_playback_open(struct snd_pcm_substream *substream)
      __open_ok:
	if (chip->hardware == SB_HW_ALS100)
		runtime->hw.rate_max = 48000;
	if (chip->hardware == SB_HW_CS5530) {
		runtime->hw.buffer_bytes_max = 32 * 1024;
		runtime->hw.periods_min = 2;
		runtime->hw.rate_min = 44100;
	}
	if (chip->mode & SB_RATE_LOCK)
		runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate;
	chip->playback_substream = substream;
@@ -633,6 +638,11 @@ static int snd_sb16_capture_open(struct snd_pcm_substream *substream)
      __open_ok:
	if (chip->hardware == SB_HW_ALS100)
		runtime->hw.rate_max = 48000;
	if (chip->hardware == SB_HW_CS5530) {
		runtime->hw.buffer_bytes_max = 32 * 1024;
		runtime->hw.periods_min = 2;
		runtime->hw.rate_min = 44100;
	}
	if (chip->mode & SB_RATE_LOCK)
		runtime->hw.rate_min = runtime->hw.rate_max = chip->locked_rate;
	chip->capture_substream = substream;
+4 −1
Original line number Diff line number Diff line
@@ -168,6 +168,9 @@ static int snd_sbdsp_probe(struct snd_sb * chip)
	case SB_HW_DT019X:
		str = "(DT019X/ALS007)";
		break;
	case SB_HW_CS5530:
		str = "16 (CS5530)";
		break;
	default:
		return -ENODEV;
	}
+3 −0
Original line number Diff line number Diff line
@@ -821,6 +821,7 @@ int snd_sbmixer_new(struct snd_sb *chip)
		break;
	case SB_HW_16:
	case SB_HW_ALS100:
	case SB_HW_CS5530:
		if ((err = snd_sbmixer_init(chip,
					    snd_sb16_controls,
					    ARRAY_SIZE(snd_sb16_controls),
@@ -950,6 +951,7 @@ void snd_sbmixer_suspend(struct snd_sb *chip)
		break;
	case SB_HW_16:
	case SB_HW_ALS100:
	case SB_HW_CS5530:
		save_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs));
		break;
	case SB_HW_ALS4000:
@@ -975,6 +977,7 @@ void snd_sbmixer_resume(struct snd_sb *chip)
		break;
	case SB_HW_16:
	case SB_HW_ALS100:
	case SB_HW_CS5530:
		restore_mixer(chip, sb16_saved_regs, ARRAY_SIZE(sb16_saved_regs));
		break;
	case SB_HW_ALS4000:
Loading