Loading Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ Required properties: * Headphones * Speakers * Mic Jack * Int Mic - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's connected to the CODEC. Loading sound/soc/codecs/rt5670.h +3 −0 Original line number Diff line number Diff line Loading @@ -1950,17 +1950,20 @@ enum { }; enum { RT5670_DMIC1_DISABLED, RT5670_DMIC_DATA_GPIO6, RT5670_DMIC_DATA_IN2P, RT5670_DMIC_DATA_GPIO7, }; enum { RT5670_DMIC2_DISABLED, RT5670_DMIC_DATA_GPIO8, RT5670_DMIC_DATA_IN3N, }; enum { RT5670_DMIC3_DISABLED, RT5670_DMIC_DATA_GPIO9, RT5670_DMIC_DATA_GPIO10, RT5670_DMIC_DATA_GPIO5, Loading sound/soc/codecs/rt5677.c +30 −14 Original line number Diff line number Diff line Loading @@ -718,11 +718,24 @@ static int rt5677_set_dsp_vad(struct snd_soc_codec *codec, bool on) RT5677_LDO1_SEL_MASK, 0x0); regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, RT5677_PWR_LDO1, RT5677_PWR_LDO1); switch (rt5677->type) { case RT5677: regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, RT5677_MCLK_SRC_MASK, RT5677_MCLK2_SRC); regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, RT5677_PLL2_PR_SRC_MASK | RT5677_DSP_CLK_SRC_MASK, RT5677_PLL2_PR_SRC_MCLK2 | RT5677_DSP_CLK_SRC_BYPASS); RT5677_PLL2_PR_SRC_MASK | RT5677_DSP_CLK_SRC_MASK, RT5677_PLL2_PR_SRC_MCLK2 | RT5677_DSP_CLK_SRC_BYPASS); break; case RT5676: regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, RT5677_DSP_CLK_SRC_MASK, RT5677_DSP_CLK_SRC_BYPASS); break; default: break; } regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x07ff); regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x07fd); rt5677_set_dsp_mode(codec, true); Loading Loading @@ -4500,10 +4513,10 @@ static int rt5677_suspend(struct snd_soc_codec *codec) if (!rt5677->dsp_vad_en) { regcache_cache_only(rt5677->regmap, true); regcache_mark_dirty(rt5677->regmap); } if (gpio_is_valid(rt5677->pow_ldo2)) gpio_set_value_cansleep(rt5677->pow_ldo2, 0); } return 0; } Loading @@ -4512,12 +4525,12 @@ static int rt5677_resume(struct snd_soc_codec *codec) { struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); if (!rt5677->dsp_vad_en) { if (gpio_is_valid(rt5677->pow_ldo2)) { gpio_set_value_cansleep(rt5677->pow_ldo2, 1); msleep(10); } if (!rt5677->dsp_vad_en) { regcache_cache_only(rt5677->regmap, false); regcache_sync(rt5677->regmap); } Loading Loading @@ -4733,7 +4746,8 @@ static const struct regmap_config rt5677_regmap = { }; static const struct i2c_device_id rt5677_i2c_id[] = { { "rt5677", 0 }, { "rt5677", RT5677 }, { "rt5676", RT5676 }, { } }; MODULE_DEVICE_TABLE(i2c, rt5677_i2c_id); Loading Loading @@ -4850,6 +4864,8 @@ static int rt5677_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, rt5677); rt5677->type = id->driver_data; if (pdata) rt5677->pdata = *pdata; Loading sound/soc/codecs/rt5677.h +6 −0 Original line number Diff line number Diff line Loading @@ -1665,6 +1665,11 @@ enum { RT5677_IRQ_JD3, }; enum rt5677_type { RT5677, RT5676, }; struct rt5677_priv { struct snd_soc_codec *codec; struct rt5677_platform_data pdata; Loading @@ -1681,6 +1686,7 @@ struct rt5677_priv { int pll_in; int pll_out; int pow_ldo2; /* POW_LDO2 pin */ enum rt5677_type type; #ifdef CONFIG_GPIOLIB struct gpio_chip gpio_chip; #endif Loading sound/soc/codecs/wm_adsp.c +3 −10 Original line number Diff line number Diff line Loading @@ -420,10 +420,9 @@ static int wm_coeff_put(struct snd_kcontrol *kcontrol, memcpy(ctl->cache, p, ctl->len); if (!ctl->enabled) { ctl->set = 1; if (!ctl->enabled) return 0; } return wm_coeff_write_control(kcontrol, p, ctl->len); } Loading Loading @@ -1185,7 +1184,6 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) int ret, pos, blocks, type, offset, reg; char *file; struct wm_adsp_buf *buf; int tmp; file = kzalloc(PAGE_SIZE, GFP_KERNEL); if (file == NULL) Loading Loading @@ -1335,12 +1333,7 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) } } tmp = le32_to_cpu(blk->len) % 4; if (tmp) pos += le32_to_cpu(blk->len) + (4 - tmp) + sizeof(*blk); else pos += le32_to_cpu(blk->len) + sizeof(*blk); pos += (le32_to_cpu(blk->len) + sizeof(*blk) + 3) & ~0x03; blocks++; } Loading Loading
Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ Required properties: * Headphones * Speakers * Mic Jack * Int Mic - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's connected to the CODEC. Loading
sound/soc/codecs/rt5670.h +3 −0 Original line number Diff line number Diff line Loading @@ -1950,17 +1950,20 @@ enum { }; enum { RT5670_DMIC1_DISABLED, RT5670_DMIC_DATA_GPIO6, RT5670_DMIC_DATA_IN2P, RT5670_DMIC_DATA_GPIO7, }; enum { RT5670_DMIC2_DISABLED, RT5670_DMIC_DATA_GPIO8, RT5670_DMIC_DATA_IN3N, }; enum { RT5670_DMIC3_DISABLED, RT5670_DMIC_DATA_GPIO9, RT5670_DMIC_DATA_GPIO10, RT5670_DMIC_DATA_GPIO5, Loading
sound/soc/codecs/rt5677.c +30 −14 Original line number Diff line number Diff line Loading @@ -718,11 +718,24 @@ static int rt5677_set_dsp_vad(struct snd_soc_codec *codec, bool on) RT5677_LDO1_SEL_MASK, 0x0); regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG2, RT5677_PWR_LDO1, RT5677_PWR_LDO1); switch (rt5677->type) { case RT5677: regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK1, RT5677_MCLK_SRC_MASK, RT5677_MCLK2_SRC); regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, RT5677_PLL2_PR_SRC_MASK | RT5677_DSP_CLK_SRC_MASK, RT5677_PLL2_PR_SRC_MCLK2 | RT5677_DSP_CLK_SRC_BYPASS); RT5677_PLL2_PR_SRC_MASK | RT5677_DSP_CLK_SRC_MASK, RT5677_PLL2_PR_SRC_MCLK2 | RT5677_DSP_CLK_SRC_BYPASS); break; case RT5676: regmap_update_bits(rt5677->regmap, RT5677_GLB_CLK2, RT5677_DSP_CLK_SRC_MASK, RT5677_DSP_CLK_SRC_BYPASS); break; default: break; } regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x07ff); regmap_write(rt5677->regmap, RT5677_PWR_DSP1, 0x07fd); rt5677_set_dsp_mode(codec, true); Loading Loading @@ -4500,10 +4513,10 @@ static int rt5677_suspend(struct snd_soc_codec *codec) if (!rt5677->dsp_vad_en) { regcache_cache_only(rt5677->regmap, true); regcache_mark_dirty(rt5677->regmap); } if (gpio_is_valid(rt5677->pow_ldo2)) gpio_set_value_cansleep(rt5677->pow_ldo2, 0); } return 0; } Loading @@ -4512,12 +4525,12 @@ static int rt5677_resume(struct snd_soc_codec *codec) { struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec); if (!rt5677->dsp_vad_en) { if (gpio_is_valid(rt5677->pow_ldo2)) { gpio_set_value_cansleep(rt5677->pow_ldo2, 1); msleep(10); } if (!rt5677->dsp_vad_en) { regcache_cache_only(rt5677->regmap, false); regcache_sync(rt5677->regmap); } Loading Loading @@ -4733,7 +4746,8 @@ static const struct regmap_config rt5677_regmap = { }; static const struct i2c_device_id rt5677_i2c_id[] = { { "rt5677", 0 }, { "rt5677", RT5677 }, { "rt5676", RT5676 }, { } }; MODULE_DEVICE_TABLE(i2c, rt5677_i2c_id); Loading Loading @@ -4850,6 +4864,8 @@ static int rt5677_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, rt5677); rt5677->type = id->driver_data; if (pdata) rt5677->pdata = *pdata; Loading
sound/soc/codecs/rt5677.h +6 −0 Original line number Diff line number Diff line Loading @@ -1665,6 +1665,11 @@ enum { RT5677_IRQ_JD3, }; enum rt5677_type { RT5677, RT5676, }; struct rt5677_priv { struct snd_soc_codec *codec; struct rt5677_platform_data pdata; Loading @@ -1681,6 +1686,7 @@ struct rt5677_priv { int pll_in; int pll_out; int pow_ldo2; /* POW_LDO2 pin */ enum rt5677_type type; #ifdef CONFIG_GPIOLIB struct gpio_chip gpio_chip; #endif Loading
sound/soc/codecs/wm_adsp.c +3 −10 Original line number Diff line number Diff line Loading @@ -420,10 +420,9 @@ static int wm_coeff_put(struct snd_kcontrol *kcontrol, memcpy(ctl->cache, p, ctl->len); if (!ctl->enabled) { ctl->set = 1; if (!ctl->enabled) return 0; } return wm_coeff_write_control(kcontrol, p, ctl->len); } Loading Loading @@ -1185,7 +1184,6 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) int ret, pos, blocks, type, offset, reg; char *file; struct wm_adsp_buf *buf; int tmp; file = kzalloc(PAGE_SIZE, GFP_KERNEL); if (file == NULL) Loading Loading @@ -1335,12 +1333,7 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) } } tmp = le32_to_cpu(blk->len) % 4; if (tmp) pos += le32_to_cpu(blk->len) + (4 - tmp) + sizeof(*blk); else pos += le32_to_cpu(blk->len) + sizeof(*blk); pos += (le32_to_cpu(blk->len) + sizeof(*blk) + 3) & ~0x03; blocks++; } Loading