浏览代码

Merge remote-tracking branch 'asoc/fix/dapm' into asoc-linus

Mark Brown 8 年之前
父节点
当前提交
195dee5647
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      sound/soc/soc-dapm.c

+ 5 - 1
sound/soc/soc-dapm.c

@@ -823,6 +823,7 @@ static int dapm_create_or_share_kcontrol(struct snd_soc_dapm_widget *w,
 			case snd_soc_dapm_switch:
 			case snd_soc_dapm_switch:
 			case snd_soc_dapm_mixer:
 			case snd_soc_dapm_mixer:
 			case snd_soc_dapm_pga:
 			case snd_soc_dapm_pga:
+			case snd_soc_dapm_out_drv:
 				wname_in_long_name = true;
 				wname_in_long_name = true;
 				kcname_in_long_name = true;
 				kcname_in_long_name = true;
 				break;
 				break;
@@ -3049,6 +3050,9 @@ int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
 	}
 	}
 	mutex_unlock(&card->dapm_mutex);
 	mutex_unlock(&card->dapm_mutex);
 
 
+	if (ret)
+		return ret;
+
 	if (invert)
 	if (invert)
 		ucontrol->value.integer.value[0] = max - val;
 		ucontrol->value.integer.value[0] = max - val;
 	else
 	else
@@ -3200,7 +3204,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
 	if (e->shift_l != e->shift_r) {
 	if (e->shift_l != e->shift_r) {
 		if (item[1] > e->items)
 		if (item[1] > e->items)
 			return -EINVAL;
 			return -EINVAL;
-		val |= snd_soc_enum_item_to_val(e, item[1]) << e->shift_l;
+		val |= snd_soc_enum_item_to_val(e, item[1]) << e->shift_r;
 		mask |= e->mask << e->shift_r;
 		mask |= e->mask << e->shift_r;
 	}
 	}