diff --git a/sound/soc/qcom/qdsp6/q6apm-voice-proto.c b/sound/soc/qcom/qdsp6/q6apm-voice-proto.c index e3c6587dde93..744d9fc0c80b 100644 --- a/sound/soc/qcom/qdsp6/q6apm-voice-proto.c +++ b/sound/soc/qcom/qdsp6/q6apm-voice-proto.c @@ -68,7 +68,7 @@ static int q6vp_play(const char *name) struct device *dev = q6vp_apm->dev; size_t off; uint32_t i, num, opcode, size; - int ret; + int ret, err = 0; ret = request_firmware(&fw, name, dev); if (ret) { @@ -104,15 +104,16 @@ static int q6vp_play(const char *name) ret = q6vp_send(opcode, fw->data + off, size); dev_info(dev, "voice-proto: %s[%u] opcode 0x%08x size %u -> %d\n", name, i, opcode, size, ret); + /* keep going on DSP rejections; each result is logged */ if (ret) - goto out; + err = ret; off += ALIGN(size, 4); } out: release_firmware(fw); - return ret; + return ret ? ret : err; } static ssize_t q6vp_play_write(struct file *file, const char __user *ubuf,