You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/05/05 08:30:17 UTC

[incubator-nuttx] 04/04: xtensa/esp32: Applies REG_MASK to extract a field value

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 873293cc3f3ca64df2a37391abca169ff5330d92
Author: Sara Souza <sa...@espressif.com>
AuthorDate: Wed Apr 28 08:48:51 2021 -0300

    xtensa/esp32: Applies REG_MASK to extract a field value
---
 arch/xtensa/src/esp32/esp32_serial.c | 33 ++++++++++++---------------------
 1 file changed, 12 insertions(+), 21 deletions(-)

diff --git a/arch/xtensa/src/esp32/esp32_serial.c b/arch/xtensa/src/esp32/esp32_serial.c
index e6cc481..686610f 100644
--- a/arch/xtensa/src/esp32/esp32_serial.c
+++ b/arch/xtensa/src/esp32/esp32_serial.c
@@ -443,13 +443,10 @@ static uint32_t esp32_get_rx_fifo_len(struct esp32_dev_s *priv)
   uint32_t len;
 
   mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id));
-  rd_address        = ((mem_rx_status_reg & UART_RD_ADDRESS_M)
-                       >> UART_RD_ADDRESS_S);
-  wr_address        = ((mem_rx_status_reg & UART_WR_ADDRESS_M)
-                       >> UART_WR_ADDRESS_S);
-  rx_status_reg     = getreg32(UART_STATUS_REG(priv->config->id));
-  fifo_cnt          = ((rx_status_reg & UART_RXFIFO_CNT_M)
-                       >> UART_RXFIFO_CNT_S);
+  rd_address = REG_MASK(mem_rx_status_reg, UART_RD_ADDRESS);
+  wr_address = REG_MASK(mem_rx_status_reg, UART_WR_ADDRESS);
+  rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id));
+  fifo_cnt = REG_MASK(rx_status_reg, UART_RXFIFO_CNT);
 
   if (wr_address > rd_address)
     {
@@ -611,8 +608,8 @@ static int esp32_setup(struct uart_dev_s *dev)
   /* Configure and enable the UART */
 
   putreg32(conf0, UART_CONF0_REG(priv->config->id));
-  regval = (UART_RX_FIFO_FULL_THRHD << UART_RXFIFO_FULL_THRHD_S) |
-           (UART_RX_TOUT_THRHD_VALUE << UART_RX_TOUT_THRHD_S) |
+  regval = VALUE_TO_FIELD(UART_RX_FIFO_FULL_THRHD, UART_RXFIFO_FULL_THRHD) |
+           VALUE_TO_FIELD(UART_RX_TOUT_THRHD_VALUE, UART_RX_TOUT_THRHD) |
            UART_RX_TOUT_EN;
   putreg32(regval, UART_CONF1_REG(priv->config->id));
 #endif
@@ -827,7 +824,7 @@ static int esp32_interrupt(int cpuint, void *context, FAR void *arg)
       if ((enabled & (UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA))
           != 0)
         {
-          nfifo = (status & UART_TXFIFO_CNT_M) >> UART_TXFIFO_CNT_S;
+          nfifo = REG_MASK(status, UART_TXFIFO_CNT);
           if (nfifo < 0x7f)
             {
               /* The TXFIFO is not full ... process outgoing bytes */
@@ -1066,7 +1063,7 @@ static int  esp32_receive(struct uart_dev_s *dev, unsigned int *status)
 
   rx_fifo = getreg32(DR_UART_FIFO_REG(priv->config->id));
 
-  return (int)(rx_fifo & UART_RXFIFO_RD_BYTE_M);
+  return (int)REG_MASK(rx_fifo, UART_RXFIFO_RD_BYTE);
 }
 
 /****************************************************************************
@@ -1192,19 +1189,13 @@ static void esp32_txint(struct uart_dev_s *dev, bool enable)
 static bool esp32_txready(struct uart_dev_s *dev)
 {
   uint32_t txcnt;
+  uint32_t reg;
   struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv;
 
-  txcnt = (getreg32(UART_STATUS_REG(priv->config->id)) >> UART_TXFIFO_CNT_S)
-           & UART_TXFIFO_CNT_V;
+  reg = getreg32(UART_STATUS_REG(priv->config->id));
+  txcnt = REG_MASK(reg, UART_TXFIFO_CNT);
 
-  if (txcnt < (UART_TX_FIFO_SIZE -1))
-    {
-      return true;
-    }
-  else
-    {
-      return false;
-    }
+  return (txcnt < (UART_TX_FIFO_SIZE - 1));
 }
 
 /****************************************************************************