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:

committed by
V S Ganga VaraPrasad (VARA) Adabala

parent
fe951e3363
commit
a45c3be654
@@ -403,7 +403,11 @@ ssize_t audio_pkt_write(struct file *file, const char __user *buf,
|
|||||||
mutex_unlock(&audpkt_dev->lock);
|
mutex_unlock(&audpkt_dev->lock);
|
||||||
goto free_kbuf;
|
goto free_kbuf;
|
||||||
}
|
}
|
||||||
|
if (gpr_get_q6_state() != GPR_SUBSYS_DOWN)
|
||||||
ret = gpr_send_pkt(ap_priv->adev, (struct gpr_pkt *) kbuf);
|
ret = gpr_send_pkt(ap_priv->adev, (struct gpr_pkt *) kbuf);
|
||||||
|
else
|
||||||
|
AUDIO_PKT_ERR("q6 is down\n");
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
AUDIO_PKT_ERR("APR Send Packet Failed ret -%d\n", ret);
|
AUDIO_PKT_ERR("APR Send Packet Failed ret -%d\n", ret);
|
||||||
if (ret == -ECONNRESET)
|
if (ret == -ECONNRESET)
|
||||||
|
@@ -95,6 +95,12 @@ int gpr_send_pkt(struct gpr_device *adev, struct gpr_pkt *pkt)
|
|||||||
uint32_t pkt_size;
|
uint32_t pkt_size;
|
||||||
int ret;
|
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)
|
if(!adev)
|
||||||
{
|
{
|
||||||
pr_err_ratelimited("%s: enter pointer adev[%pK] \n", __func__, 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) &&
|
if ((adev->domain_id == GPR_DOMAIN_ADSP) &&
|
||||||
(gpr_get_q6_state() != GPR_SUBSYS_LOADED)) {
|
(gpr_get_q6_state() != GPR_SUBSYS_LOADED)) {
|
||||||
dev_err_ratelimited(gpr->dev, "%s: domain_id[%d], Still Dsp is not Up\n",
|
dev_err_ratelimited(gpr->dev, "%s: Still Dsp is not Up\n", __func__);
|
||||||
__func__, adev->domain_id);
|
|
||||||
return -ENETRESET;
|
return -ENETRESET;
|
||||||
} else if ((adev->domain_id == GPR_DOMAIN_MODEM) &&
|
} else if ((adev->domain_id == GPR_DOMAIN_MODEM) &&
|
||||||
(gpr_get_modem_state() == GPR_SUBSYS_DOWN)) {
|
(gpr_get_modem_state() == GPR_SUBSYS_DOWN)) {
|
||||||
dev_err_ratelimited(gpr->dev, "%s: domain_id[%d], Still Modem is not Up\n",
|
dev_err_ratelimited(gpr->dev, "%s: Still Modem is not Up\n",
|
||||||
__func__, adev->domain_id );
|
__func__);
|
||||||
return -ENETRESET;
|
return -ENETRESET;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +143,6 @@ int gpr_send_pkt(struct gpr_device *adev, struct gpr_pkt *pkt)
|
|||||||
adev->svc_id, __func__, pkt_size);
|
adev->svc_id, __func__, pkt_size);
|
||||||
ret = rpmsg_trysend(gpr->ch, pkt, pkt_size);
|
ret = rpmsg_trysend(gpr->ch, pkt, pkt_size);
|
||||||
spin_unlock_irqrestore(&adev->lock, flags);
|
spin_unlock_irqrestore(&adev->lock, flags);
|
||||||
|
|
||||||
return ret ? ret : pkt_size;
|
return ret ? ret : pkt_size;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(gpr_send_pkt);
|
EXPORT_SYMBOL_GPL(gpr_send_pkt);
|
||||||
|
Reference in New Issue
Block a user