// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{ name: "uart",
  clock_primary: "clk_i",
  bus_device: "tlul",
  bus_host: "none",
  available_input_list: [
    { name: "rx", desc: "Serial receive bit" }
  ],
  available_output_list: [
    { name: "tx", desc: "Serial transmit bit" }
  ],
  interrupt_list: [
    { name: "tx_watermark"
      desc: "raised if the transmit FIFO is past the high-water mark."}
    { name: "rx_watermark"
      desc: "raised if the receive FIFO is past the high-water mark."}
    { name: "tx_overflow"
      desc: "raised if the transmit FIFO has overflowed."}
    { name: "rx_overflow"
      desc: "raised if the receive FIFO has overflowed."}
    { name: "rx_frame_err"
      desc: "raised if a framing error has been detected on receive."}
    { name: "rx_break_err"
      desc: "raised if break condition has been detected on receive."}
    { name: "rx_timeout"
      desc: '''
          raised if RX FIFO has characters remaining in the FIFO without being
	  retrieved for the programmed time period.
	  '''
    }
    { name: "rx_parity_err"
      desc: "raised if the receiver has detected a parity error."}
  ]
  regwidth: "32",
  registers: [
    { name: "CTRL",
      desc: "UART control register",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "0",
          name: "TX",
          desc: "TX enable"
        }
        { bits: "1",
          name: "RX",
          desc: "RX enable"
        }
        { bits: "2",
          name: "NF",
          desc: '''RX noise filter enable.
                If the noise filter is enabled, RX line goes through the 3-tap
                repetition code. It ignores single IP clock period noise.
          '''
        }
        { bits: "4",
          name: "SLPBK",
          desc: '''System loopback enable.

                If this bit is turned on, any outgoing bits to TX are received through RX.
                See Block Diagram. Note that the TX line goes 1 if System loopback is enabled.
                '''
        }
        { bits: "5",
          name: "LLPBK",
          desc: '''Line loopback enable.

                If this bit is turned on, incoming bits are forwarded to TX for testing purpose.
                See Block Diagram. Note that the internal design sees RX value as 1 always if line
                loopback is enabled.
                '''
        }
        { bits: "6",
          name: "PARITY_EN",
          desc: "If true, parity is enabled in both RX and TX directions."
        }
        { bits: "7",
          name: "PARITY_ODD",
          desc: "If PARITY_EN is true, this determines the type, 1 for odd parity, 0 for even."
        }
        { bits: "9:8",
          name: "RXBLVL",
          desc: '''
                Trigger level for RX break detection. Sets the number of character
                times the line must be low to detect a break.
                ''',
          enum: [
            { value: "0",
              name: "break2",
              desc: "2 characters"
            },
            { value: "1",
              name: "break4",
              desc: "4 characters"
            },
            { value: "2",
              name: "break8",
              desc: "8 characters"
            },
            { value: "3",
              name: "break16",
              desc: "16 characters"
            }
          ]
        }
        { bits: "31:16",
          name: "NCO",
          desc: "BAUD clock rate control."
        }
      ]
    },
    { name:     "STATUS"
      desc:     "UART live status register"
      swaccess: "ro"
      hwaccess: "hrw"
      hwext:    "true"
      hwre:     "true"
      fields: [
        { bits: "0"
          name: "TXFULL"
          desc: "TX buffer is full"
        }
        { bits: "1"
          name: "RXFULL"
          desc: "RX buffer is full"
        }
        { bits: "2"
          name: "TXEMPTY"
          desc: "TX FIFO is empty"
          resval: "1"
        }
        { bits: "3"
          name: "TXIDLE"
          desc: "TX is idle"
          resval: "1"
        }
        { bits: "4"
          name: "RXIDLE"
          desc: "RX is idle"
          resval: "1"
        }
        { bits: "5"
          name: "RXEMPTY"
          desc: "RX FIFO is empty"
          resval: "1"
        }
      ]
    }
    { name: "RDATA",
      desc: "UART read data",
      swaccess: "ro",
      hwaccess: "hrw",
      hwext: "true",
      hwre: "true",
      fields: [
        { bits: "7:0" }
      ]
    }
    { name: "WDATA",
      desc: "UART write data",
      swaccess: "wo",
      hwaccess: "hro",
      hwqe: "true",
      fields: [
        { bits: "7:0" }
      ]
    }
    { name: "FIFO_CTRL",
      desc: "UART FIFO control register",
      swaccess: "rw",
      hwaccess: "hrw",
      hwqe:     "true",
      fields: [
        { bits: "0",
          swaccess: "wo",
          hwaccess: "hro",
          name: "RXRST",
          desc: "RX fifo reset. Write 1 to the register resets RX_FIFO. Read returns 0"
        }
        { bits: "1",
          swaccess: "wo",
          hwaccess: "hro",
          name: "TXRST",
          desc: "TX fifo reset. Write 1 to the register resets TX_FIFO. Read returns 0"
        }
        { bits: "4:2",
          name: "RXILVL",
          desc: '''Trigger level for RX interrupts. If the FIFO depth is greater than or equal to
                the setting, it raises rx_watermark interrupt.
                ''',
          enum: [
            { value: "0",
              name: "rxlvl1",
              desc: "1 character"
            },
            { value: "1",
              name: "rxlvl4",
              desc: "4 characters"
            },
            { value: "2",
              name: "rxlvl8",
              desc: "8 characters"
            },
            { value: "3",
              name: "rxlvl16",
              desc: "16 characters"
            },
            { value: "4",
              name: "rxlvl30",
              desc: "30 characters"
            },
          ]
        }
        { bits: "6:5",
          name: "TXILVL",
          desc: '''Trigger level for TX interrupts. If the FIFO depth is greater than or equal to
                the setting, it raises tx_watermark interrupt.
                ''',
          enum: [
            { value: "0",
              name: "txlvl1",
              desc: "1 character"
            },
            { value: "1",
              name: "txlvl4",
              desc: "4 characters"
            },
            { value: "2",
              name: "txlvl8",
              desc: "8 characters"
            },
            { value: "3",
              name: "txlvl16",
              desc: "16 characters"
            }
          ]
        }
      ]
    }
    { name: "FIFO_STATUS",
      desc: "UART FIFO status register",
      swaccess: "ro",
      hwaccess: "hwo",
      hwext: "true",
      fields: [
        { bits: "5:0",
          name: "TXLVL",
          desc: "Current fill level of TX fifo"
        }
        { bits: "21:16",
          name: "RXLVL",
          desc: "Current fill level of RX fifo"
        }
      ]
    }
    { name: "OVRD",
      desc: "TX pin override control. Gives direct SW control over TX pin state",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "0",
          name: "TXEN",
          desc: "Enable TX pin override control"
        }
        { bits: "1",
          name: "TXVAL",
          desc: "Write to set the value of the TX pin"
        }
      ]
    }
    { name: "VAL",
      desc: "UART oversampled values",
      swaccess: "ro",
      hwaccess: "hwo",
      hwext:    "true",
      fields: [
        { bits: "15:0",
          name: "RX",
          desc: '''
                Last 16 oversampled values of RX. Most recent bit is bit 0, oldest 15.
                '''
        }
      ]
    }
    { name: "TIMEOUT_CTRL",
      desc: "UART RX timeout control",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "23:0",
          name: "VAL",
          desc: "RX timeout value in UART bit times"
        }
        { bits: "31",
          name: "EN",
          desc: "Enable RX timeout feature"
        }
      ]
    }
  ]
}
