Add design notes - UART abstraction

This adds notes from an email that explains how to serve more than one
console:
https://lists.ozlabs.org/pipermail/openbmc/2020-March/020819.html

Signed-off-by: Joseph Reynolds <joseph-reynolds@charter.net>
Change-Id: Id6e87c7b0dc421e4e7aa62f74e797ee38f9d3fb3
diff --git a/README.md b/README.md
index 24f3786..3abb9b6 100644
--- a/README.md
+++ b/README.md
@@ -30,3 +30,33 @@
 ```
 
 To disconnect the client, use the standard `~.` combination.
+
+
+## Underlying design
+
+This shows how the host UART connection is abstracted within the BMC as a Unix
+domain socket.
+
+```
+               +--------------------------------------------------------------------------------------------+
+               |                                                                                            |
+               |       obmc-console-client      unix domain socket         obmc-console-server              |
+               |                                                                                            |
+               |     +---------------------+                           +------------------------+           |
+               |     | client.2200.conf    |  +---------------------+  | server.ttyVUART0.conf  |           |
+           +---+--+  +---------------------+  |                     |  +------------------------+  +--------+-------+
+Network    | 2200 +-->                     +->+ @obmc-console.host0 +<-+                        <--+ /dev/ttyVUART0 |   UARTs
+           +---+--+  | socket-id = "host0" |  |                     |  | socket-id = "host0"    |  +--------+-------+
+               |     |                     |  +---------------------+  |                        |           |
+               |     +---------------------+                           +------------------------+           |
+               |                                                                                            |
+               |                                                                                            |
+               |                                                                                            |
+               +--------------------------------------------------------------------------------------------+
+```
+
+This supports multiple independent consoles.  The socket-id is a unique
+portion for the unix domain socket created by the obmc-console-server
+instance. The server needs to know this because it needs to know what to name
+the pipe; the client needs to know it as it needs to form the abstract socket
+name to which to connect.