Loading sound/soc/codecs/wm_adsp.c +20 −7 Original line number Original line Diff line number Diff line Loading @@ -396,11 +396,12 @@ static int wm_coeff_write_control(struct snd_kcontrol *kcontrol, ret = regmap_raw_write(adsp->regmap, reg, scratch, ret = regmap_raw_write(adsp->regmap, reg, scratch, ctl->len); ctl->len); if (ret) { if (ret) { adsp_err(adsp, "Failed to write %zu bytes to %x\n", adsp_err(adsp, "Failed to write %zu bytes to %x: %d\n", ctl->len, reg); ctl->len, reg, ret); kfree(scratch); kfree(scratch); return ret; return ret; } } adsp_dbg(adsp, "Wrote %zu bytes to %x\n", ctl->len, reg); kfree(scratch); kfree(scratch); Loading Loading @@ -450,11 +451,12 @@ static int wm_coeff_read_control(struct snd_kcontrol *kcontrol, ret = regmap_raw_read(adsp->regmap, reg, scratch, ctl->len); ret = regmap_raw_read(adsp->regmap, reg, scratch, ctl->len); if (ret) { if (ret) { adsp_err(adsp, "Failed to read %zu bytes from %x\n", adsp_err(adsp, "Failed to read %zu bytes from %x: %d\n", ctl->len, reg); ctl->len, reg, ret); kfree(scratch); kfree(scratch); return ret; return ret; } } adsp_dbg(adsp, "Read %zu bytes from %x\n", ctl->len, reg); memcpy(buf, scratch, ctl->len); memcpy(buf, scratch, ctl->len); kfree(scratch); kfree(scratch); Loading Loading @@ -568,6 +570,7 @@ static int wm_adsp_load(struct wm_adsp *dsp) file, header->ver); file, header->ver); goto out_fw; goto out_fw; } } adsp_info(dsp, "Firmware version: %d\n", header->ver); if (header->core != dsp->type) { if (header->core != dsp->type) { adsp_err(dsp, "%s: invalid core %d != %d\n", adsp_err(dsp, "%s: invalid core %d != %d\n", Loading Loading @@ -689,7 +692,8 @@ static int wm_adsp_load(struct wm_adsp *dsp) &buf_list); &buf_list); if (!buf) { if (!buf) { adsp_err(dsp, "Out of memory\n"); adsp_err(dsp, "Out of memory\n"); return -ENOMEM; ret = -ENOMEM; goto out_fw; } } ret = regmap_raw_write_async(regmap, reg, buf->buf, ret = regmap_raw_write_async(regmap, reg, buf->buf, Loading Loading @@ -1313,8 +1317,8 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) le32_to_cpu(blk->len)); le32_to_cpu(blk->len)); if (ret != 0) { if (ret != 0) { adsp_err(dsp, adsp_err(dsp, "%s.%d: Failed to write to %x in %s\n", "%s.%d: Failed to write to %x in %s: %d\n", file, blocks, reg, region_name); file, blocks, reg, region_name, ret); } } } } Loading Loading @@ -1358,6 +1362,7 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, struct snd_soc_codec *codec = w->codec; struct snd_soc_codec *codec = w->codec; struct wm_adsp *dsps = snd_soc_codec_get_drvdata(codec); struct wm_adsp *dsps = snd_soc_codec_get_drvdata(codec); struct wm_adsp *dsp = &dsps[w->shift]; struct wm_adsp *dsp = &dsps[w->shift]; struct wm_adsp_alg_region *alg_region; struct wm_coeff_ctl *ctl; struct wm_coeff_ctl *ctl; int ret; int ret; int val; int val; Loading Loading @@ -1435,6 +1440,14 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, list_for_each_entry(ctl, &dsp->ctl_list, list) list_for_each_entry(ctl, &dsp->ctl_list, list) ctl->enabled = 0; ctl->enabled = 0; while (!list_empty(&dsp->alg_regions)) { alg_region = list_first_entry(&dsp->alg_regions, struct wm_adsp_alg_region, list); list_del(&alg_region->list); kfree(alg_region); } break; break; default: default: Loading Loading
sound/soc/codecs/wm_adsp.c +20 −7 Original line number Original line Diff line number Diff line Loading @@ -396,11 +396,12 @@ static int wm_coeff_write_control(struct snd_kcontrol *kcontrol, ret = regmap_raw_write(adsp->regmap, reg, scratch, ret = regmap_raw_write(adsp->regmap, reg, scratch, ctl->len); ctl->len); if (ret) { if (ret) { adsp_err(adsp, "Failed to write %zu bytes to %x\n", adsp_err(adsp, "Failed to write %zu bytes to %x: %d\n", ctl->len, reg); ctl->len, reg, ret); kfree(scratch); kfree(scratch); return ret; return ret; } } adsp_dbg(adsp, "Wrote %zu bytes to %x\n", ctl->len, reg); kfree(scratch); kfree(scratch); Loading Loading @@ -450,11 +451,12 @@ static int wm_coeff_read_control(struct snd_kcontrol *kcontrol, ret = regmap_raw_read(adsp->regmap, reg, scratch, ctl->len); ret = regmap_raw_read(adsp->regmap, reg, scratch, ctl->len); if (ret) { if (ret) { adsp_err(adsp, "Failed to read %zu bytes from %x\n", adsp_err(adsp, "Failed to read %zu bytes from %x: %d\n", ctl->len, reg); ctl->len, reg, ret); kfree(scratch); kfree(scratch); return ret; return ret; } } adsp_dbg(adsp, "Read %zu bytes from %x\n", ctl->len, reg); memcpy(buf, scratch, ctl->len); memcpy(buf, scratch, ctl->len); kfree(scratch); kfree(scratch); Loading Loading @@ -568,6 +570,7 @@ static int wm_adsp_load(struct wm_adsp *dsp) file, header->ver); file, header->ver); goto out_fw; goto out_fw; } } adsp_info(dsp, "Firmware version: %d\n", header->ver); if (header->core != dsp->type) { if (header->core != dsp->type) { adsp_err(dsp, "%s: invalid core %d != %d\n", adsp_err(dsp, "%s: invalid core %d != %d\n", Loading Loading @@ -689,7 +692,8 @@ static int wm_adsp_load(struct wm_adsp *dsp) &buf_list); &buf_list); if (!buf) { if (!buf) { adsp_err(dsp, "Out of memory\n"); adsp_err(dsp, "Out of memory\n"); return -ENOMEM; ret = -ENOMEM; goto out_fw; } } ret = regmap_raw_write_async(regmap, reg, buf->buf, ret = regmap_raw_write_async(regmap, reg, buf->buf, Loading Loading @@ -1313,8 +1317,8 @@ static int wm_adsp_load_coeff(struct wm_adsp *dsp) le32_to_cpu(blk->len)); le32_to_cpu(blk->len)); if (ret != 0) { if (ret != 0) { adsp_err(dsp, adsp_err(dsp, "%s.%d: Failed to write to %x in %s\n", "%s.%d: Failed to write to %x in %s: %d\n", file, blocks, reg, region_name); file, blocks, reg, region_name, ret); } } } } Loading Loading @@ -1358,6 +1362,7 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, struct snd_soc_codec *codec = w->codec; struct snd_soc_codec *codec = w->codec; struct wm_adsp *dsps = snd_soc_codec_get_drvdata(codec); struct wm_adsp *dsps = snd_soc_codec_get_drvdata(codec); struct wm_adsp *dsp = &dsps[w->shift]; struct wm_adsp *dsp = &dsps[w->shift]; struct wm_adsp_alg_region *alg_region; struct wm_coeff_ctl *ctl; struct wm_coeff_ctl *ctl; int ret; int ret; int val; int val; Loading Loading @@ -1435,6 +1440,14 @@ int wm_adsp1_event(struct snd_soc_dapm_widget *w, list_for_each_entry(ctl, &dsp->ctl_list, list) list_for_each_entry(ctl, &dsp->ctl_list, list) ctl->enabled = 0; ctl->enabled = 0; while (!list_empty(&dsp->alg_regions)) { alg_region = list_first_entry(&dsp->alg_regions, struct wm_adsp_alg_region, list); list_del(&alg_region->list); kfree(alg_region); } break; break; default: default: Loading