From 198b5b78114569a138879f104203444eceb1addf Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Wed, 25 Oct 2023 10:50:43 +0900 Subject: [PATCH] Revert "serial: bcm283x_mu: Support RX buffer" This reverts commit b84e5e2a9016f05470b2c9f1bb55617b065d5387. Change-Id: I6d590f4cd0ff23986952743fbc85168b7f847aad Signed-off-by: Jaehoon Chung --- drivers/serial/serial_bcm283x_mu.c | 58 ++++-------------------------- 1 file changed, 6 insertions(+), 52 deletions(-) diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c index 93f3657543..7585f790d2 100644 --- a/drivers/serial/serial_bcm283x_mu.c +++ b/drivers/serial/serial_bcm283x_mu.c @@ -47,14 +47,8 @@ struct bcm283x_mu_regs { #define BCM283X_MU_LSR_TX_EMPTY BIT(5) #define BCM283X_MU_LSR_RX_READY BIT(0) -#define BCM283X_MU_RX_BUFFER_LEN 1024 -#define BCM283X_MU_RX_BUFFER_INIT_POS -1 - struct bcm283x_mu_priv { struct bcm283x_mu_regs *regs; - int rx_buffer[BCM283X_MU_RX_BUFFER_LEN]; - int rx_buffer_in_pos; - int rx_buffer_out_pos; }; static int bcm283x_mu_serial_getc(struct udevice *dev); @@ -81,55 +75,19 @@ out: return 0; } -static inline int bcm283x_mu_rx_buffer_full(struct bcm283x_mu_priv *priv) -{ - return !!(priv->rx_buffer_in_pos == BCM283X_MU_RX_BUFFER_LEN - 1); -} - -static inline int bcm283x_mu_rx_buffer_empty(struct bcm283x_mu_priv *priv) -{ - return !!(priv->rx_buffer_out_pos == BCM283X_MU_RX_BUFFER_INIT_POS); -} - -static void bcm283x_mu_rx_buffer_put(struct bcm283x_mu_priv *priv, int data) -{ - if (bcm283x_mu_rx_buffer_empty(priv)) - priv->rx_buffer_out_pos++; - - priv->rx_buffer[++priv->rx_buffer_in_pos] = data; -} - -static int bcm283x_mu_rx_buffer_get(struct bcm283x_mu_priv *priv) -{ - int data = priv->rx_buffer[priv->rx_buffer_out_pos]; - - if (priv->rx_buffer_in_pos == priv->rx_buffer_out_pos) { - priv->rx_buffer_in_pos = BCM283X_MU_RX_BUFFER_INIT_POS; - priv->rx_buffer_out_pos = BCM283X_MU_RX_BUFFER_INIT_POS; - } else { - priv->rx_buffer_out_pos++; - } - - return data; -} - static int bcm283x_mu_serial_getc(struct udevice *dev) { struct bcm283x_mu_priv *priv = dev_get_priv(dev); struct bcm283x_mu_regs *regs = priv->regs; - int max_count = 256; + u32 data; - while (readl(®s->lsr) & BCM283X_MU_LSR_RX_READY) { - if (bcm283x_mu_rx_buffer_full(priv) || --max_count == 0) - break; - - bcm283x_mu_rx_buffer_put(priv, readl(®s->io)); - } - - if (bcm283x_mu_rx_buffer_empty(priv)) + /* Wait until there is data in the FIFO */ + if (!(readl(®s->lsr) & BCM283X_MU_LSR_RX_READY)) return -EAGAIN; - return (int)bcm283x_mu_rx_buffer_get(priv); + data = readl(®s->io); + + return (int)data; } static int bcm283x_mu_serial_putc(struct udevice *dev, const char data) @@ -228,10 +186,6 @@ static int bcm283x_mu_serial_probe(struct udevice *dev) priv->regs = (struct bcm283x_mu_regs *)plat->base; - priv->rx_buffer_in_pos = BCM283X_MU_RX_BUFFER_INIT_POS; - priv->rx_buffer_out_pos = BCM283X_MU_RX_BUFFER_INIT_POS; - - return 0; } #endif -- 2.34.1