From: Mark Brown Date: Sun, 13 May 2012 12:32:54 +0000 (+0100) Subject: Merge tag 'v3.4-rc7' into for-3.5 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=dc2af52c0d6d00fd530e4a5e300834cdb1bb1c1c;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git Merge tag 'v3.4-rc7' into for-3.5 Linux 3.4-rc7 Conflicts): drivers/base/regmap/regmap.c (overlap with bug fixes) sound/soc/blackfin/bf5xx-ssm2602.c (overlap with bug fixes) --- dc2af52c0d6d00fd530e4a5e300834cdb1bb1c1c diff --cc drivers/base/regmap/regmap.c index 8a25006b2a4d,bb80853ff27a..de9f79650e8f --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@@ -863,10 -775,11 +863,12 @@@ int regmap_bulk_read(struct regmap *map map->format.parse_val(val + i); } else { for (i = 0; i < val_count; i++) { + unsigned int ival; - ret = regmap_read(map, reg + i, &ival); + ret = regmap_read(map, reg + (i * map->reg_stride), - val + (i * val_bytes)); ++ &ival); if (ret != 0) return ret; + memcpy(val + (i * val_bytes), &ival, val_bytes); } } diff --cc sound/soc/blackfin/bf5xx-ssm2602.c index 911edbab1345,b39ad356b92b..7dbeef1099b4 --- a/sound/soc/blackfin/bf5xx-ssm2602.c +++ b/sound/soc/blackfin/bf5xx-ssm2602.c @@@ -69,7 -98,8 +69,8 @@@ static struct snd_soc_dai_link bf5xx_ss .codec_dai_name = "ssm2602-hifi", .platform_name = "bfin-i2s-pcm-audio", .codec_name = "ssm2602.0-001b", - .ops = &bf5xx_ssm2602_ops, + .init = bf5xx_ssm2602_dai_init, + .dai_fmt = BF5XX_SSM2602_DAIFMT, }, { .name = "ssm2602", @@@ -78,7 -108,8 +79,8 @@@ .codec_dai_name = "ssm2602-hifi", .platform_name = "bfin-i2s-pcm-audio", .codec_name = "ssm2602.0-001b", - .ops = &bf5xx_ssm2602_ops, + .init = bf5xx_ssm2602_dai_init, + .dai_fmt = BF5XX_SSM2602_DAIFMT, }, }; diff --cc sound/soc/codecs/wm8994.c index 50003b337722,6c1fe3afd4b5..2f9870aa0cf1 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@@ -973,21 -981,43 +973,34 @@@ static bool wm8994_check_class_w_digita reg_r = snd_soc_read(codec, WM8994_DAC1_RIGHT_MIXER_ROUTING); if (reg_r != reg) { dev_vdbg(codec->dev, "Left and right DAC mixers different\n"); - enable = 0; + return false; } - if (enable) { - dev_dbg(codec->dev, "Class W enabled\n"); - snd_soc_update_bits(codec, WM8994_CLASS_W_1, - WM8994_CP_DYN_PWR | - WM8994_CP_DYN_SRC_SEL_MASK, - source | WM8994_CP_DYN_PWR); - wm8994->hubs.class_w = true; - - } else { - dev_dbg(codec->dev, "Class W disabled\n"); - snd_soc_update_bits(codec, WM8994_CLASS_W_1, - WM8994_CP_DYN_PWR, 0); - wm8994->hubs.class_w = false; - } + /* Set the source up */ + snd_soc_update_bits(codec, WM8994_CLASS_W_1, + WM8994_CP_DYN_SRC_SEL_MASK, source); + + return true; } - static int late_enable_ev(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *kcontrol, int event) + static int aif1clk_ev(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *kcontrol, int event) { struct snd_soc_codec *codec = w->codec; - struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + struct wm8994 *control = codec->control_data; + int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; + int dac; + int adc; + int val; + + switch (control->type) { + case WM8994: + case WM8958: + mask |= WM8994_AIF1DAC2L_ENA | WM8994_AIF1DAC2R_ENA; + break; + default: + break; + } switch (event) { case SND_SOC_DAPM_PRE_PMU: