Skip to content

Commit

Permalink
ASoC: rt5514: Revert Hotword Model control
Browse files Browse the repository at this point in the history
This reverts commit eb33869 ("ASoC: rt5514: Guard Hotword Model bytes
loading") and commit d18420b ("ASoC: rt5514: expose Hotword Model
control")

It is discouraged to use SND_SOC_BYTES_TLV to load arbitrary bytes from
userspace to driver. Removing the 'Hotword Model' control until we have
a good way to verify the content of hotword model blobs.

Signed-off-by: Hsin-Yu Chao <hychao@chromium.org>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Hsin-Yu Chao authored and Mark Brown committed Sep 15, 2017
1 parent 659178f commit 3712851
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 66 deletions.
63 changes: 0 additions & 63 deletions sound/soc/codecs/rt5514.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,39 +338,6 @@ static int rt5514_dsp_voice_wake_up_put(struct snd_kcontrol *kcontrol,
fw = NULL;
}

if (rt5514->model_buf && rt5514->model_len) {
#if IS_ENABLED(CONFIG_SND_SOC_RT5514_SPI)
int ret;

ret = rt5514_spi_burst_write(0x4ff80000,
rt5514->model_buf,
((rt5514->model_len / 8) + 1) * 8);
if (ret) {
dev_err(codec->dev,
"Model load failed %d\n", ret);
return ret;
}
#else
dev_err(codec->dev,
"No SPI driver for loading firmware\n");
#endif
} else {
request_firmware(&fw, RT5514_FIRMWARE3,
codec->dev);
if (fw) {
#if IS_ENABLED(CONFIG_SND_SOC_RT5514_SPI)
rt5514_spi_burst_write(0x4ff80000,
fw->data,
((fw->size/8)+1)*8);
#else
dev_err(codec->dev,
"No SPI driver to load fw\n");
#endif
release_firmware(fw);
fw = NULL;
}
}

/* DSP run */
regmap_write(rt5514->i2c_regmap, 0x18002f00,
0x00055148);
Expand All @@ -385,34 +352,6 @@ static int rt5514_dsp_voice_wake_up_put(struct snd_kcontrol *kcontrol,
return 0;
}

static int rt5514_hotword_model_put(struct snd_kcontrol *kcontrol,
const unsigned int __user *bytes, unsigned int size)
{
struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
struct rt5514_priv *rt5514 = snd_soc_component_get_drvdata(component);
struct snd_soc_codec *codec = rt5514->codec;
int ret = 0;

if (rt5514->model_buf || rt5514->model_len < size) {
if (rt5514->model_buf)
devm_kfree(codec->dev, rt5514->model_buf);
rt5514->model_buf = devm_kmalloc(codec->dev, size, GFP_KERNEL);
if (!rt5514->model_buf) {
ret = -ENOMEM;
goto done;
}
}

/* Skips the TLV header. */
bytes += 2;

if (copy_from_user(rt5514->model_buf, bytes, size))
ret = -EFAULT;
done:
rt5514->model_len = (ret ? 0 : size);
return ret;
}

static const struct snd_kcontrol_new rt5514_snd_controls[] = {
SOC_DOUBLE_TLV("MIC Boost Volume", RT5514_ANA_CTRL_MICBST,
RT5514_SEL_BSTL_SFT, RT5514_SEL_BSTR_SFT, 8, 0, bst_tlv),
Expand All @@ -424,8 +363,6 @@ static const struct snd_kcontrol_new rt5514_snd_controls[] = {
adc_vol_tlv),
SOC_SINGLE_EXT("DSP Voice Wake Up", SND_SOC_NOPM, 0, 1, 0,
rt5514_dsp_voice_wake_up_get, rt5514_dsp_voice_wake_up_put),
SND_SOC_BYTES_TLV("Hotword Model", 0x8504,
NULL, rt5514_hotword_model_put),
};

/* ADC Mixer*/
Expand Down
3 changes: 0 additions & 3 deletions sound/soc/codecs/rt5514.h
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,6 @@

#define RT5514_FIRMWARE1 "rt5514_dsp_fw1.bin"
#define RT5514_FIRMWARE2 "rt5514_dsp_fw2.bin"
#define RT5514_FIRMWARE3 "rt5514_dsp_fw3.bin"

/* System Clock Source */
enum {
Expand All @@ -282,8 +281,6 @@ struct rt5514_priv {
int pll_in;
int pll_out;
int dsp_enabled;
u8 *model_buf;
unsigned int model_len;
};

#endif /* __RT5514_H__ */

0 comments on commit 3712851

Please sign in to comment.