dsp/ipc: check q6 state before calling gpr_snd_pkt

check q6 state before calling gpr_snd_pkt,in audio_prm
and audio-pkt.

Change-Id: I7590c60ff88e3fce0028d8df08af3a847474ea38
Signed-off-by: Ganapathiraju Sarath Varma <quic_ganavarm@quicinc.com>
This commit is contained in:
Ganapathiraju Sarath Varma
2023-08-08 10:12:55 +05:30
committed by V S Ganga VaraPrasad (VARA) Adabala
parent fe951e3363
commit a45c3be654
2 changed files with 15 additions and 7 deletions

View File

@@ -403,7 +403,11 @@ ssize_t audio_pkt_write(struct file *file, const char __user *buf,
mutex_unlock(&audpkt_dev->lock);
goto free_kbuf;
}
if (gpr_get_q6_state() != GPR_SUBSYS_DOWN)
ret = gpr_send_pkt(ap_priv->adev, (struct gpr_pkt *) kbuf);
else
AUDIO_PKT_ERR("q6 is down\n");
if (ret < 0) {
AUDIO_PKT_ERR("APR Send Packet Failed ret -%d\n", ret);
if (ret == -ECONNRESET)

View File

@@ -95,6 +95,12 @@ int gpr_send_pkt(struct gpr_device *adev, struct gpr_pkt *pkt)
uint32_t pkt_size;
int ret;
if (gpr_get_q6_state() == GPR_SUBSYS_DOWN)
{
pr_err_ratelimited("%s: q6 state is down adev[%pK]\n", __func__, adev);
return -EINVAL;
}
if(!adev)
{
pr_err_ratelimited("%s: enter pointer adev[%pK] \n", __func__, adev);
@@ -118,13 +124,12 @@ int gpr_send_pkt(struct gpr_device *adev, struct gpr_pkt *pkt)
if ((adev->domain_id == GPR_DOMAIN_ADSP) &&
(gpr_get_q6_state() != GPR_SUBSYS_LOADED)) {
dev_err_ratelimited(gpr->dev, "%s: domain_id[%d], Still Dsp is not Up\n",
__func__, adev->domain_id);
dev_err_ratelimited(gpr->dev, "%s: Still Dsp is not Up\n", __func__);
return -ENETRESET;
} else if ((adev->domain_id == GPR_DOMAIN_MODEM) &&
(gpr_get_modem_state() == GPR_SUBSYS_DOWN)) {
dev_err_ratelimited(gpr->dev, "%s: domain_id[%d], Still Modem is not Up\n",
__func__, adev->domain_id );
dev_err_ratelimited(gpr->dev, "%s: Still Modem is not Up\n",
__func__);
return -ENETRESET;
}
@@ -138,7 +143,6 @@ int gpr_send_pkt(struct gpr_device *adev, struct gpr_pkt *pkt)
adev->svc_id, __func__, pkt_size);
ret = rpmsg_trysend(gpr->ch, pkt, pkt_size);
spin_unlock_irqrestore(&adev->lock, flags);
return ret ? ret : pkt_size;
}
EXPORT_SYMBOL_GPL(gpr_send_pkt);