}
 }
 
+#ifdef CONFIG_CONSOLE_POLL
+static int sprd_poll_init(struct uart_port *port)
+{
+       if (port->state->pm_state != UART_PM_STATE_ON) {
+               sprd_pm(port, UART_PM_STATE_ON, 0);
+               port->state->pm_state = UART_PM_STATE_ON;
+       }
+
+       return 0;
+}
+
+static int sprd_poll_get_char(struct uart_port *port)
+{
+       while (!(serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK))
+               cpu_relax();
+
+       return serial_in(port, SPRD_RXD);
+}
+
+static void sprd_poll_put_char(struct uart_port *port, unsigned char ch)
+{
+       while (serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK)
+               cpu_relax();
+
+       serial_out(port, SPRD_TXD, ch);
+}
+#endif
+
 static const struct uart_ops serial_sprd_ops = {
        .tx_empty = sprd_tx_empty,
        .get_mctrl = sprd_get_mctrl,
        .config_port = sprd_config_port,
        .verify_port = sprd_verify_port,
        .pm = sprd_pm,
+#ifdef CONFIG_CONSOLE_POLL
+       .poll_init      = sprd_poll_init,
+       .poll_get_char  = sprd_poll_get_char,
+       .poll_put_char  = sprd_poll_put_char,
+#endif
 };
 
 #ifdef CONFIG_SERIAL_SPRD_CONSOLE