Quoting Karthikeyan Ramasubramanian (2018-04-09 12:38:41) > Add early console support in Qualcomm Technologies Inc., GENI based > UART controller. > > Signed-off-by: Karthikeyan Ramasubramanian <kramasub@xxxxxxxxxxxxxx> > Signed-off-by: Girish Mahadevan <girishm@xxxxxxxxxxxxxx> > --- > drivers/tty/serial/qcom_geni_serial.c | 85 ++++++++++++++++++++++++++++++++++- > 1 file changed, 83 insertions(+), 2 deletions(-) This patch needs to update the earlycon section of Documentation/admin-guide/kernel-parameters.txt as well. > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index e40d4a4..2ce83a57 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -196,8 +196,18 @@ static bool qcom_geni_serial_poll_bit(struct uart_port *uport, > timeout_us = ((fifo_bits * USEC_PER_SEC) / baud) + 500; > } > > - return !readl_poll_timeout_atomic(uport->membase + offset, reg, > - (bool)(reg & field) == set, 10, timeout_us); > + /* > + * Use custom implementation instead of readl_poll_atomic since ktimer > + * is not ready at the time of early console. > + */ > + while (timeout_us) { > + reg = readl_relaxed(uport->membase + offset); > + if ((bool)(reg & field) == set) Is the cast needed? > + return true; > + udelay(10); > + timeout_us -= 10; > + } > + return false; > } > > static void qcom_geni_serial_setup_tx(struct uart_port *uport, u32 xmit_size) > @@ -944,6 +954,77 @@ static int __init qcom_geni_console_setup(struct console *co, char *options) > return uart_set_options(uport, co, baud, parity, bits, flow); > } [...] > + writel_relaxed(stop_bit_len, uport->membase + SE_UART_TX_STOP_BIT_LEN); > + writel_relaxed(ser_clk_cfg, uport->membase + GENI_SER_M_CLK_CFG); > + writel_relaxed(ser_clk_cfg, uport->membase + GENI_SER_S_CLK_CFG); > + > + dev->con->write = qcom_geni_serial_earlycon_write; > + dev->con->setup = NULL; > + return 0; > +} > +OF_EARLYCON_DECLARE(qcom_serial, "qcom,geni-debug-uart", Maybe geni_serial instead? Or qcom_geni? earlycon sort of implies serial already so it seems redundant. And yes I messed that up for msm_serial but it doesn't mean we should repeat the same mistake again. -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html