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

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

Merge "serial: msm_geni_serial: Enhance IPC debug logs"

parents a4e273e0 9a47b0f8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1597,8 +1597,8 @@ void geni_se_dump_dbg_regs(struct se_geni_rsc *rsc, void __iomem *base,
	se_dma_tx_len_in = geni_read_reg(base, SE_DMA_TX_LEN_IN);

	GENI_SE_DBG(ipc, false, NULL,
	"%s: m_cmd0:0x%x, m_irq_status:0x%x, geni_status:0x%x, geni_ios:0x%x\n",
	__func__, m_cmd0, m_irq_status, geni_status, geni_ios);
	"%s: m_cmd0:0x%x, m_irq_status:0x%x, s_irq_status:0x%x, geni_status:0x%x, geni_ios:0x%x\n",
	__func__, m_cmd0, m_irq_status, s_irq_status, geni_status, geni_ios);
	GENI_SE_DBG(ipc, false, NULL,
	"dma_rx_irq:0x%x, dma_tx_irq:0x%x, rx_fifo_sts:0x%x, tx_fifo_sts:0x%x\n"
	, dma_rx_irq, dma_tx_irq, rx_fifo_status, tx_fifo_status);
+18 −26
Original line number Diff line number Diff line
@@ -518,6 +518,7 @@ static int vote_clock_on(struct uart_port *uport)
	struct msm_geni_serial_port *port = GET_DEV_PORT(uport);
	int usage_count;
	int ret = 0;
	u32 geni_ios;

	ret = msm_geni_serial_power_on(uport);
	if (ret) {
@@ -526,10 +527,11 @@ static int vote_clock_on(struct uart_port *uport)
	}
	port->ioctl_count++;
	usage_count = atomic_read(&uport->dev->power.usage_count);
	geni_ios = geni_read_reg_nolog(uport->membase, SE_GENI_IOS);
	IPC_LOG_MSG(port->ipc_log_pwr,
		"%s :%s ioctl:%d usage_count:%d edge-Count:%d\n",
		"%s :%s ioctl:%d usage_count:%d edge-Count:%d geni_ios:0x%x\n",
		__func__, current->comm, port->ioctl_count,
		usage_count, port->edge_count);
		usage_count, port->edge_count, geni_ios);
	return 0;
}

@@ -1394,26 +1396,6 @@ static void msm_geni_serial_start_rx(struct uart_port *uport)
	start_rx_sequencer(&port->uport);
}


static void msm_geni_serial_rx_fsm_rst(struct uart_port *uport)
{
	unsigned int rx_irq_en;
	int done = 0;
	int tries = 0;

	rx_irq_en = geni_read_reg_nolog(uport->membase, SE_DMA_RX_IRQ_EN);
	geni_write_reg_nolog(0, uport->membase, SE_DMA_RX_IRQ_EN_SET);
	geni_write_reg_nolog(1, uport->membase, SE_DMA_RX_FSM_RST);
	do {
		done = msm_geni_serial_poll_bit(uport, SE_DMA_RX_IRQ_STAT,
							RX_RESET_DONE, true);
		tries++;
	} while (!done && tries < 5);
	geni_write_reg_nolog(RX_DMA_DONE | RX_RESET_DONE, uport->membase,
						     SE_DMA_RX_IRQ_CLR);
	geni_write_reg_nolog(rx_irq_en, uport->membase, SE_DMA_RX_IRQ_EN_SET);
}

static void msm_geni_serial_set_manual_flow(bool enable,
					struct msm_geni_serial_port *port)
{
@@ -1461,7 +1443,7 @@ static void stop_rx_sequencer(struct uart_port *uport)
		IPC_LOG_MSG(port->ipc_log_misc,
			"%s: RX is Inactive, geni_sts: 0x%x\n",
						__func__, geni_status);
		goto exit_rx_seq;
		return;
	}

	port->s_cmd_done = false;
@@ -1519,15 +1501,25 @@ static void stop_rx_sequencer(struct uart_port *uport)
			IPC_LOG_MSG(port->console_log,
				"%s abort fail 0x%x\n",  __func__, geni_status);
		}

		if (port->xfer_mode == SE_DMA) {
			port->s_cmd_done = false;
			reinit_completion(&port->s_cmd_timeout);
			geni_write_reg_nolog(1, uport->membase,
						SE_DMA_RX_FSM_RST);

			timeout = geni_wait_for_cmd_done(uport,
							 is_irq_masked);
			if (timeout)
				IPC_LOG_MSG(port->ipc_log_misc,
				"%s: rx fsm reset failed\n", __func__);
		}
	}
	/* Enable the interrupts once the cancel operation is done. */
	msm_geni_serial_enable_interrupts(uport);
	port->s_cmd = false;

exit_rx_seq:
	if (port->xfer_mode == SE_DMA && port->rx_dma)
		msm_geni_serial_rx_fsm_rst(uport);

	geni_status = geni_read_reg_nolog(uport->membase, SE_GENI_STATUS);
	IPC_LOG_MSG(port->ipc_log_misc, "%s: End 0x%x\n",
		    __func__, geni_status);