periph.serial: update default rx_depth value to 256.
authorJean-François Nguyen <jf@lambdaconcept.com>
Mon, 28 Jun 2021 14:19:13 +0000 (16:19 +0200)
committerJean-François Nguyen <jf@lambdaconcept.com>
Mon, 28 Jun 2021 15:52:46 +0000 (17:52 +0200)
This is allows the RX FIFO to buffer a complete SFL frame, to avoid a
race condition during a serialboot at a high baudrate.

lambdasoc/periph/serial.py

index a25c78d8f317606f2e20c8ff807a7b906ee8100e..cd7974b349b1a7766d44cf3e9cbed8e9e87a6002 100644 (file)
@@ -14,6 +14,13 @@ class AsyncSerialPeripheral(Peripheral, Elaboratable):
 
     See :class:`nmigen_stdio.serial.AsyncSerial` for details.
 
+    Notes
+    -----
+
+    * If this peripheral is used with the LambdaSoC BIOS, `rx_depth * data_bits` should be at least
+    256 bytes in order to buffer a complete SFL frame. Otherwise, a race condition may occur during
+    a serialboot at high baudrates.
+
     CSR registers
     -------------
     divisor : read/write
@@ -62,7 +69,7 @@ class AsyncSerialPeripheral(Peripheral, Elaboratable):
     irq : :class:`IRQLine`
         Interrupt request line.
     """
-    def __init__(self, *, rx_depth=16, tx_depth=16, **kwargs):
+    def __init__(self, *, rx_depth=256, tx_depth=16, data_bits=8, **kwargs):
         super().__init__()
 
         self._phy       = AsyncSerial(data_bits=data_bits, **kwargs)