diff options
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/soc/codecs/adav80x.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/ak4641.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/ak4671.c | 44 | ||||
| -rw-r--r-- | sound/soc/codecs/cs4271.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/da732x.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/es8328.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/pcm1681.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/rt286.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/sgtl5000.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/sn95031.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/tas5086.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm2000.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8731.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8903.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8904.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8955.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8960.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9712.c | 6 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9713.c | 6 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 4 | ||||
| -rw-r--r-- | sound/soc/intel/sst-haswell-dsp.c | 3 | ||||
| -rw-r--r-- | sound/soc/intel/sst-haswell-ipc.c | 32 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 41 |
23 files changed, 118 insertions, 92 deletions
diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c index b67480f1b1aa..4373ada95648 100644 --- a/sound/soc/codecs/adav80x.c +++ b/sound/soc/codecs/adav80x.c | |||
| @@ -317,7 +317,7 @@ static int adav80x_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 317 | { | 317 | { |
| 318 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 318 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 319 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); | 319 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); |
| 320 | unsigned int deemph = ucontrol->value.enumerated.item[0]; | 320 | unsigned int deemph = ucontrol->value.integer.value[0]; |
| 321 | 321 | ||
| 322 | if (deemph > 1) | 322 | if (deemph > 1) |
| 323 | return -EINVAL; | 323 | return -EINVAL; |
| @@ -333,7 +333,7 @@ static int adav80x_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 333 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 333 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 334 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); | 334 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); |
| 335 | 335 | ||
| 336 | ucontrol->value.enumerated.item[0] = adav80x->deemph; | 336 | ucontrol->value.integer.value[0] = adav80x->deemph; |
| 337 | return 0; | 337 | return 0; |
| 338 | }; | 338 | }; |
| 339 | 339 | ||
diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c index 70861c7b1631..81b54a270bd8 100644 --- a/sound/soc/codecs/ak4641.c +++ b/sound/soc/codecs/ak4641.c | |||
| @@ -76,7 +76,7 @@ static int ak4641_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 76 | { | 76 | { |
| 77 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 77 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 78 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); | 78 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); |
| 79 | int deemph = ucontrol->value.enumerated.item[0]; | 79 | int deemph = ucontrol->value.integer.value[0]; |
| 80 | 80 | ||
| 81 | if (deemph > 1) | 81 | if (deemph > 1) |
| 82 | return -EINVAL; | 82 | return -EINVAL; |
| @@ -92,7 +92,7 @@ static int ak4641_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 92 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 92 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 93 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); | 93 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); |
| 94 | 94 | ||
| 95 | ucontrol->value.enumerated.item[0] = ak4641->deemph; | 95 | ucontrol->value.integer.value[0] = ak4641->deemph; |
| 96 | return 0; | 96 | return 0; |
| 97 | }; | 97 | }; |
| 98 | 98 | ||
diff --git a/sound/soc/codecs/ak4671.c b/sound/soc/codecs/ak4671.c index 632e89f793a7..2a58b1dccd2f 100644 --- a/sound/soc/codecs/ak4671.c +++ b/sound/soc/codecs/ak4671.c | |||
| @@ -343,25 +343,25 @@ static const struct snd_soc_dapm_widget ak4671_dapm_widgets[] = { | |||
| 343 | }; | 343 | }; |
| 344 | 344 | ||
| 345 | static const struct snd_soc_dapm_route ak4671_intercon[] = { | 345 | static const struct snd_soc_dapm_route ak4671_intercon[] = { |
| 346 | {"DAC Left", "NULL", "PMPLL"}, | 346 | {"DAC Left", NULL, "PMPLL"}, |
| 347 | {"DAC Right", "NULL", "PMPLL"}, | 347 | {"DAC Right", NULL, "PMPLL"}, |
| 348 | {"ADC Left", "NULL", "PMPLL"}, | 348 | {"ADC Left", NULL, "PMPLL"}, |
| 349 | {"ADC Right", "NULL", "PMPLL"}, | 349 | {"ADC Right", NULL, "PMPLL"}, |
| 350 | 350 | ||
| 351 | /* Outputs */ | 351 | /* Outputs */ |
| 352 | {"LOUT1", "NULL", "LOUT1 Mixer"}, | 352 | {"LOUT1", NULL, "LOUT1 Mixer"}, |
| 353 | {"ROUT1", "NULL", "ROUT1 Mixer"}, | 353 | {"ROUT1", NULL, "ROUT1 Mixer"}, |
| 354 | {"LOUT2", "NULL", "LOUT2 Mix Amp"}, | 354 | {"LOUT2", NULL, "LOUT2 Mix Amp"}, |
| 355 | {"ROUT2", "NULL", "ROUT2 Mix Amp"}, | 355 | {"ROUT2", NULL, "ROUT2 Mix Amp"}, |
| 356 | {"LOUT3", "NULL", "LOUT3 Mixer"}, | 356 | {"LOUT3", NULL, "LOUT3 Mixer"}, |
| 357 | {"ROUT3", "NULL", "ROUT3 Mixer"}, | 357 | {"ROUT3", NULL, "ROUT3 Mixer"}, |
| 358 | 358 | ||
| 359 | {"LOUT1 Mixer", "DACL", "DAC Left"}, | 359 | {"LOUT1 Mixer", "DACL", "DAC Left"}, |
| 360 | {"ROUT1 Mixer", "DACR", "DAC Right"}, | 360 | {"ROUT1 Mixer", "DACR", "DAC Right"}, |
| 361 | {"LOUT2 Mixer", "DACHL", "DAC Left"}, | 361 | {"LOUT2 Mixer", "DACHL", "DAC Left"}, |
| 362 | {"ROUT2 Mixer", "DACHR", "DAC Right"}, | 362 | {"ROUT2 Mixer", "DACHR", "DAC Right"}, |
| 363 | {"LOUT2 Mix Amp", "NULL", "LOUT2 Mixer"}, | 363 | {"LOUT2 Mix Amp", NULL, "LOUT2 Mixer"}, |
| 364 | {"ROUT2 Mix Amp", "NULL", "ROUT2 Mixer"}, | 364 | {"ROUT2 Mix Amp", NULL, "ROUT2 Mixer"}, |
| 365 | {"LOUT3 Mixer", "DACSL", "DAC Left"}, | 365 | {"LOUT3 Mixer", "DACSL", "DAC Left"}, |
| 366 | {"ROUT3 Mixer", "DACSR", "DAC Right"}, | 366 | {"ROUT3 Mixer", "DACSR", "DAC Right"}, |
| 367 | 367 | ||
| @@ -381,18 +381,18 @@ static const struct snd_soc_dapm_route ak4671_intercon[] = { | |||
| 381 | {"LIN2", NULL, "Mic Bias"}, | 381 | {"LIN2", NULL, "Mic Bias"}, |
| 382 | {"RIN2", NULL, "Mic Bias"}, | 382 | {"RIN2", NULL, "Mic Bias"}, |
| 383 | 383 | ||
| 384 | {"ADC Left", "NULL", "LIN MUX"}, | 384 | {"ADC Left", NULL, "LIN MUX"}, |
| 385 | {"ADC Right", "NULL", "RIN MUX"}, | 385 | {"ADC Right", NULL, "RIN MUX"}, |
| 386 | 386 | ||
| 387 | /* Analog Loops */ | 387 | /* Analog Loops */ |
| 388 | {"LIN1 Mixing Circuit", "NULL", "LIN1"}, | 388 | {"LIN1 Mixing Circuit", NULL, "LIN1"}, |
| 389 | {"RIN1 Mixing Circuit", "NULL", "RIN1"}, | 389 | {"RIN1 Mixing Circuit", NULL, "RIN1"}, |
| 390 | {"LIN2 Mixing Circuit", "NULL", "LIN2"}, | 390 | {"LIN2 Mixing Circuit", NULL, "LIN2"}, |
| 391 | {"RIN2 Mixing Circuit", "NULL", "RIN2"}, | 391 | {"RIN2 Mixing Circuit", NULL, "RIN2"}, |
| 392 | {"LIN3 Mixing Circuit", "NULL", "LIN3"}, | 392 | {"LIN3 Mixing Circuit", NULL, "LIN3"}, |
| 393 | {"RIN3 Mixing Circuit", "NULL", "RIN3"}, | 393 | {"RIN3 Mixing Circuit", NULL, "RIN3"}, |
| 394 | {"LIN4 Mixing Circuit", "NULL", "LIN4"}, | 394 | {"LIN4 Mixing Circuit", NULL, "LIN4"}, |
| 395 | {"RIN4 Mixing Circuit", "NULL", "RIN4"}, | 395 | {"RIN4 Mixing Circuit", NULL, "RIN4"}, |
| 396 | 396 | ||
| 397 | {"LOUT1 Mixer", "LINL1", "LIN1 Mixing Circuit"}, | 397 | {"LOUT1 Mixer", "LINL1", "LIN1 Mixing Circuit"}, |
| 398 | {"ROUT1 Mixer", "RINR1", "RIN1 Mixing Circuit"}, | 398 | {"ROUT1 Mixer", "RINR1", "RIN1 Mixing Circuit"}, |
diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c index 79a4efcb894c..7d3a6accaf9a 100644 --- a/sound/soc/codecs/cs4271.c +++ b/sound/soc/codecs/cs4271.c | |||
| @@ -286,7 +286,7 @@ static int cs4271_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 286 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 286 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 287 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); | 287 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); |
| 288 | 288 | ||
| 289 | ucontrol->value.enumerated.item[0] = cs4271->deemph; | 289 | ucontrol->value.integer.value[0] = cs4271->deemph; |
| 290 | return 0; | 290 | return 0; |
| 291 | } | 291 | } |
| 292 | 292 | ||
| @@ -296,7 +296,7 @@ static int cs4271_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 296 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 296 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 297 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); | 297 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); |
| 298 | 298 | ||
| 299 | cs4271->deemph = ucontrol->value.enumerated.item[0]; | 299 | cs4271->deemph = ucontrol->value.integer.value[0]; |
| 300 | return cs4271_set_deemph(codec); | 300 | return cs4271_set_deemph(codec); |
| 301 | } | 301 | } |
| 302 | 302 | ||
diff --git a/sound/soc/codecs/da732x.c b/sound/soc/codecs/da732x.c index ffe96175a8a5..911c26c705fc 100644 --- a/sound/soc/codecs/da732x.c +++ b/sound/soc/codecs/da732x.c | |||
| @@ -876,11 +876,11 @@ static const struct snd_soc_dapm_widget da732x_dapm_widgets[] = { | |||
| 876 | 876 | ||
| 877 | static const struct snd_soc_dapm_route da732x_dapm_routes[] = { | 877 | static const struct snd_soc_dapm_route da732x_dapm_routes[] = { |
| 878 | /* Inputs */ | 878 | /* Inputs */ |
| 879 | {"AUX1L PGA", "NULL", "AUX1L"}, | 879 | {"AUX1L PGA", NULL, "AUX1L"}, |
| 880 | {"AUX1R PGA", "NULL", "AUX1R"}, | 880 | {"AUX1R PGA", NULL, "AUX1R"}, |
| 881 | {"MIC1 PGA", NULL, "MIC1"}, | 881 | {"MIC1 PGA", NULL, "MIC1"}, |
| 882 | {"MIC2 PGA", "NULL", "MIC2"}, | 882 | {"MIC2 PGA", NULL, "MIC2"}, |
| 883 | {"MIC3 PGA", "NULL", "MIC3"}, | 883 | {"MIC3 PGA", NULL, "MIC3"}, |
| 884 | 884 | ||
| 885 | /* Capture Path */ | 885 | /* Capture Path */ |
| 886 | {"ADC1 Left MUX", "MIC1", "MIC1 PGA"}, | 886 | {"ADC1 Left MUX", "MIC1", "MIC1 PGA"}, |
diff --git a/sound/soc/codecs/es8328.c b/sound/soc/codecs/es8328.c index f27325155ace..c5f35a07e8e4 100644 --- a/sound/soc/codecs/es8328.c +++ b/sound/soc/codecs/es8328.c | |||
| @@ -120,7 +120,7 @@ static int es8328_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 120 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 120 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 121 | struct es8328_priv *es8328 = snd_soc_codec_get_drvdata(codec); | 121 | struct es8328_priv *es8328 = snd_soc_codec_get_drvdata(codec); |
| 122 | 122 | ||
| 123 | ucontrol->value.enumerated.item[0] = es8328->deemph; | 123 | ucontrol->value.integer.value[0] = es8328->deemph; |
| 124 | return 0; | 124 | return 0; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| @@ -129,7 +129,7 @@ static int es8328_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 129 | { | 129 | { |
| 130 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 130 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 131 | struct es8328_priv *es8328 = snd_soc_codec_get_drvdata(codec); | 131 | struct es8328_priv *es8328 = snd_soc_codec_get_drvdata(codec); |
| 132 | int deemph = ucontrol->value.enumerated.item[0]; | 132 | int deemph = ucontrol->value.integer.value[0]; |
| 133 | int ret; | 133 | int ret; |
| 134 | 134 | ||
| 135 | if (deemph > 1) | 135 | if (deemph > 1) |
diff --git a/sound/soc/codecs/pcm1681.c b/sound/soc/codecs/pcm1681.c index a722a023c262..477e13d30971 100644 --- a/sound/soc/codecs/pcm1681.c +++ b/sound/soc/codecs/pcm1681.c | |||
| @@ -118,7 +118,7 @@ static int pcm1681_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 118 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 118 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 119 | struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); | 119 | struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); |
| 120 | 120 | ||
| 121 | ucontrol->value.enumerated.item[0] = priv->deemph; | 121 | ucontrol->value.integer.value[0] = priv->deemph; |
| 122 | 122 | ||
| 123 | return 0; | 123 | return 0; |
| 124 | } | 124 | } |
| @@ -129,7 +129,7 @@ static int pcm1681_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 129 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 129 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 130 | struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); | 130 | struct pcm1681_private *priv = snd_soc_codec_get_drvdata(codec); |
| 131 | 131 | ||
| 132 | priv->deemph = ucontrol->value.enumerated.item[0]; | 132 | priv->deemph = ucontrol->value.integer.value[0]; |
| 133 | 133 | ||
| 134 | return pcm1681_set_deemph(codec); | 134 | return pcm1681_set_deemph(codec); |
| 135 | } | 135 | } |
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c index 16723b167fbf..826037090c83 100644 --- a/sound/soc/codecs/rt286.c +++ b/sound/soc/codecs/rt286.c | |||
| @@ -1209,7 +1209,7 @@ static struct dmi_system_id dmi_dell_dino[] = { | |||
| 1209 | .ident = "Dell Dino", | 1209 | .ident = "Dell Dino", |
| 1210 | .matches = { | 1210 | .matches = { |
| 1211 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | 1211 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), |
| 1212 | DMI_MATCH(DMI_BOARD_NAME, "0144P8") | 1212 | DMI_MATCH(DMI_PRODUCT_NAME, "XPS 13 9343") |
| 1213 | } | 1213 | } |
| 1214 | }, | 1214 | }, |
| 1215 | { } | 1215 | { } |
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index e182e6569bbd..3593a1496056 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
| @@ -1151,13 +1151,7 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec *codec) | |||
| 1151 | /* Enable VDDC charge pump */ | 1151 | /* Enable VDDC charge pump */ |
| 1152 | ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP; | 1152 | ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP; |
| 1153 | } else if (vddio >= 3100 && vdda >= 3100) { | 1153 | } else if (vddio >= 3100 && vdda >= 3100) { |
| 1154 | /* | 1154 | ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP; |
| 1155 | * if vddio and vddd > 3.1v, | ||
| 1156 | * charge pump should be clean before set ana_pwr | ||
| 1157 | */ | ||
| 1158 | snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER, | ||
| 1159 | SGTL5000_VDDC_CHRGPMP_POWERUP, 0); | ||
| 1160 | |||
| 1161 | /* VDDC use VDDIO rail */ | 1155 | /* VDDC use VDDIO rail */ |
| 1162 | lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD; | 1156 | lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD; |
| 1163 | lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO << | 1157 | lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO << |
diff --git a/sound/soc/codecs/sn95031.c b/sound/soc/codecs/sn95031.c index 1e5d2643c286..7947c0ebb1ed 100644 --- a/sound/soc/codecs/sn95031.c +++ b/sound/soc/codecs/sn95031.c | |||
| @@ -538,8 +538,8 @@ static const struct snd_soc_dapm_route sn95031_audio_map[] = { | |||
| 538 | /* speaker map */ | 538 | /* speaker map */ |
| 539 | { "IHFOUTL", NULL, "Speaker Rail"}, | 539 | { "IHFOUTL", NULL, "Speaker Rail"}, |
| 540 | { "IHFOUTR", NULL, "Speaker Rail"}, | 540 | { "IHFOUTR", NULL, "Speaker Rail"}, |
| 541 | { "IHFOUTL", "NULL", "Speaker Left Playback"}, | 541 | { "IHFOUTL", NULL, "Speaker Left Playback"}, |
| 542 | { "IHFOUTR", "NULL", "Speaker Right Playback"}, | 542 | { "IHFOUTR", NULL, "Speaker Right Playback"}, |
| 543 | { "Speaker Left Playback", NULL, "Speaker Left Filter"}, | 543 | { "Speaker Left Playback", NULL, "Speaker Left Filter"}, |
| 544 | { "Speaker Right Playback", NULL, "Speaker Right Filter"}, | 544 | { "Speaker Right Playback", NULL, "Speaker Right Filter"}, |
| 545 | { "Speaker Left Filter", NULL, "IHFDAC Left"}, | 545 | { "Speaker Left Filter", NULL, "IHFDAC Left"}, |
diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c index 249ef5c4c762..32942bed34b1 100644 --- a/sound/soc/codecs/tas5086.c +++ b/sound/soc/codecs/tas5086.c | |||
| @@ -281,7 +281,7 @@ static int tas5086_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 281 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 281 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 282 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); | 282 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); |
| 283 | 283 | ||
| 284 | ucontrol->value.enumerated.item[0] = priv->deemph; | 284 | ucontrol->value.integer.value[0] = priv->deemph; |
| 285 | 285 | ||
| 286 | return 0; | 286 | return 0; |
| 287 | } | 287 | } |
| @@ -292,7 +292,7 @@ static int tas5086_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 292 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 292 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 293 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); | 293 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); |
| 294 | 294 | ||
| 295 | priv->deemph = ucontrol->value.enumerated.item[0]; | 295 | priv->deemph = ucontrol->value.integer.value[0]; |
| 296 | 296 | ||
| 297 | return tas5086_set_deemph(codec); | 297 | return tas5086_set_deemph(codec); |
| 298 | } | 298 | } |
diff --git a/sound/soc/codecs/wm2000.c b/sound/soc/codecs/wm2000.c index 8d9de49a5052..21d5402e343f 100644 --- a/sound/soc/codecs/wm2000.c +++ b/sound/soc/codecs/wm2000.c | |||
| @@ -610,7 +610,7 @@ static int wm2000_anc_mode_get(struct snd_kcontrol *kcontrol, | |||
| 610 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 610 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 611 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | 611 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
| 612 | 612 | ||
| 613 | ucontrol->value.enumerated.item[0] = wm2000->anc_active; | 613 | ucontrol->value.integer.value[0] = wm2000->anc_active; |
| 614 | 614 | ||
| 615 | return 0; | 615 | return 0; |
| 616 | } | 616 | } |
| @@ -620,7 +620,7 @@ static int wm2000_anc_mode_put(struct snd_kcontrol *kcontrol, | |||
| 620 | { | 620 | { |
| 621 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 621 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 622 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | 622 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
| 623 | int anc_active = ucontrol->value.enumerated.item[0]; | 623 | int anc_active = ucontrol->value.integer.value[0]; |
| 624 | int ret; | 624 | int ret; |
| 625 | 625 | ||
| 626 | if (anc_active > 1) | 626 | if (anc_active > 1) |
| @@ -643,7 +643,7 @@ static int wm2000_speaker_get(struct snd_kcontrol *kcontrol, | |||
| 643 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 643 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 644 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | 644 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
| 645 | 645 | ||
| 646 | ucontrol->value.enumerated.item[0] = wm2000->spk_ena; | 646 | ucontrol->value.integer.value[0] = wm2000->spk_ena; |
| 647 | 647 | ||
| 648 | return 0; | 648 | return 0; |
| 649 | } | 649 | } |
| @@ -653,7 +653,7 @@ static int wm2000_speaker_put(struct snd_kcontrol *kcontrol, | |||
| 653 | { | 653 | { |
| 654 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 654 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 655 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | 655 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
| 656 | int val = ucontrol->value.enumerated.item[0]; | 656 | int val = ucontrol->value.integer.value[0]; |
| 657 | int ret; | 657 | int ret; |
| 658 | 658 | ||
| 659 | if (val > 1) | 659 | if (val > 1) |
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c index 098c143f44d6..c6d10533e2bd 100644 --- a/sound/soc/codecs/wm8731.c +++ b/sound/soc/codecs/wm8731.c | |||
| @@ -125,7 +125,7 @@ static int wm8731_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 125 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 125 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 126 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); | 126 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); |
| 127 | 127 | ||
| 128 | ucontrol->value.enumerated.item[0] = wm8731->deemph; | 128 | ucontrol->value.integer.value[0] = wm8731->deemph; |
| 129 | 129 | ||
| 130 | return 0; | 130 | return 0; |
| 131 | } | 131 | } |
| @@ -135,7 +135,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 135 | { | 135 | { |
| 136 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 136 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 137 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); | 137 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); |
| 138 | int deemph = ucontrol->value.enumerated.item[0]; | 138 | int deemph = ucontrol->value.integer.value[0]; |
| 139 | int ret = 0; | 139 | int ret = 0; |
| 140 | 140 | ||
| 141 | if (deemph > 1) | 141 | if (deemph > 1) |
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c index dde462c082be..04b04f8e147c 100644 --- a/sound/soc/codecs/wm8903.c +++ b/sound/soc/codecs/wm8903.c | |||
| @@ -442,7 +442,7 @@ static int wm8903_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 442 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 442 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 443 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); | 443 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); |
| 444 | 444 | ||
| 445 | ucontrol->value.enumerated.item[0] = wm8903->deemph; | 445 | ucontrol->value.integer.value[0] = wm8903->deemph; |
| 446 | 446 | ||
| 447 | return 0; | 447 | return 0; |
| 448 | } | 448 | } |
| @@ -452,7 +452,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 452 | { | 452 | { |
| 453 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 453 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 454 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); | 454 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); |
| 455 | int deemph = ucontrol->value.enumerated.item[0]; | 455 | int deemph = ucontrol->value.integer.value[0]; |
| 456 | int ret = 0; | 456 | int ret = 0; |
| 457 | 457 | ||
| 458 | if (deemph > 1) | 458 | if (deemph > 1) |
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index d3b3f57668cc..215e93c1ddf0 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c | |||
| @@ -525,7 +525,7 @@ static int wm8904_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 525 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 525 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 526 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); | 526 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); |
| 527 | 527 | ||
| 528 | ucontrol->value.enumerated.item[0] = wm8904->deemph; | 528 | ucontrol->value.integer.value[0] = wm8904->deemph; |
| 529 | return 0; | 529 | return 0; |
| 530 | } | 530 | } |
| 531 | 531 | ||
| @@ -534,7 +534,7 @@ static int wm8904_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 534 | { | 534 | { |
| 535 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 535 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 536 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); | 536 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); |
| 537 | int deemph = ucontrol->value.enumerated.item[0]; | 537 | int deemph = ucontrol->value.integer.value[0]; |
| 538 | 538 | ||
| 539 | if (deemph > 1) | 539 | if (deemph > 1) |
| 540 | return -EINVAL; | 540 | return -EINVAL; |
diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c index 1ab2d462afad..00bec915d652 100644 --- a/sound/soc/codecs/wm8955.c +++ b/sound/soc/codecs/wm8955.c | |||
| @@ -393,7 +393,7 @@ static int wm8955_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 393 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 393 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 394 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); | 394 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); |
| 395 | 395 | ||
| 396 | ucontrol->value.enumerated.item[0] = wm8955->deemph; | 396 | ucontrol->value.integer.value[0] = wm8955->deemph; |
| 397 | return 0; | 397 | return 0; |
| 398 | } | 398 | } |
| 399 | 399 | ||
| @@ -402,7 +402,7 @@ static int wm8955_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 402 | { | 402 | { |
| 403 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 403 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 404 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); | 404 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); |
| 405 | int deemph = ucontrol->value.enumerated.item[0]; | 405 | int deemph = ucontrol->value.integer.value[0]; |
| 406 | 406 | ||
| 407 | if (deemph > 1) | 407 | if (deemph > 1) |
| 408 | return -EINVAL; | 408 | return -EINVAL; |
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index cf8fecf97f2c..3035d9856415 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c | |||
| @@ -184,7 +184,7 @@ static int wm8960_get_deemph(struct snd_kcontrol *kcontrol, | |||
| 184 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 184 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 185 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); | 185 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); |
| 186 | 186 | ||
| 187 | ucontrol->value.enumerated.item[0] = wm8960->deemph; | 187 | ucontrol->value.integer.value[0] = wm8960->deemph; |
| 188 | return 0; | 188 | return 0; |
| 189 | } | 189 | } |
| 190 | 190 | ||
| @@ -193,7 +193,7 @@ static int wm8960_put_deemph(struct snd_kcontrol *kcontrol, | |||
| 193 | { | 193 | { |
| 194 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); | 194 | struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); |
| 195 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); | 195 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); |
| 196 | int deemph = ucontrol->value.enumerated.item[0]; | 196 | int deemph = ucontrol->value.integer.value[0]; |
| 197 | 197 | ||
| 198 | if (deemph > 1) | 198 | if (deemph > 1) |
| 199 | return -EINVAL; | 199 | return -EINVAL; |
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c index 9517571e820d..98c9525bd751 100644 --- a/sound/soc/codecs/wm9712.c +++ b/sound/soc/codecs/wm9712.c | |||
| @@ -180,7 +180,7 @@ static int wm9712_hp_mixer_put(struct snd_kcontrol *kcontrol, | |||
| 180 | struct snd_soc_dapm_context *dapm = snd_soc_dapm_kcontrol_dapm(kcontrol); | 180 | struct snd_soc_dapm_context *dapm = snd_soc_dapm_kcontrol_dapm(kcontrol); |
| 181 | struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm); | 181 | struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm); |
| 182 | struct wm9712_priv *wm9712 = snd_soc_codec_get_drvdata(codec); | 182 | struct wm9712_priv *wm9712 = snd_soc_codec_get_drvdata(codec); |
| 183 | unsigned int val = ucontrol->value.enumerated.item[0]; | 183 | unsigned int val = ucontrol->value.integer.value[0]; |
| 184 | struct soc_mixer_control *mc = | 184 | struct soc_mixer_control *mc = |
| 185 | (struct soc_mixer_control *)kcontrol->private_value; | 185 | (struct soc_mixer_control *)kcontrol->private_value; |
| 186 | unsigned int mixer, mask, shift, old; | 186 | unsigned int mixer, mask, shift, old; |
| @@ -193,7 +193,7 @@ static int wm9712_hp_mixer_put(struct snd_kcontrol *kcontrol, | |||
| 193 | 193 | ||
| 194 | mutex_lock(&wm9712->lock); | 194 | mutex_lock(&wm9712->lock); |
| 195 | old = wm9712->hp_mixer[mixer]; | 195 | old = wm9712->hp_mixer[mixer]; |
| 196 | if (ucontrol->value.enumerated.item[0]) | 196 | if (ucontrol->value.integer.value[0]) |
| 197 | wm9712->hp_mixer[mixer] |= mask; | 197 | wm9712->hp_mixer[mixer] |= mask; |
| 198 | else | 198 | else |
| 199 | wm9712->hp_mixer[mixer] &= ~mask; | 199 | wm9712->hp_mixer[mixer] &= ~mask; |
| @@ -231,7 +231,7 @@ static int wm9712_hp_mixer_get(struct snd_kcontrol *kcontrol, | |||
| 231 | mixer = mc->shift >> 8; | 231 | mixer = mc->shift >> 8; |
| 232 | shift = mc->shift & 0xff; | 232 | shift = mc->shift & 0xff; |
| 233 | 233 | ||
| 234 | ucontrol->value.enumerated.item[0] = | 234 | ucontrol->value.integer.value[0] = |
| 235 | (wm9712->hp_mixer[mixer] >> shift) & 1; | 235 | (wm9712->hp_mixer[mixer] >> shift) & 1; |
| 236 | 236 | ||
| 237 | return 0; | 237 | return 0; |
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index 68222917b396..79552953e1bd 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c | |||
| @@ -255,7 +255,7 @@ static int wm9713_hp_mixer_put(struct snd_kcontrol *kcontrol, | |||
| 255 | struct snd_soc_dapm_context *dapm = snd_soc_dapm_kcontrol_dapm(kcontrol); | 255 | struct snd_soc_dapm_context *dapm = snd_soc_dapm_kcontrol_dapm(kcontrol); |
| 256 | struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm); | 256 | struct snd_soc_codec *codec = snd_soc_dapm_to_codec(dapm); |
| 257 | struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec); | 257 | struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec); |
| 258 | unsigned int val = ucontrol->value.enumerated.item[0]; | 258 | unsigned int val = ucontrol->value.integer.value[0]; |
| 259 | struct soc_mixer_control *mc = | 259 | struct soc_mixer_control *mc = |
| 260 | (struct soc_mixer_control *)kcontrol->private_value; | 260 | (struct soc_mixer_control *)kcontrol->private_value; |
| 261 | unsigned int mixer, mask, shift, old; | 261 | unsigned int mixer, mask, shift, old; |
| @@ -268,7 +268,7 @@ static int wm9713_hp_mixer_put(struct snd_kcontrol *kcontrol, | |||
| 268 | 268 | ||
| 269 | mutex_lock(&wm9713->lock); | 269 | mutex_lock(&wm9713->lock); |
| 270 | old = wm9713->hp_mixer[mixer]; | 270 | old = wm9713->hp_mixer[mixer]; |
| 271 | if (ucontrol->value.enumerated.item[0]) | 271 | if (ucontrol->value.integer.value[0]) |
| 272 | wm9713->hp_mixer[mixer] |= mask; | 272 | wm9713->hp_mixer[mixer] |= mask; |
| 273 | else | 273 | else |
| 274 | wm9713->hp_mixer[mixer] &= ~mask; | 274 | wm9713->hp_mixer[mixer] &= ~mask; |
| @@ -306,7 +306,7 @@ static int wm9713_hp_mixer_get(struct snd_kcontrol *kcontrol, | |||
| 306 | mixer = mc->shift >> 8; | 306 | mixer = mc->shift >> 8; |
| 307 | shift = mc->shift & 0xff; | 307 | shift = mc->shift & 0xff; |
| 308 | 308 | ||
| 309 | ucontrol->value.enumerated.item[0] = | 309 | ucontrol->value.integer.value[0] = |
| 310 | (wm9713->hp_mixer[mixer] >> shift) & 1; | 310 | (wm9713->hp_mixer[mixer] >> shift) & 1; |
| 311 | 311 | ||
| 312 | return 0; | 312 | return 0; |
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index b9fabbf69db6..6b0c8f717ec2 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
| @@ -603,7 +603,7 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream, | |||
| 603 | factor = (div2 + 1) * (7 * psr + 1) * 2; | 603 | factor = (div2 + 1) * (7 * psr + 1) * 2; |
| 604 | 604 | ||
| 605 | for (i = 0; i < 255; i++) { | 605 | for (i = 0; i < 255; i++) { |
| 606 | tmprate = freq * factor * (i + 2); | 606 | tmprate = freq * factor * (i + 1); |
| 607 | 607 | ||
| 608 | if (baudclk_is_used) | 608 | if (baudclk_is_used) |
| 609 | clkrate = clk_get_rate(ssi_private->baudclk); | 609 | clkrate = clk_get_rate(ssi_private->baudclk); |
| @@ -1227,7 +1227,7 @@ static int fsl_ssi_imx_probe(struct platform_device *pdev, | |||
| 1227 | ssi_private->dma_params_tx.addr = ssi_private->ssi_phys + CCSR_SSI_STX0; | 1227 | ssi_private->dma_params_tx.addr = ssi_private->ssi_phys + CCSR_SSI_STX0; |
| 1228 | ssi_private->dma_params_rx.addr = ssi_private->ssi_phys + CCSR_SSI_SRX0; | 1228 | ssi_private->dma_params_rx.addr = ssi_private->ssi_phys + CCSR_SSI_SRX0; |
| 1229 | 1229 | ||
| 1230 | ret = !of_property_read_u32_array(np, "dmas", dmas, 4); | 1230 | ret = of_property_read_u32_array(np, "dmas", dmas, 4); |
| 1231 | if (ssi_private->use_dma && !ret && dmas[2] == IMX_DMATYPE_SSI_DUAL) { | 1231 | if (ssi_private->use_dma && !ret && dmas[2] == IMX_DMATYPE_SSI_DUAL) { |
| 1232 | ssi_private->use_dual_fifo = true; | 1232 | ssi_private->use_dual_fifo = true; |
| 1233 | /* When using dual fifo mode, we need to keep watermark | 1233 | /* When using dual fifo mode, we need to keep watermark |
diff --git a/sound/soc/intel/sst-haswell-dsp.c b/sound/soc/intel/sst-haswell-dsp.c index c42ffae5fe9f..402b728c0a06 100644 --- a/sound/soc/intel/sst-haswell-dsp.c +++ b/sound/soc/intel/sst-haswell-dsp.c | |||
| @@ -207,9 +207,6 @@ static int hsw_parse_fw_image(struct sst_fw *sst_fw) | |||
| 207 | module = (void *)module + sizeof(*module) + module->mod_size; | 207 | module = (void *)module + sizeof(*module) + module->mod_size; |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | /* allocate scratch mem regions */ | ||
| 211 | sst_block_alloc_scratch(dsp); | ||
| 212 | |||
| 213 | return 0; | 210 | return 0; |
| 214 | } | 211 | } |
| 215 | 212 | ||
diff --git a/sound/soc/intel/sst-haswell-ipc.c b/sound/soc/intel/sst-haswell-ipc.c index 394af5684c05..863a9ca34b8e 100644 --- a/sound/soc/intel/sst-haswell-ipc.c +++ b/sound/soc/intel/sst-haswell-ipc.c | |||
| @@ -1732,6 +1732,7 @@ static void sst_hsw_drop_all(struct sst_hsw *hsw) | |||
| 1732 | int sst_hsw_dsp_load(struct sst_hsw *hsw) | 1732 | int sst_hsw_dsp_load(struct sst_hsw *hsw) |
| 1733 | { | 1733 | { |
| 1734 | struct sst_dsp *dsp = hsw->dsp; | 1734 | struct sst_dsp *dsp = hsw->dsp; |
| 1735 | struct sst_fw *sst_fw, *t; | ||
| 1735 | int ret; | 1736 | int ret; |
| 1736 | 1737 | ||
| 1737 | dev_dbg(hsw->dev, "loading audio DSP...."); | 1738 | dev_dbg(hsw->dev, "loading audio DSP...."); |
| @@ -1748,12 +1749,17 @@ int sst_hsw_dsp_load(struct sst_hsw *hsw) | |||
| 1748 | return ret; | 1749 | return ret; |
| 1749 | } | 1750 | } |
| 1750 | 1751 | ||
| 1751 | ret = sst_fw_reload(hsw->sst_fw); | 1752 | list_for_each_entry_safe_reverse(sst_fw, t, &dsp->fw_list, list) { |
| 1752 | if (ret < 0) { | 1753 | ret = sst_fw_reload(sst_fw); |
| 1753 | dev_err(hsw->dev, "error: SST FW reload failed\n"); | 1754 | if (ret < 0) { |
| 1754 | sst_dsp_dma_put_channel(dsp); | 1755 | dev_err(hsw->dev, "error: SST FW reload failed\n"); |
| 1755 | return -ENOMEM; | 1756 | sst_dsp_dma_put_channel(dsp); |
| 1757 | return -ENOMEM; | ||
| 1758 | } | ||
| 1756 | } | 1759 | } |
| 1760 | ret = sst_block_alloc_scratch(hsw->dsp); | ||
| 1761 | if (ret < 0) | ||
| 1762 | return -EINVAL; | ||
| 1757 | 1763 | ||
| 1758 | sst_dsp_dma_put_channel(dsp); | 1764 | sst_dsp_dma_put_channel(dsp); |
| 1759 | return 0; | 1765 | return 0; |
| @@ -1809,12 +1815,17 @@ int sst_hsw_dsp_runtime_suspend(struct sst_hsw *hsw) | |||
| 1809 | 1815 | ||
| 1810 | int sst_hsw_dsp_runtime_sleep(struct sst_hsw *hsw) | 1816 | int sst_hsw_dsp_runtime_sleep(struct sst_hsw *hsw) |
| 1811 | { | 1817 | { |
| 1812 | sst_fw_unload(hsw->sst_fw); | 1818 | struct sst_fw *sst_fw, *t; |
| 1813 | sst_block_free_scratch(hsw->dsp); | 1819 | struct sst_dsp *dsp = hsw->dsp; |
| 1820 | |||
| 1821 | list_for_each_entry_safe(sst_fw, t, &dsp->fw_list, list) { | ||
| 1822 | sst_fw_unload(sst_fw); | ||
| 1823 | } | ||
| 1824 | sst_block_free_scratch(dsp); | ||
| 1814 | 1825 | ||
| 1815 | hsw->boot_complete = false; | 1826 | hsw->boot_complete = false; |
| 1816 | 1827 | ||
| 1817 | sst_dsp_sleep(hsw->dsp); | 1828 | sst_dsp_sleep(dsp); |
| 1818 | 1829 | ||
| 1819 | return 0; | 1830 | return 0; |
| 1820 | } | 1831 | } |
| @@ -1943,6 +1954,11 @@ int sst_hsw_dsp_init(struct device *dev, struct sst_pdata *pdata) | |||
| 1943 | goto fw_err; | 1954 | goto fw_err; |
| 1944 | } | 1955 | } |
| 1945 | 1956 | ||
| 1957 | /* allocate scratch mem regions */ | ||
| 1958 | ret = sst_block_alloc_scratch(hsw->dsp); | ||
| 1959 | if (ret < 0) | ||
| 1960 | goto boot_err; | ||
| 1961 | |||
| 1946 | /* wait for DSP boot completion */ | 1962 | /* wait for DSP boot completion */ |
| 1947 | sst_dsp_boot(hsw->dsp); | 1963 | sst_dsp_boot(hsw->dsp); |
| 1948 | ret = wait_event_timeout(hsw->boot_wait, hsw->boot_complete, | 1964 | ret = wait_event_timeout(hsw->boot_wait, hsw->boot_complete, |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 5c0658d49609..07aa54385ae0 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
| @@ -347,6 +347,8 @@ static ssize_t codec_list_read_file(struct file *file, char __user *user_buf, | |||
| 347 | if (!buf) | 347 | if (!buf) |
| 348 | return -ENOMEM; | 348 | return -ENOMEM; |
| 349 | 349 | ||
| 350 | mutex_lock(&client_mutex); | ||
| 351 | |||
| 350 | list_for_each_entry(codec, &codec_list, list) { | 352 | list_for_each_entry(codec, &codec_list, list) { |
| 351 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", | 353 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", |
| 352 | codec->component.name); | 354 | codec->component.name); |
| @@ -358,6 +360,8 @@ static ssize_t codec_list_read_file(struct file *file, char __user *user_buf, | |||
| 358 | } | 360 | } |
| 359 | } | 361 | } |
| 360 | 362 | ||
| 363 | mutex_unlock(&client_mutex); | ||
| 364 | |||
| 361 | if (ret >= 0) | 365 | if (ret >= 0) |
| 362 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); | 366 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); |
| 363 | 367 | ||
| @@ -382,6 +386,8 @@ static ssize_t dai_list_read_file(struct file *file, char __user *user_buf, | |||
| 382 | if (!buf) | 386 | if (!buf) |
| 383 | return -ENOMEM; | 387 | return -ENOMEM; |
| 384 | 388 | ||
| 389 | mutex_lock(&client_mutex); | ||
| 390 | |||
| 385 | list_for_each_entry(component, &component_list, list) { | 391 | list_for_each_entry(component, &component_list, list) { |
| 386 | list_for_each_entry(dai, &component->dai_list, list) { | 392 | list_for_each_entry(dai, &component->dai_list, list) { |
| 387 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", | 393 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", |
| @@ -395,6 +401,8 @@ static ssize_t dai_list_read_file(struct file *file, char __user *user_buf, | |||
| 395 | } | 401 | } |
| 396 | } | 402 | } |
| 397 | 403 | ||
| 404 | mutex_unlock(&client_mutex); | ||
| 405 | |||
| 398 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); | 406 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); |
| 399 | 407 | ||
| 400 | kfree(buf); | 408 | kfree(buf); |
| @@ -418,6 +426,8 @@ static ssize_t platform_list_read_file(struct file *file, | |||
| 418 | if (!buf) | 426 | if (!buf) |
| 419 | return -ENOMEM; | 427 | return -ENOMEM; |
| 420 | 428 | ||
| 429 | mutex_lock(&client_mutex); | ||
| 430 | |||
| 421 | list_for_each_entry(platform, &platform_list, list) { | 431 | list_for_each_entry(platform, &platform_list, list) { |
| 422 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", | 432 | len = snprintf(buf + ret, PAGE_SIZE - ret, "%s\n", |
| 423 | platform->component.name); | 433 | platform->component.name); |
| @@ -429,6 +439,8 @@ static ssize_t platform_list_read_file(struct file *file, | |||
| 429 | } | 439 | } |
| 430 | } | 440 | } |
| 431 | 441 | ||
| 442 | mutex_unlock(&client_mutex); | ||
| 443 | |||
| 432 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); | 444 | ret = simple_read_from_buffer(user_buf, count, ppos, buf, ret); |
| 433 | 445 | ||
| 434 | kfree(buf); | 446 | kfree(buf); |
| @@ -836,6 +848,8 @@ static struct snd_soc_component *soc_find_component( | |||
| 836 | { | 848 | { |
| 837 | struct snd_soc_component *component; | 849 | struct snd_soc_component *component; |
| 838 | 850 | ||
| 851 | lockdep_assert_held(&client_mutex); | ||
| 852 | |||
| 839 | list_for_each_entry(component, &component_list, list) { | 853 | list_for_each_entry(component, &component_list, list) { |
| 840 | if (of_node) { | 854 | if (of_node) { |
| 841 | if (component->dev->of_node == of_node) | 855 | if (component->dev->of_node == of_node) |
| @@ -854,6 +868,8 @@ static struct snd_soc_dai *snd_soc_find_dai( | |||
| 854 | struct snd_soc_component *component; | 868 | struct snd_soc_component *component; |
| 855 | struct snd_soc_dai *dai; | 869 | struct snd_soc_dai *dai; |
| 856 | 870 | ||
| 871 | lockdep_assert_held(&client_mutex); | ||
| 872 | |||
| 857 | /* Find CPU DAI from registered DAIs*/ | 873 | /* Find CPU DAI from registered DAIs*/ |
| 858 | list_for_each_entry(component, &component_list, list) { | 874 | list_for_each_entry(component, &component_list, list) { |
| 859 | if (dlc->of_node && component->dev->of_node != dlc->of_node) | 875 | if (dlc->of_node && component->dev->of_node != dlc->of_node) |
| @@ -1508,6 +1524,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card) | |||
| 1508 | struct snd_soc_codec *codec; | 1524 | struct snd_soc_codec *codec; |
| 1509 | int ret, i, order; | 1525 | int ret, i, order; |
| 1510 | 1526 | ||
| 1527 | mutex_lock(&client_mutex); | ||
| 1511 | mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_INIT); | 1528 | mutex_lock_nested(&card->mutex, SND_SOC_CARD_CLASS_INIT); |
| 1512 | 1529 | ||
| 1513 | /* bind DAIs */ | 1530 | /* bind DAIs */ |
| @@ -1670,6 +1687,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card) | |||
| 1670 | card->instantiated = 1; | 1687 | card->instantiated = 1; |
| 1671 | snd_soc_dapm_sync(&card->dapm); | 1688 | snd_soc_dapm_sync(&card->dapm); |
| 1672 | mutex_unlock(&card->mutex); | 1689 | mutex_unlock(&card->mutex); |
| 1690 | mutex_unlock(&client_mutex); | ||
| 1673 | 1691 | ||
| 1674 | return 0; | 1692 | return 0; |
| 1675 | 1693 | ||
| @@ -1688,6 +1706,7 @@ card_probe_error: | |||
| 1688 | 1706 | ||
| 1689 | base_error: | 1707 | base_error: |
| 1690 | mutex_unlock(&card->mutex); | 1708 | mutex_unlock(&card->mutex); |
| 1709 | mutex_unlock(&client_mutex); | ||
| 1691 | 1710 | ||
| 1692 | return ret; | 1711 | return ret; |
| 1693 | } | 1712 | } |
| @@ -2721,13 +2740,6 @@ static void snd_soc_component_del_unlocked(struct snd_soc_component *component) | |||
| 2721 | list_del(&component->list); | 2740 | list_del(&component->list); |
| 2722 | } | 2741 | } |
| 2723 | 2742 | ||
| 2724 | static void snd_soc_component_del(struct snd_soc_component *component) | ||
| 2725 | { | ||
| 2726 | mutex_lock(&client_mutex); | ||
| 2727 | snd_soc_component_del_unlocked(component); | ||
| 2728 | mutex_unlock(&client_mutex); | ||
| 2729 | } | ||
| 2730 | |||
| 2731 | int snd_soc_register_component(struct device *dev, | 2743 | int snd_soc_register_component(struct device *dev, |
| 2732 | const struct snd_soc_component_driver *cmpnt_drv, | 2744 | const struct snd_soc_component_driver *cmpnt_drv, |
| 2733 | struct snd_soc_dai_driver *dai_drv, | 2745 | struct snd_soc_dai_driver *dai_drv, |
| @@ -2775,14 +2787,17 @@ void snd_soc_unregister_component(struct device *dev) | |||
| 2775 | { | 2787 | { |
| 2776 | struct snd_soc_component *cmpnt; | 2788 | struct snd_soc_component *cmpnt; |
| 2777 | 2789 | ||
| 2790 | mutex_lock(&client_mutex); | ||
| 2778 | list_for_each_entry(cmpnt, &component_list, list) { | 2791 | list_for_each_entry(cmpnt, &component_list, list) { |
| 2779 | if (dev == cmpnt->dev && cmpnt->registered_as_component) | 2792 | if (dev == cmpnt->dev && cmpnt->registered_as_component) |
| 2780 | goto found; | 2793 | goto found; |
| 2781 | } | 2794 | } |
| 2795 | mutex_unlock(&client_mutex); | ||
| 2782 | return; | 2796 | return; |
| 2783 | 2797 | ||
| 2784 | found: | 2798 | found: |
| 2785 | snd_soc_component_del(cmpnt); | 2799 | snd_soc_component_del_unlocked(cmpnt); |
| 2800 | mutex_unlock(&client_mutex); | ||
| 2786 | snd_soc_component_cleanup(cmpnt); | 2801 | snd_soc_component_cleanup(cmpnt); |
| 2787 | kfree(cmpnt); | 2802 | kfree(cmpnt); |
| 2788 | } | 2803 | } |
| @@ -2890,10 +2905,14 @@ struct snd_soc_platform *snd_soc_lookup_platform(struct device *dev) | |||
| 2890 | { | 2905 | { |
| 2891 | struct snd_soc_platform *platform; | 2906 | struct snd_soc_platform *platform; |
| 2892 | 2907 | ||
| 2908 | mutex_lock(&client_mutex); | ||
| 2893 | list_for_each_entry(platform, &platform_list, list) { | 2909 | list_for_each_entry(platform, &platform_list, list) { |
| 2894 | if (dev == platform->dev) | 2910 | if (dev == platform->dev) { |
| 2911 | mutex_unlock(&client_mutex); | ||
| 2895 | return platform; | 2912 | return platform; |
| 2913 | } | ||
| 2896 | } | 2914 | } |
| 2915 | mutex_unlock(&client_mutex); | ||
| 2897 | 2916 | ||
| 2898 | return NULL; | 2917 | return NULL; |
| 2899 | } | 2918 | } |
| @@ -3098,15 +3117,15 @@ void snd_soc_unregister_codec(struct device *dev) | |||
| 3098 | { | 3117 | { |
| 3099 | struct snd_soc_codec *codec; | 3118 | struct snd_soc_codec *codec; |
| 3100 | 3119 | ||
| 3120 | mutex_lock(&client_mutex); | ||
| 3101 | list_for_each_entry(codec, &codec_list, list) { | 3121 | list_for_each_entry(codec, &codec_list, list) { |
| 3102 | if (dev == codec->dev) | 3122 | if (dev == codec->dev) |
| 3103 | goto found; | 3123 | goto found; |
| 3104 | } | 3124 | } |
| 3125 | mutex_unlock(&client_mutex); | ||
| 3105 | return; | 3126 | return; |
| 3106 | 3127 | ||
| 3107 | found: | 3128 | found: |
| 3108 | |||
| 3109 | mutex_lock(&client_mutex); | ||
| 3110 | list_del(&codec->list); | 3129 | list_del(&codec->list); |
| 3111 | snd_soc_component_del_unlocked(&codec->component); | 3130 | snd_soc_component_del_unlocked(&codec->component); |
| 3112 | mutex_unlock(&client_mutex); | 3131 | mutex_unlock(&client_mutex); |
