-/* Multi serial device functions */
-#define DECLARE_PSSERIAL_FUNCTIONS(port) \
- int uart_zynq##port##_init(void) \
- { return uart_zynq_serial_init(port); } \
- void uart_zynq##port##_setbrg(void) \
- { return uart_zynq_serial_setbrg(port); } \
- int uart_zynq##port##_getc(void) \
- { return uart_zynq_serial_getc(port); } \
- int uart_zynq##port##_tstc(void) \
- { return uart_zynq_serial_tstc(port); } \
- void uart_zynq##port##_putc(const char c) \
- { uart_zynq_serial_putc(c, port); } \
- void uart_zynq##port##_puts(const char *s) \
- { uart_zynq_serial_puts(s, port); }
-
-/* Serial device descriptor */
-#define INIT_PSSERIAL_STRUCTURE(port, __name) { \
- .name = __name, \
- .start = uart_zynq##port##_init, \
- .stop = NULL, \
- .setbrg = uart_zynq##port##_setbrg, \
- .getc = uart_zynq##port##_getc, \
- .tstc = uart_zynq##port##_tstc, \
- .putc = uart_zynq##port##_putc, \
- .puts = uart_zynq##port##_puts, \
+static int zynq_serial_pending(struct udevice *dev, bool input)
+{
+ struct zynq_uart_priv *priv = dev_get_priv(dev);
+ struct uart_zynq *regs = priv->regs;
+
+ if (input)
+ return !(readl(®s->channel_sts) & ZYNQ_UART_SR_RXEMPTY);
+ else
+ return !!(readl(®s->channel_sts) & ZYNQ_UART_SR_TXACTIVE);