Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41a30cb9 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 3ab0300a 0d06d90a
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -3553,14 +3553,20 @@ 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 */
	/* 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 */
		/* 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,7 +3579,10 @@ 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 */
		/* 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,10 +3594,12 @@ 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
	 */
	if (port->wakeup_byte && port->wakeup_irq)
		msm_geni_serial_allow_rx(port);

	ret = se_geni_resources_off(&port->serial_rsc);