Merge "serial: msm_geni_serial: Avoid manual RFR flow control for OBS"

This commit is contained in:
qctecmdr 2021-09-03 04:58:59 -07:00 • committed by Gerrit - the friendly Code Review server
commit 41a30cb9e4

View file

@ -3553,15 +3553,21 @@ static int msm_geni_serial_runtime_suspend(struct device *dev)
SE_GENI_STATUS);
IPC_LOG_MSG(port->ipc_log_pwr, "%s: Start\n", __func__);
/* Flow off from UART */
msm_geni_serial_set_manual_flow(false, port);
/* Flow off from UART only for In band sleep(IBS)
* Avoid manual RFR FLOW ON for Out of band sleep(OBS).
*/
if (port->wakeup_byte && port->wakeup_irq)
msm_geni_serial_set_manual_flow(false, port);
ret = wait_for_transfers_inflight(&port->uport);
if (ret) {
IPC_LOG_MSG(port->ipc_log_pwr,
"%s: wait_for_transfer_inflight return ret:%d\n",
__func__, ret);
/* Flow on from UART */
msm_geni_serial_allow_rx(port);
/* Flow on from UART only for In band sleep(IBS)
* Avoid manual RFR FLOW ON for Out of band sleep(OBS)
*/
if (port->wakeup_byte && port->wakeup_irq)
msm_geni_serial_allow_rx(port);
return -EBUSY;
}
/*
@ -3573,8 +3579,11 @@ static int msm_geni_serial_runtime_suspend(struct device *dev)
if (ret) {
IPC_LOG_MSG(port->ipc_log_pwr, "%s: stop rx failed %d\n",
__func__, ret);
/* Flow on from UART */
msm_geni_serial_allow_rx(port);
/* Flow on from UART only for In band sleep(IBS)
* Avoid manual RFR FLOW ON for Out of band sleep(OBS)
*/
if (port->wakeup_byte && port->wakeup_irq)
msm_geni_serial_allow_rx(port);
return -EBUSY;
}
@ -3585,11 +3594,13 @@ static int msm_geni_serial_runtime_suspend(struct device *dev)
disable_irq(port->uport.irq);
/*
* Flow on from UART
* Flow on from UART only for In band sleep(IBS)
* Avoid manual RFR FLOW ON for Out of band sleep(OBS).
* Above before stop_rx disabled the flow so we need to enable it here
* Make sure wake up interrupt is enabled before RFR is made low
*/
msm_geni_serial_allow_rx(port);
if (port->wakeup_byte && port->wakeup_irq)
msm_geni_serial_allow_rx(port);
ret = se_geni_resources_off(&port->serial_rsc);
if (ret) {