浏览代码

[ALSA] oxygen: make SPI/2-wire configuration model-specific

Allow the model drivers to specify if the codec communication goes over
SPI or a 2-wire bus.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Clemens Ladisch 17 年之前
父节点
当前提交
87eedd2fd4
共有 4 个文件被更改,包括 12 次插入9 次删除
  1. 1 1
      sound/pci/oxygen/hifier.c
  2. 4 2
      sound/pci/oxygen/oxygen.c
  3. 5 5
      sound/pci/oxygen/oxygen_lib.c
  4. 2 1
      sound/pci/oxygen/virtuoso.c

+ 1 - 1
sound/pci/oxygen/hifier.c

@@ -164,7 +164,7 @@ static const struct oxygen_model model_hifier = {
 		       PLAYBACK_1_TO_SPDIF |
 		       CAPTURE_0_FROM_I2S_1,
 	.dac_channels = 2,
-	.function_flags = 0,
+	.function_flags = OXYGEN_FUNCTION_SPI,
 	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 	.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 };

+ 4 - 2
sound/pci/oxygen/oxygen.c

@@ -310,7 +310,8 @@ static const struct oxygen_model model_generic = {
 		       CAPTURE_1_FROM_SPDIF |
 		       CAPTURE_2_FROM_AC97_1,
 	.dac_channels = 8,
-	.function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
+	.function_flags = OXYGEN_FUNCTION_SPI |
+			  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 	.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 };
@@ -335,7 +336,8 @@ static const struct oxygen_model model_meridian = {
 		       CAPTURE_1_FROM_SPDIF |
 		       CAPTURE_2_FROM_AC97_1,
 	.dac_channels = 8,
-	.function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
+	.function_flags = OXYGEN_FUNCTION_SPI |
+			  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 	.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 };

+ 5 - 5
sound/pci/oxygen/oxygen_lib.c

@@ -240,12 +240,12 @@ static void oxygen_init(struct oxygen *chip)
 	chip->has_ac97_0 = (i & OXYGEN_AC97_CODEC_0) != 0;
 	chip->has_ac97_1 = (i & OXYGEN_AC97_CODEC_1) != 0;
 
-	oxygen_set_bits8(chip, OXYGEN_FUNCTION,
-			 OXYGEN_FUNCTION_RESET_CODEC |
-			 chip->model->function_flags);
 	oxygen_write8_masked(chip, OXYGEN_FUNCTION,
-			     OXYGEN_FUNCTION_SPI,
-			     OXYGEN_FUNCTION_2WIRE_SPI_MASK);
+			     OXYGEN_FUNCTION_RESET_CODEC |
+			     chip->model->function_flags,
+			     OXYGEN_FUNCTION_RESET_CODEC |
+			     OXYGEN_FUNCTION_2WIRE_SPI_MASK |
+			     OXYGEN_FUNCTION_ENABLE_SPI_4_5);
 	oxygen_write8(chip, OXYGEN_DMA_STATUS, 0);
 	oxygen_write8(chip, OXYGEN_DMA_PAUSE, 0);
 	oxygen_write8(chip, OXYGEN_PLAY_CHANNELS,

+ 2 - 1
sound/pci/oxygen/virtuoso.c

@@ -353,7 +353,8 @@ static const struct oxygen_model model_xonar = {
 		       CAPTURE_0_FROM_I2S_2 |
 		       CAPTURE_1_FROM_SPDIF,
 	.dac_channels = 8,
-	.function_flags = OXYGEN_FUNCTION_ENABLE_SPI_4_5,
+	.function_flags = OXYGEN_FUNCTION_SPI |
+			  OXYGEN_FUNCTION_ENABLE_SPI_4_5,
 	.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 	.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
 };