sound fixes for 4.13-rc8
Three regression fixes that should be addressed before the final release: a missing mutex call in OSS PCM emulation ioctl, ASoC rt5670 headset detection breakage, and a regression in simple-card parser code. -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEECxfAB4MH3rD5mfB6bDGAVD0pKaQFAlmn/mwOHHRpd2FpQHN1 c2UuZGUACgkQbDGAVD0pKaQDQw//fFmgiBxYxAiYxKH/ICyhbotY35IdRrYbL2rN Q+9NNlbeD8cmGTdKJi21vu1Oq9oxwDqn0IqwYNchRQLPUjWhoCnTNbAsPTWcDawY Qay2MWe7lrgZkCCs3QkC0IZozD/l60CWwByWmWzyQNDHkxR2r/XtFNabPCNyQhj4 WNyCqW9UWe35oA0Ifi9e+X+V8K8JFj1qFSW3i99nd0skAXlhjpwNxUA80198e1Il IhbyAGhJAIOsnwS2aRdythSN+zBBmjK8ZP64TSKt1rZGtqsBRi/GPKJTLWgBPK0U ngMlG6T/B3qSag3i+CYxRXwKFusL/R3nr5ad24jE1ZQUKBKVSDTYcDDCwS6BJStI ZlHxHyCfsTVhcFOcW5wkn5pavT1AYfnXDN8K0dCSWi0Zs+FwhX2DbwghfQQyKMXN U8p8ZERrtzeFZh/ITtqUSi+sOqi2CEZu/jkjI8KrOWluU8D4oqvAHl+JD1UHXUwA 0N9r0d/TScXSoddrh5PqPkrnJacKniFoUwjPuzrwVTOAo15gmNkspAlrhbwocI1s d4ruq5dkTtL9571QLHTFYrcDjed7xqToAyKK6D5q8233vKwGa941X+PhUoqpZWI4 MsDqTv+/+6r4JtuzaLhMPn/LG3IyvHr76dbM6yIHbjKy8QZxw7EcQY/t8ZIKvhEB t6Lmzow= =oMcz -----END PGP SIGNATURE----- Merge tag 'sound-4.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "Three regression fixes that should be addressed before the final release: a missing mutex call in OSS PCM emulation ioctl, ASoC rt5670 headset detection breakage, and a regression in simple-card parser code" * tag 'sound-4.13-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ASoC: simple_card_utils: fix fallback when "label" property isn't present ALSA: pcm: Fix power lock unbalance via OSS emulation ASoC: rt5670: Fix GPIO headset detection regression
This commit is contained in:
commit
381cce59a9
@ -3064,6 +3064,7 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
|
||||
{
|
||||
snd_pcm_uframes_t *frames = arg;
|
||||
snd_pcm_sframes_t result;
|
||||
int err;
|
||||
|
||||
switch (cmd) {
|
||||
case SNDRV_PCM_IOCTL_FORWARD:
|
||||
@ -3083,7 +3084,10 @@ int snd_pcm_kernel_ioctl(struct snd_pcm_substream *substream,
|
||||
case SNDRV_PCM_IOCTL_START:
|
||||
return snd_pcm_start_lock_irq(substream);
|
||||
case SNDRV_PCM_IOCTL_DRAIN:
|
||||
return snd_pcm_drain(substream, NULL);
|
||||
snd_power_lock(substream->pcm->card);
|
||||
err = snd_pcm_drain(substream, NULL);
|
||||
snd_power_unlock(substream->pcm->card);
|
||||
return err;
|
||||
case SNDRV_PCM_IOCTL_DROP:
|
||||
return snd_pcm_drop(substream);
|
||||
case SNDRV_PCM_IOCTL_DELAY:
|
||||
|
@ -567,7 +567,7 @@ int rt5670_set_jack_detect(struct snd_soc_codec *codec,
|
||||
|
||||
rt5670->jack = jack;
|
||||
rt5670->hp_gpio.gpiod_dev = codec->dev;
|
||||
rt5670->hp_gpio.name = "headphone detect";
|
||||
rt5670->hp_gpio.name = "headset";
|
||||
rt5670->hp_gpio.report = SND_JACK_HEADSET |
|
||||
SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2;
|
||||
rt5670->hp_gpio.debounce_time = 150;
|
||||
|
@ -132,7 +132,7 @@ int asoc_simple_card_parse_card_name(struct snd_soc_card *card,
|
||||
|
||||
/* Parse the card name from DT */
|
||||
ret = snd_soc_of_parse_card_name(card, "label");
|
||||
if (ret < 0) {
|
||||
if (ret < 0 || !card->name) {
|
||||
char prop[128];
|
||||
|
||||
snprintf(prop, sizeof(prop), "%sname", prefix);
|
||||
|
@ -184,6 +184,13 @@ static int cht_aif1_hw_params(struct snd_pcm_substream *substream,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct acpi_gpio_params headset_gpios = { 0, 0, false };
|
||||
|
||||
static const struct acpi_gpio_mapping cht_rt5672_gpios[] = {
|
||||
{ "headset-gpios", &headset_gpios, 1 },
|
||||
{},
|
||||
};
|
||||
|
||||
static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
|
||||
{
|
||||
int ret;
|
||||
@ -191,6 +198,9 @@ static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
|
||||
struct snd_soc_codec *codec = codec_dai->codec;
|
||||
struct cht_mc_private *ctx = snd_soc_card_get_drvdata(runtime->card);
|
||||
|
||||
if (devm_acpi_dev_add_driver_gpios(codec->dev, cht_rt5672_gpios))
|
||||
dev_warn(runtime->dev, "Unable to add GPIO mapping table\n");
|
||||
|
||||
/* TDM 4 slots 24 bit, set Rx & Tx bitmask to 4 active slots */
|
||||
ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xF, 0xF, 4, 24);
|
||||
if (ret < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user