[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>
This commit is contained in:
committed by
Takashi Iwai
parent
f009ad9b39
commit
87eedd2fd4
@@ -164,7 +164,7 @@ static const struct oxygen_model model_hifier = {
|
|||||||
PLAYBACK_1_TO_SPDIF |
|
PLAYBACK_1_TO_SPDIF |
|
||||||
CAPTURE_0_FROM_I2S_1,
|
CAPTURE_0_FROM_I2S_1,
|
||||||
.dac_channels = 2,
|
.dac_channels = 2,
|
||||||
.function_flags = 0,
|
.function_flags = OXYGEN_FUNCTION_SPI,
|
||||||
.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
};
|
};
|
||||||
|
@@ -310,7 +310,8 @@ static const struct oxygen_model model_generic = {
|
|||||||
CAPTURE_1_FROM_SPDIF |
|
CAPTURE_1_FROM_SPDIF |
|
||||||
CAPTURE_2_FROM_AC97_1,
|
CAPTURE_2_FROM_AC97_1,
|
||||||
.dac_channels = 8,
|
.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,
|
.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
.adc_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_1_FROM_SPDIF |
|
||||||
CAPTURE_2_FROM_AC97_1,
|
CAPTURE_2_FROM_AC97_1,
|
||||||
.dac_channels = 8,
|
.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,
|
.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
};
|
};
|
||||||
|
@@ -240,12 +240,12 @@ static void oxygen_init(struct oxygen *chip)
|
|||||||
chip->has_ac97_0 = (i & OXYGEN_AC97_CODEC_0) != 0;
|
chip->has_ac97_0 = (i & OXYGEN_AC97_CODEC_0) != 0;
|
||||||
chip->has_ac97_1 = (i & OXYGEN_AC97_CODEC_1) != 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_write8_masked(chip, OXYGEN_FUNCTION,
|
||||||
OXYGEN_FUNCTION_SPI,
|
OXYGEN_FUNCTION_RESET_CODEC |
|
||||||
OXYGEN_FUNCTION_2WIRE_SPI_MASK);
|
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_STATUS, 0);
|
||||||
oxygen_write8(chip, OXYGEN_DMA_PAUSE, 0);
|
oxygen_write8(chip, OXYGEN_DMA_PAUSE, 0);
|
||||||
oxygen_write8(chip, OXYGEN_PLAY_CHANNELS,
|
oxygen_write8(chip, OXYGEN_PLAY_CHANNELS,
|
||||||
|
@@ -353,7 +353,8 @@ static const struct oxygen_model model_xonar = {
|
|||||||
CAPTURE_0_FROM_I2S_2 |
|
CAPTURE_0_FROM_I2S_2 |
|
||||||
CAPTURE_1_FROM_SPDIF,
|
CAPTURE_1_FROM_SPDIF,
|
||||||
.dac_channels = 8,
|
.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,
|
.dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
.adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user